openerp-india team mailing list archive
-
openerp-india team
-
Mailing list archive
-
Message #19782
[Bug 1080617] Re: [6.0 / 6.1 / trunk] Sale Order marked as delivered when the OUT move has not yet been processed
Hello Olivier,
thanks for looking into this.
Your analysis matches ours, regarding the procurement logic.
Regarding the resolution, this is really an important topic for my
current customer running 6.1 (hence the OPW I opened). The current
situation for the sales team is a total mess of sales marked shipped,
some of which are indeed shipped and others which are not, which makes
giving information on the phone to the customers inquiring about the
status of their orders quite painful (and with Christmas approaching
people are indeed getting touchy on that topic, and the Sales period
will start shortly after that in January). The invoicing situation is
also awkward, as the invoicing policy is to send the invoice when the
order is shipped, which results in invoices being sent before the goods
are really shipped...
For the record, the Magento connector uses the following SQL query to
find out which sale orders have been completely shipped (crossing
fingers in hope the formatting will be preserved)
class sale_shop(osv.osv):
_inherit = 'sale.shop'
def _export_shipping_query(self, cr, uid, shop, context=None):
query = """
SELECT stock_picking.id AS picking_id,
sale_order.id AS order_id,
count(pickings.id) AS picking_number
FROM stock_picking
LEFT JOIN sale_order
ON sale_order.id = stock_picking.sale_id
LEFT JOIN stock_picking as pickings
ON (sale_order.id = pickings.sale_id
AND pickings.type='out'
AND pickings.state != 'cancel')
LEFT JOIN ir_model_data
ON stock_picking.id = ir_model_data.res_id
AND ir_model_data.model = 'stock.picking'
LEFT JOIN delivery_carrier
ON delivery_carrier.id = stock_picking.carrier_id
WHERE shop_id = %(shop_id)s
AND ir_model_data.res_id ISNULL
AND stock_picking.state = 'done'
AND stock_picking.type = 'out'
AND NOT stock_picking.do_not_export
AND (NOT delivery_carrier.export_needs_tracking
OR stock_picking.carrier_tracking_ref IS NOT NULL)
GROUP BY stock_picking.id,
sale_order.id,
delivery_carrier.export_needs_tracking,
stock_picking.carrier_tracking_ref,
stock_picking.backorder_id
ORDER BY sale_order.id ASC,
COALESCE(stock_picking.backorder_id, NULL, 0) ASC"""
params = {'shop_id': shop.id}
return query, params
def export_shipping(self, cr, uid, ids, context):
picking_obj = self.pool.get('stock.picking')
for shop in self.browse(cr, uid, ids):
cr.execute(*self._export_shipping_query(
cr, uid, shop, context=context))
results = cr.dictfetchall()
if not results:
_logger.info("There is no shipping to export for the shop '%s' to the external referential", shop.name)
continue
context['conn_obj'] = shop.referential_id.external_connection()
picking_cr = pooler.get_db(cr.dbname).cursor()
try:
for result in results:
picking_id = result['picking_id']
if result["picking_number"] == 1:
picking_type = 'complete'
else:
picking_type = 'partial'
[...]
http://bazaar.launchpad.net/~extra-addons-commiter/e-commerce-
addons/oerp6.1-stable/view/head:/base_sale_multichannels/sale.py#L387
Maybe a similar approach could be used in sales?
--
You received this bug notification because you are a member of OpenERP
Indian Team, which is subscribed to OpenERP Addons.
https://bugs.launchpad.net/bugs/1080617
Title:
[6.0 / 6.1 / trunk] Sale Order marked as delivered when the OUT move
has not yet been processed
Status in OpenERP Addons (modules):
New
Bug description:
Hello,
My customer is facing a critical bug, which results in a wrong state
for the sale orders, and notifications of shipments sent to the
customers before the orders have been shipped. I'll be submitting an
OPW shortly.
Steps to reproduce:
---------------------------
* install a database with the demo data, and the modules sales and warehouse
* configure the Ouput stock.location of the warehouse with a manually chained move to the customer location (instead of an automatic move). This is required because my customer has a 2 step procedure where picking and shipping are two very differents steps. Moreover, sometimes the carrier cannot take all the goods and has to come back later, but the orders are still prepared and waiting in a specific place in the real world warehouse
* create a Sale Order for 1 CPU1 sold to Camptocamp
* Confirm the sale order, run the scheduler. In the History tab of the sale order, you should have 2 pickings : one INT picking containing one move from Stock to Output, and one OUT picking with one move from Output to Customer.
* Process the INT picking
Refresh the view of the Sale Order. The shipped field of the Sale
Order is True, when it should still be False, as the OUT move has not
been processed.
Cause of the bug
------------------------
This bug is caused by the workflow of sale.order which checks for the
single procurement.order linked to each sale.order.line of the
sale.order. When the sale.order.line for the product is created, the
procurement is linked to the Stock -> Output picking.
When the Output -> Customer move is created by the chaining code, it
should either grab the procurement order of the Stock -> Output
picking or create a new procurement.order and link it to the
sale.order.line.
Being able to link several procurement.orders to a single
sale.order.line would be nice. Probably not possible in 6.1, but maybe
in 7.0 ?
To manage notifications about this bug go to:
https://bugs.launchpad.net/openobject-addons/+bug/1080617/+subscriptions
References