diff --git a/addons/delivery/__openerp__.py b/addons/delivery/__openerp__.py index 40dab751f79..87f3b5aa89e 100644 --- a/addons/delivery/__openerp__.py +++ b/addons/delivery/__openerp__.py @@ -44,7 +44,9 @@ When creating invoices from picking, OpenERP is able to add and compute the ship 'partner_view.xml' ], 'demo_xml': ['delivery_demo.xml'], - 'test':['test/delivery_report.yml'], + 'test': [ + 'test/delivery_cost.yml', + ], 'installable': True, 'active': False, 'certificate': '0033981912253', diff --git a/addons/delivery/delivery.py b/addons/delivery/delivery.py index a149f99777c..214d2a60b52 100644 --- a/addons/delivery/delivery.py +++ b/addons/delivery/delivery.py @@ -125,8 +125,9 @@ class delivery_carrier(osv.osv): grid_line_pool.unlink(cr, uid, lines, context=context) #create the grid lines + default_data = None if record.free_if_more_than: - data = { + default_data = { 'grid_id': grid_id and grid_id[0], 'name': _('Free if more than %.2f') % record.amount, 'type': 'price', @@ -135,8 +136,6 @@ class delivery_carrier(osv.osv): 'standard_price': 0.0, 'list_price': 0.0, } - grid_line_pool.create(cr, uid, data, context=context) - if record.normal_price: default_data = { 'grid_id': grid_id and grid_id[0], @@ -147,6 +146,7 @@ class delivery_carrier(osv.osv): 'standard_price': record.normal_price, 'list_price': record.normal_price, } + if default_data: grid_line_pool.create(cr, uid, default_data, context=context) return True diff --git a/addons/delivery/delivery_demo.xml b/addons/delivery/delivery_demo.xml index 94666efb26c..acc17e20eae 100644 --- a/addons/delivery/delivery_demo.xml +++ b/addons/delivery/delivery_demo.xml @@ -6,20 +6,19 @@ The Poste - default - + Delivery by Poste Delivery service - + @@ -30,12 +29,34 @@ + + Free delivery charges + True + 1000 + + + + + + normal delivery charges + 10 + + + + + + + + + + The Poste - Pricelist + Weight <= 5kg @@ -43,6 +64,7 @@ + Weight > 5kg @@ -52,6 +74,7 @@ + Free if price >= 300 @@ -59,7 +82,7 @@ >= price - + diff --git a/addons/delivery/test/delivery_cost.yml b/addons/delivery/test/delivery_cost.yml new file mode 100644 index 00000000000..f8d6787a0c5 --- /dev/null +++ b/addons/delivery/test/delivery_cost.yml @@ -0,0 +1,75 @@ +- + In order to test Carrier Cost, +- + I add delivery cost in Sale order. +- + !python {model: delivery.sale.order}: | + context.update({'active_ids': [ref("sale.order")]}) +- + !record {model: delivery.sale.order, id: sale_delivery_carrier}: + {} +- + !python {model: delivery.sale.order}: | + self.delivery_set(cr, uid, [ref('sale_delivery_carrier')], context=context) +- + I check sale order after added delivery cost. +- + !python {model: sale.order.line}: | + line_ids = self.search(cr, uid, [('order_id','=', ref('sale.order')), ('product_id','=', ref('delivery_product'))]) + assert len(line_ids), "Delivery cost is not Added" + line_data = self.browse(cr ,uid ,line_ids[0] ,context) + assert line_data.price_subtotal == 10, "Delivey cost is not correspond." +- + I confirm the sale order. +- + !workflow {model: sale.order, action: order_confirm, ref: sale.order} +- + I create Invoice from shipment. +- + !python {model: stock.invoice.onshipping}: | + sale = self.pool.get('sale.order') + sale_order = sale.browse(cr, uid, ref("sale.order")) + ship_ids = [x.id for x in sale_order.picking_ids] + wiz_id = self.create(cr, uid, {'journal_id': ref('account.sales_journal')}, + {'active_ids': ship_ids, 'active_model': 'stock.picking'}) + self.create_invoice(cr, uid, [wiz_id], {"active_ids": ship_ids, "active_id": ship_ids[0]}) +- + I print a Delivery Order report. +- + !python {model: stock.picking}: | + import netsvc, tools, os + sale = self.pool.get('sale.order') + sale_order = sale.browse(cr, uid, ref("sale.order")) + ship_ids = [x.id for x in sale_order.picking_ids] + (data, format) = netsvc.LocalService('report.sale.shipping').create(cr, uid, ship_ids, {}, {}) + if tools.config['test_report_directory']: + file(os.path.join(tools.config['test_report_directory'], 'delivery-shipping'+format), 'wb+').write(data) +- + I add free delivery cost in Sale order. +- + !python {model: delivery.sale.order}: | + context.update({'active_ids': [ref("sale.order2")]}) +- + !record {model: delivery.sale.order, id: sale_delivery_carrier}: + {} +- + !python {model: delivery.sale.order}: | + self.delivery_set(cr, uid, [ref('sale_delivery_carrier')], context=context) +- + I check sale order after added delivery cost. +- + !python {model: sale.order.line}: | + line_ids = self.search(cr, uid, [('order_id','=', ref('sale.order2')), ('product_id','=', ref('delivery_product'))]) + assert len(line_ids), "Delivery cost is not Added" + line_data = self.browse(cr ,uid ,line_ids[0] ,context) + assert line_data.price_subtotal == 0, "Delivey cost is not correspond." + +- + I set default delivery policy. +- + !record {model: delivery.define.delivery.steps.wizard, id: default_delivery_policy}: + {} +- + !python {model: delivery.define.delivery.steps.wizard}: | + self.apply_cb(cr, uid, [ref('default_delivery_policy')], context=context) + diff --git a/addons/delivery/test/delivery_report.yml b/addons/delivery/test/delivery_report.yml deleted file mode 100644 index 4205a374910..00000000000 --- a/addons/delivery/test/delivery_report.yml +++ /dev/null @@ -1,36 +0,0 @@ - -- - - In Order to test the delivery report I create picking with move lines. -- - !record {model: stock.picking, id: stock_picking_delivery}: - name: test_picking - origin: SO001 - address_id: base.res_partner_address_4 - company_id: base.main_company - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - invoice_state: none - move_lines: - - company_id: base.main_company - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - location_dest_id: stock.stock_location_customers - location_id: stock.stock_location_stock - name: HP CD writers - product_id: product.product_product_pc1 - product_qty: 3.0 - product_uom: product.product_uom_unit - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - product_uos_qty: 3.0 - move_type: direct - type: out - - - -- - In order to test the PDF reports defined on a Delievry, we will print a Delivery Order report -- - !python {model: stock.picking}: | - import netsvc, tools, os - (data, format) = netsvc.LocalService('report.sale.shipping').create(cr, uid, [ref('stock_picking_delivery')], {}, {}) - if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'delievry-shipping'+format), 'wb+').write(data) diff --git a/addons/delivery/wizard/delivery_sale_order.py b/addons/delivery/wizard/delivery_sale_order.py index 685917e8bd9..80b3431f2a7 100644 --- a/addons/delivery/wizard/delivery_sale_order.py +++ b/addons/delivery/wizard/delivery_sale_order.py @@ -34,18 +34,6 @@ class make_delivery(osv.osv_memory): def default_get(self, cr, uid, fields, context=None): - """ - To get default values for the object. - - @param self: The object pointer. - @param cr: A database cursor - @param uid: ID of the user currently logged in - @param fields: List of fields for which we want default values - @param context: A standard dictionary - - @return: A dictionary which of fields with values. - - """ res = super(make_delivery, self).default_get(cr, uid, fields, context=context) order_obj = self.pool.get('sale.order') for order in order_obj.browse(cr, uid, context.get('active_ids', []), context=context): @@ -66,18 +54,6 @@ class make_delivery(osv.osv_memory): pass def delivery_set(self, cr, uid, ids, context=None): - """ - Adds delivery costs to Sale Order Line. - - @param self: The object pointer. - @param cr: A database cursor - @param uid: ID of the user currently logged in - @param ids: List of IDs selected - @param context: A standard dictionary - - @return: - - """ if context is None: context = {} rec_ids = context and context.get('active_ids',[])