diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-07-02 09:25:31 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-07-02 09:25:31 +0700 |
| commit | f9c5b3dffcd71bfa9dea74c946d7b4277db66bd6 (patch) | |
| tree | 8f4e6bfaf75c3e928dbd70bf6824369406a8dafb | |
| parent | a8f3194552f980ba6201ee834a0d5582cb584262 (diff) | |
fix bug on multi create uang muka penjualan and fix bug duplikat data purchasing job
| -rw-r--r-- | indoteknik_custom/models/purchasing_job.py | 45 | ||||
| -rw-r--r-- | indoteknik_custom/models/sale_order_multi_uangmuka_penjualan.py | 10 |
2 files changed, 31 insertions, 24 deletions
diff --git a/indoteknik_custom/models/purchasing_job.py b/indoteknik_custom/models/purchasing_job.py index 373e469a..40061d22 100644 --- a/indoteknik_custom/models/purchasing_job.py +++ b/indoteknik_custom/models/purchasing_job.py @@ -41,14 +41,13 @@ class PurchasingJob(models.Model): } def init(self): - tools.drop_view_if_exists(self.env.cr, self._table) - self.env.cr.execute(""" + query = """ CREATE OR REPLACE VIEW %s AS ( WITH latest_purchase_orders AS ( SELECT pol.product_id, po.user_id, - ROW_NUMBER() OVER (PARTITION BY po.partner_id ORDER BY po.create_date DESC) AS order_rank + ROW_NUMBER() OVER (PARTITION BY pol.product_id ORDER BY po.create_date DESC) AS order_rank FROM purchase_order po RIGHT JOIN purchase_order_line pol ON pol.order_id = po.id LEFT JOIN res_partner rp ON rp.id = po.partner_id @@ -70,11 +69,26 @@ class PurchasingJob(models.Model): LEFT JOIN sale_order_line sol ON sol.id = vso.sale_line_id ) AS sub WHERE sub.vendor_id IS NOT NULL + ), + unique_sub AS ( + SELECT DISTINCT + vso.product_id, + sol.vendor_id + FROM v_sales_outstanding vso + LEFT JOIN sale_order_line sol ON sol.id = vso.sale_line_id + WHERE sol.vendor_id IS NOT NULL + ), + latest_po_filtered AS ( + SELECT + product_id, + user_id + FROM latest_purchase_orders + WHERE order_rank = 1 ) SELECT pmp.product_id AS id, pmp.product_id, - sub.vendor_id, + MAX(sub.vendor_id) AS vendor_id, pmp.brand, pmp.item_code, pmp.product, @@ -84,30 +98,23 @@ class PurchasingJob(models.Model): pmp.action, MAX(pjs.status_apo) AS status_apo, MAX(pjs.note) AS note, - ru.user_id AS purchase_representative_id + MAX(ru.user_id) AS purchase_representative_id FROM v_procurement_monitoring_by_product pmp LEFT JOIN purchasing_job_state pjs ON pjs.purchasing_job_id = pmp.product_id - LEFT JOIN ( - SELECT - vso.product_id, - sol.vendor_id - FROM v_sales_outstanding vso - LEFT JOIN sale_order_line sol ON sol.id = vso.sale_line_id - ) AS sub ON sub.product_id = pmp.product_id - LEFT JOIN latest_purchase_orders po ON po.product_id = pmp.product_id + LEFT JOIN unique_sub sub ON sub.product_id = pmp.product_id + LEFT JOIN latest_po_filtered po ON po.product_id = pmp.product_id LEFT JOIN random_user_ids ru ON ru.vendor_id = sub.vendor_id OR (ru.vendor_id IS NULL AND sub.vendor_id != 9688) WHERE pmp.action = 'kurang' - AND sub.vendor_id IS NOT NULL + AND sub.vendor_id IS NOT NULL GROUP BY pmp.product_id, pmp.brand, pmp.item_code, pmp.product, - pmp.action, - sub.vendor_id, - ru.user_id - ) - """ % self._table) + pmp.action + )""" % self._table + + self.env.cr.execute(query) def open_form_multi_generate_request_po(self): diff --git a/indoteknik_custom/models/sale_order_multi_uangmuka_penjualan.py b/indoteknik_custom/models/sale_order_multi_uangmuka_penjualan.py index bf717a4f..f9120290 100644 --- a/indoteknik_custom/models/sale_order_multi_uangmuka_penjualan.py +++ b/indoteknik_custom/models/sale_order_multi_uangmuka_penjualan.py @@ -48,7 +48,7 @@ class PurchaseOrderMultiUangmukaPenjualan(models.TransientModel): partner_name = orders[0].partner_id.parent_id.name order_names = ', '.join([data.name for data in orders]) # Menggabungkan nama order menjadi satu string - ref_label = f'UANG MUKA penjualan {order_names} {partner_name}' + ref_label = f'UANG MUKA PENJUALAN {order_names} {partner_name}' param_header = { 'ref': ref_label, 'date': current_time, @@ -62,7 +62,7 @@ class PurchaseOrderMultiUangmukaPenjualan(models.TransientModel): for order in orders: - _logger.info('Success Create Uang Muka penjualan %s' % account_move.name) + _logger.info('Success Create Uang Muka P %s' % account_move.name) partner_id = order.partner_id.parent_id.id if order.partner_id.parent_id else order.partner_id.id partner = order.partner_id.parent_id.name if order.partner_id.parent_id else order.partner_id.name @@ -73,7 +73,7 @@ class PurchaseOrderMultiUangmukaPenjualan(models.TransientModel): 'currency_id': 12, 'debit': 0, 'credit': order.amount_total, - 'name': f'UANG MUKA PEMBELIAN {order.name} {partner}', + 'name': f'UANG MUKA PENJUALAN {order.name} {partner}', } param_ongkir_credit = { 'move_id': account_move.id, @@ -82,7 +82,7 @@ class PurchaseOrderMultiUangmukaPenjualan(models.TransientModel): 'currency_id': 12, 'debit': 0, 'credit': self.ongkir_amt, - 'name': f'UANG MUKA PEMBELIAN {order.name} {partner}', + 'name': f'UANG MUKA PENJUALAN {order.name} {partner}', } param_selisih_credit = { 'move_id': account_move.id, @@ -91,7 +91,7 @@ class PurchaseOrderMultiUangmukaPenjualan(models.TransientModel): 'currency_id': 12, 'debit': 0, 'credit': self.selisih_amt, - 'name': f'UANG MUKA PEMBELIAN {order.name} {partner}', + 'name': f'UANG MUKA PENJUALAN {order.name} {partner}', } debit_entries.append(param_credit) |
