summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-08-30 14:59:50 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-08-30 14:59:50 +0700
commitedafc890045d833289ad3b53ce3375625f18e54c (patch)
treea0b8ff9d4029517bead2d7cfd060463ffc8ae3ea
parent6d90f84246b1c6ef01b3ba3f1231450b11862719 (diff)
<iman> update jika sppkp diganti di order, parent sppkp juga terganti
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py11
-rwxr-xr-xindoteknik_custom/models/sale_order.py35
2 files changed, 43 insertions, 3 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index a50cb264..7edd71f6 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -378,6 +378,9 @@ class SaleOrder(controller.Controller):
if not params['valid']:
return self.response(code=400, description=params)
+ # Fetch partner details
+ sales_partner = request.env['res.partner'].browse(params['value']['partner_id'])
+
parameters = {
'warehouse_id': 8,
'carrier_id': 1,
@@ -405,9 +408,11 @@ class SaleOrder(controller.Controller):
'delivery_service_type': params['value']['delivery_service_type'],
'flash_sale': params['value']['flash_sale'],
'note_website': params['value']['note_website'],
- 'customer_type': 'nonpkp',
- 'npwp': '0',
- 'user_id': 3222 # User ID: Nadia Rauhadatul Firdaus
+ 'customer_type': sales_partner.customer_type if sales_partner else 'nonpkp', # Get Customer Type from partner
+ 'npwp': sales_partner.npwp or '0', # Get NPWP from partner
+ 'sppkp': sales_partner.sppkp, # Get SPPKP from partner
+ 'email': sales_partner.email, # Get Email from partner
+ 'user_id': 3222 # User ID: Nadia Rauhadatul Firdaus
}
sales_partner = request.env['res.partner'].browse(parameters['partner_id'])
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 710e99de..16a1f415 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -942,3 +942,38 @@ class SaleOrder(models.Model):
order_line.tax_id = tax_id
order_line.discount = discount
order_line.order_id.use_button = True
+
+ @api.model
+ def create(self, vals):
+ # Ensure partner details are updated when a sale order is created
+ order = super(SaleOrder, self).create(vals)
+ order._update_partner_details()
+ return order
+
+ def write(self, vals):
+ # Call the super method to handle the write operation
+ res = super(SaleOrder, self).write(vals)
+
+ # Check if the update is coming from a save operation
+ if any(field in vals for field in ['sppkp', 'npwp', 'email', 'customer_type']):
+ self._update_partner_details()
+
+ return res
+
+ def _update_partner_details(self):
+ for order in self:
+ partner = order.partner_id.parent_id or order.partner_id
+ if partner:
+ # Update partner details
+ partner.sppkp = order.sppkp
+ partner.npwp = order.npwp
+ partner.email = order.email
+ partner.customer_type = order.customer_type
+
+ # Save changes to the partner record
+ partner.write({
+ 'sppkp': partner.sppkp,
+ 'npwp': partner.npwp,
+ 'email': partner.email,
+ 'customer_type': partner.customer_type,
+ }) \ No newline at end of file