diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-01-15 13:15:17 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-01-15 13:15:17 +0700 |
| commit | 6da1814f7baaa1973bdde9932d629d33ed436e93 (patch) | |
| tree | ec661abcd3eebed60834c7cad7836208d59cb7e8 | |
| parent | a5522dfd19488f2b76ad40d3ba9750852f92da73 (diff) | |
delivery amt po
| -rwxr-xr-x | indoteknik_custom/models/purchase_order.py | 65 | ||||
| -rwxr-xr-x | indoteknik_custom/views/purchase_order.xml | 9 |
2 files changed, 53 insertions, 21 deletions
diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index f497dc9b..57e848bc 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -81,29 +81,38 @@ class PurchaseOrder(models.Model): help='Centang jika tidak mau masuk perhitungan Incoming Qty') not_update_purchasepricelist = fields.Boolean(string='Not Update Purchase Pricelist?') reason_unlock = fields.Char(string='Alasan unlock', tracking=3) - # total_cost_service = fields.Float(string='Total Cost Service') + # total_cost_service = fields.Float(string='Total Cost Service' ) # total_delivery_amt = fields.Float(string='Total Delivery Amt') + total_cost_service = fields.Float(string='Total Cost Service') + total_delivery_amt = fields.Float(string='Total Delivery Amt') - # @api.onchange('total_cost_service') - # def _onchange_total_cost_service(self): - # for order in self: - # lines = order.order_line - # if lines: - # # Hitung nilai rata-rata cost_service - # per_line_cost_service = order.total_cost_service / len(lines) - # for line in lines: - # line.cost_service = per_line_cost_service - - # @api.onchange('total_delivery_amt') - # def _onchange_total_delivery_amt(self): - # for order in self: - # lines = order.order_line - # if lines: - # # Hitung nilai rata-rata delivery_amt - # per_line_delivery_amt = order.total_delivery_amt / len(lines) - # for line in lines: - # line.delivery_amt = per_line_delivery_amt + @api.onchange('total_cost_service') + def _onchange_total_cost_service(self): + for order in self: + lines = order.order_line + if order.total_cost_service > 0: + if lines: + # Hitung nilai rata-rata cost_service + per_line_cost_service = order.total_cost_service / len(lines) + for line in lines: + line.cost_service = per_line_cost_service + else: + for line in lines: + line.cost_service = 0 + @api.onchange('total_delivery_amt') + def _onchange_total_delivery_amt(self): + for order in self: + lines = order.order_line + if order.total_delivery_amt > 0: + if lines: + # Hitung nilai rata-rata delivery_amt + per_line_delivery_amt = order.total_delivery_amt / len(lines) + for line in lines: + line.delivery_amt = per_line_delivery_amt + else: + for line in lines: + line.delivery_amt = 0 def _compute_total_margin_match(self): for purchase in self: match = self.env['purchase.order.sales.match'] @@ -244,6 +253,7 @@ class PurchaseOrder(models.Model): move_line.name = '[IT.121456] Down Payment' move_line.partner_id = self.partner_id.id + # Tambahkan lognote lognote_message = ( f"Vendor bill created from: {self.name} ({self.partner_ref})" ) @@ -258,6 +268,7 @@ class PurchaseOrder(models.Model): 'domain': [('id', '=', bills.id)] } + def get_date_done(self): picking = self.env['stock.picking'].search([ ('purchase_id', '=', self.id), @@ -903,6 +914,13 @@ class PurchaseOrder(models.Model): sales_price -= sale_order_line.fee_third_party_line sum_sales_price += sales_price purchase_price = line.price_subtotal + if line.ending_price > 0: + if line.taxes_id.id == 22: + ending_price = line.ending_price / 1.11 + purchase_price = ending_price + else: + purchase_price = line.ending_price + # purchase_price = line.price_subtotal if line.order_id.delivery_amount > 0: purchase_price += line.delivery_amt_line if line.order_id.delivery_amt > 0: @@ -946,13 +964,18 @@ class PurchaseOrder(models.Model): sales_price -= (sale_order_line.fee_third_party_line / sale_order_line.product_uom_qty) * line.qty_po sum_sales_price += sales_price - purchase_price = po_line.price_subtotal / po_line.product_qty * line.qty_po + if po_line.ending_price > 0: + price = po_line.ending_price + else: + price = po_line.price_subtotal + purchase_price = price / po_line.product_qty * line.qty_po if line.purchase_order_id.delivery_amount > 0: purchase_price += (po_line.delivery_amt_line / po_line.product_qty) * line.qty_po if line.purchase_order_id.delivery_amt > 0: purchase_price += line.purchase_order_id.delivery_amt real_item_margin = sales_price - purchase_price sum_margin += real_item_margin + if sum_so_margin != 0 and sum_sales_price != 0 and sum_margin != 0: self.total_so_margin = sum_so_margin diff --git a/indoteknik_custom/views/purchase_order.xml b/indoteknik_custom/views/purchase_order.xml index fa11c373..46efd1f1 100755 --- a/indoteknik_custom/views/purchase_order.xml +++ b/indoteknik_custom/views/purchase_order.xml @@ -60,6 +60,8 @@ <field name="summary_qty_po"/> <field name="count_line_product"/> <field name="payment_term_id"/> + <field name="total_cost_service"/> + <field name="total_delivery_amt"/> </field> <field name="amount_total" position="after"> <field name="total_margin"/> @@ -82,6 +84,13 @@ <field name="qty_available" readonly="1" optional="hide"/> <field name="qty_reserved" readonly="1" optional="hide"/> <field name="suggest" readonly="1" widget="badge" decoration-danger="suggest == 'harus beli'" decoration-success="suggest == 'masih cukup'"/> + <field name="delivery_amt" optional="hide"/> + <field name="delivery_amt_per_item" optional="hide"/> + <field name="contribution_delivery_amt" optional="hide"/> + <field name="cost_service" optional="hide"/> + <field name="cost_service_per_item" optional="hide"/> + <field name="contribution_cost_service" optional="hide"/> + <field name="ending_price" optional="hide"/> <!-- <field name="suggest" readonly="1"/> --> </field> <field name="product_id" position="before"> |
