diff options
| author | Stephan Christianus <stephanchrst@gmail.com> | 2022-10-24 10:08:41 +0000 |
|---|---|---|
| committer | Stephan Christianus <stephanchrst@gmail.com> | 2022-10-24 10:08:41 +0000 |
| commit | e80ad39476fcd60583e166032fe526b77a73323a (patch) | |
| tree | 310eaa29f5982767e6685c2ca263f24fba72645e | |
| parent | 1934b5ca55840deb2a4369ef6ab0affd86e2ba8f (diff) | |
| parent | da1ba5223456e4c39d11a5af67968dda6d569c6b (diff) | |
Merged in development (pull request #10)
Development
| -rwxr-xr-x | indoteknik_custom/models/purchase_order.py | 2 | ||||
| -rwxr-xr-x | indoteknik_custom/models/purchase_order_line.py | 2 | ||||
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 22 | ||||
| -rw-r--r-- | indoteknik_custom/models/stock_picking.py | 9 | ||||
| -rwxr-xr-x | indoteknik_custom/views/sale_order.xml | 2 | ||||
| -rw-r--r-- | indoteknik_custom/views/stock_picking.xml | 3 |
6 files changed, 39 insertions, 1 deletions
diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 6023afdd..a816038e 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -184,6 +184,8 @@ class PurchaseOrder(models.Model): sales_price = sale_order_line.price_reduce_taxexcl * sale_order_line.product_uom_qty if sale_order_line.order_id.shipping_cost_covered == 'indoteknik': sales_price -= sale_order_line.delivery_amt_line + if sale_order_line.order_id.fee_third_party > 0: + sales_price -= sale_order_line.fee_third_party_line sum_sales_price += sales_price purchase_price = line.price_subtotal if line.order_id.delivery_amount > 0: diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py index 85818394..60e4c8b0 100755 --- a/indoteknik_custom/models/purchase_order_line.py +++ b/indoteknik_custom/models/purchase_order_line.py @@ -62,6 +62,8 @@ class PurchaseOrderLine(models.Model): sales_price = sale_order_line.price_reduce_taxexcl * sale_order_line.product_uom_qty if sale_order_line.order_id.shipping_cost_covered == 'indoteknik': sales_price -= sale_order_line.delivery_amt_line + if sale_order_line.order_id.fee_third_party > 0: + sales_price -= sale_order_line.fee_third_party_line sum_sales_price += sales_price purchase_price = line.price_subtotal if line.order_id.delivery_amount > 0: diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 48794f92..f21a80fe 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -36,6 +36,16 @@ class SaleOrder(models.Model): have_outstanding_picking = fields.Boolean('Have Outstanding Picking', compute='_have_outstanding_picking') have_outstanding_po = fields.Boolean('Have Outstanding PO', compute='_have_outstanding_po') purchase_ids = fields.Many2many('purchase.order', string='Purchases', compute='_get_purchases') + real_shipping_id = fields.Many2one( + 'res.partner', string='Real Delivery Address', readonly=True, required=True, + states={'draft': [('readonly', False)], 'sent': [('readonly', False)], 'sale': [('readonly', False)]}, + domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]", + help="Dipakai untuk alamat tempel") + fee_third_party = fields.Float('Fee Pihak Ketiga') + + @api.onchange('partner_shipping_id') + def onchange_partner_shipping(self): + self.real_shipping_id = self.partner_shipping_id def _get_purchases(self): po_state = ['done', 'draft', 'purchase'] @@ -192,6 +202,8 @@ class SaleOrder(models.Model): sales_price = line.price_reduce_taxexcl * line.product_uom_qty if line.order_id.shipping_cost_covered == 'indoteknik': sales_price -= line.delivery_amt_line + if line.order_id.fee_third_party > 0: + sales_price -= line.fee_third_party_line sum_sales_price += sales_price order.total_margin = total_margin if order.amount_untaxed > 0: @@ -232,6 +244,7 @@ class SaleOrderLine(models.Model): purchase_tax_id = fields.Many2one('account.tax', string='Tax', domain=['|', ('active', '=', False), ('active', '=', True)]) delivery_amt_line = fields.Float('DeliveryAmtLine', compute='compute_delivery_amt_line') + fee_third_party_line = fields.Float('FeeThirdPartyLine', compute='compute_fee_third_party_line', default=0) def compute_item_margin(self): for line in self: @@ -246,7 +259,8 @@ class SaleOrderLine(models.Model): # minus with delivery if covered by indoteknik if line.order_id.shipping_cost_covered == 'indoteknik': sales_price -= line.delivery_amt_line - # sales_price -= round((line.order_id.delivery_amt / line.order_id.count_line_product), 2) + if line.order_id.fee_third_party > 0: + sales_price -= line.fee_third_party_line purchase_price = line.purchase_price if line.purchase_tax_id.price_include: @@ -283,6 +297,12 @@ class SaleOrderLine(models.Model): delivery_amt = line.order_id.delivery_amt line.delivery_amt_line = delivery_amt * contribution + def compute_fee_third_party_line(self): + for line in self: + contribution = round((line.price_total / line.order_id.amount_total), 2) + fee = line.order_id.fee_third_party + line.fee_third_party_line = fee * contribution + @api.onchange('product_id', 'price_unit', 'product_uom', 'product_uom_qty', 'tax_id') def _onchange_discount(self): if not (self.product_id and self.product_uom and diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py index 70e9b68a..c1a3f12d 100644 --- a/indoteknik_custom/models/stock_picking.py +++ b/indoteknik_custom/models/stock_picking.py @@ -14,6 +14,10 @@ class StockPicking(models.Model): summary_qty_operation = fields.Float('Total Qty Operation', compute='_compute_summary_qty') count_line_detail = fields.Float('Total Item Detail', compute='_compute_summary_qty') count_line_operation = fields.Float('Total Item Operation', compute='_compute_summary_qty') + real_shipping_id = fields.Many2one( + 'res.partner', string='Real Delivery Address', required=True, + domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]", + help="Dipakai untuk alamat tempel") # Delivery Order driver_departure_date = fields.Datetime( @@ -48,6 +52,11 @@ class StockPicking(models.Model): ('approved', 'Approved'), ], string='Approval Status', readonly=True, copy=False, index=True, tracking=3) + def action_assign(self): + res = super(StockPicking, self).action_assign() + self.real_shipping_id = self.sale_id.real_shipping_id + return res + def ask_approval(self): if self.env.user.is_accounting: raise UserError("Bisa langsung Validate") diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml index e5280ec6..d7c811f7 100755 --- a/indoteknik_custom/views/sale_order.xml +++ b/indoteknik_custom/views/sale_order.xml @@ -16,8 +16,10 @@ <field name="shipping_cost_covered"/> <field name="shipping_paid_by"/> <field name="delivery_amt"/> + <field name="fee_third_party"/> </field> <field name="partner_shipping_id" position="after"> + <field name="real_shipping_id"/> <field name="approval_status" /> <field name="sales_tax_id" domain="[('type_tax_use','=','sale')]" required="1"/> <field name="carrier_id"/> diff --git a/indoteknik_custom/views/stock_picking.xml b/indoteknik_custom/views/stock_picking.xml index 1b648d58..3b150f34 100644 --- a/indoteknik_custom/views/stock_picking.xml +++ b/indoteknik_custom/views/stock_picking.xml @@ -30,6 +30,9 @@ <field name="summary_qty_detail"/> <field name="count_line_detail"/> </field> + <field name="partner_id" position="after"> + <field name="real_shipping_id"/> + </field> <field name="origin" position="after"> <field name="approval_status"/> <field name="summary_qty_operation"/> |
