summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-07-02 09:25:31 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-07-02 09:25:31 +0700
commitf9c5b3dffcd71bfa9dea74c946d7b4277db66bd6 (patch)
tree8f4e6bfaf75c3e928dbd70bf6824369406a8dafb
parenta8f3194552f980ba6201ee834a0d5582cb584262 (diff)
fix bug on multi create uang muka penjualan and fix bug duplikat data purchasing job
-rw-r--r--indoteknik_custom/models/purchasing_job.py45
-rw-r--r--indoteknik_custom/models/sale_order_multi_uangmuka_penjualan.py10
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)