← Back to team overview

openerp-india team mailing list archive

[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