@things-factory/worksheet-base 3.6.34 → 3.6.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -69,7 +69,7 @@ async function renderJobSheet({ ganNo, timezoneOffSet }, context) {
69
69
  const prodType = products.map(prod => prod.type);
70
70
  return await (0, typeorm_1.getManager)().transaction(async (trxMgr) => {
71
71
  await trxMgr.query(`
72
- create temp table temp_invHistory as (
72
+ create temp table temp_invHistory on commit drop as (
73
73
  select i2.id as inventory_id, i2.pallet_id, i2.product_id, i2.packing_type, i2.batch_id,
74
74
  ih.id as inventory_history_id, ih.seq, ih.status, ih.transaction_type, ih.qty, ih.opening_qty, ih.uom_value, ih.opening_uom_value,
75
75
  ih.created_at
@@ -81,44 +81,59 @@ async function renderJobSheet({ ganNo, timezoneOffSet }, context) {
81
81
  inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = i2.domain_id
82
82
  )
83
83
  `, [foundGAN.id]);
84
- const invItems = await trxMgr.query(`
85
- SELECT inv.id AS "inv_id", inv.packing_type AS "packingType", inv.created_at AS "createdAt", product.name AS "productName",
86
- (
87
- select distinct on(pallet_id) COALESCE(qty, 0) AS unloadedQty from temp_invHistory invh
88
- where invh.status = 'UNLOADED' and invh.inventory_id = inv.id
89
- order by pallet_id, seq asc
90
- ) AS "unloadedQty",
91
- (
92
- select distinct on(pallet_id) COALESCE(created_at, null) AS outboundAt from temp_invHistory invh
93
- where invh.status = 'TERMINATED' and invh.inventory_id = inv.id
94
- order by pallet_id, seq desc
95
- ) AS "outboundAt",
96
- STRING_AGG (case when do2.name is not null then (CONCAT(do2.delivery_date, ' (', orderInv.release_qty, ') ', do2.name, ', ', case when do2.own_collection = true then 'TPT N' else 'TPT Y' end )) else null end, ', ') AS "doName",
97
- case when plt.name is not null then (CONCAT(inv.pallet_id, ' (', plt.name, ')')) else inv.pallet_id end AS "palletId",
98
- SUM(orderInv.release_qty) as "qty",
99
- do2.own_collection AS "ownTransport",
100
- STRING_AGG (vas.name, ', ') AS "vasName"
101
- FROM inventories inv
102
- LEFT JOIN order_inventories orderInv ON orderInv.inventory_id = inv.id AND orderInv.release_good_id is not null and orderInv.status <> 'CANCELLED'
103
- LEFT JOIN order_vass orderVass ON orderVass.inventory_id = inv.id
104
- LEFT JOIN vass vas ON vas.id = orderVass.vas_id
105
- LEFT JOIN pallets plt on plt.id = inv.reusable_pallet_id
106
- LEFT JOIN delivery_orders do2 ON do2.id = orderInv.delivery_order_id
107
- LEFT JOIN products product ON product.id=inv.product_id
108
- inner join order_inventories oi on oi.inventory_id = inv.id
109
- where oi.arrival_notice_id = $1
110
- AND inv.domain_id = $2
111
- GROUP BY inv.id, product.name, do2.own_collection, plt.name
112
- ORDER BY inv.pallet_id, product.name asc
84
+ const invItems = await trxMgr.query(`
85
+ SELECT rn,
86
+ inv_id,
87
+ case when rn = 1 then "packingType" else null end as "packingType",
88
+ case when rn = 1 then "createdAt" else null end as "createdAt",
89
+ case when rn = 1 then "productName" else null end as "productName",
90
+ case when rn = 1 then "unloadedQty" else null end as "unloadedQty",
91
+ case when rn = 1 then "outboundAt" else null end as "outboundAt",
92
+ "doName",
93
+ case when rn = 1 then "palletId" else null end as "palletId",
94
+ qty,
95
+ case when rn = 1 then "ownTransport" else null end as "ownTransport",
96
+ case when rn = 1 then "vasName" else null end as "vasName"
97
+ from
98
+ (
99
+ SELECT
100
+ row_number() over(partition by pallet_id order by inv.pallet_id, product.name asc) as rn,
101
+ inv.id AS "inv_id", inv.packing_type AS "packingType", inv.created_at AS "createdAt", product.name AS "productName",
102
+ (
103
+ select distinct on(pallet_id) COALESCE(qty, 0) AS unloadedQty from temp_invHistory invh
104
+ where invh.status = 'UNLOADED' and invh.inventory_id = inv.id
105
+ order by pallet_id, seq asc
106
+ ) AS "unloadedQty",
107
+ (
108
+ select distinct on(pallet_id) COALESCE(created_at, null) AS outboundAt from temp_invHistory invh
109
+ where invh.status = 'TERMINATED' and invh.inventory_id = inv.id
110
+ order by pallet_id, seq desc
111
+ ) AS "outboundAt",
112
+ STRING_AGG (case when do2.name is not null then (CONCAT(do2.delivery_date, ' (', orderInv.release_qty, ') ', do2.name, ', ', case when do2.own_collection = true then 'TPT N' else 'TPT Y' end )) else null end, ', ') AS "doName",
113
+ case when plt.name is not null then (CONCAT(inv.pallet_id, ' (', plt.name, ')')) else inv.pallet_id end AS "palletId",
114
+ SUM(orderInv.release_qty) as "qty",
115
+ do2.own_collection AS "ownTransport",
116
+ STRING_AGG (vas.name, ', ') AS "vasName"
117
+ FROM inventories inv
118
+ LEFT JOIN order_inventories orderInv ON orderInv.inventory_id = inv.id AND orderInv.release_good_id is not null and orderInv.status <> 'CANCELLED' AND orderinv.picked_qty > 0
119
+ LEFT JOIN order_vass orderVass ON orderVass.inventory_id = inv.id
120
+ LEFT JOIN vass vas ON vas.id = orderVass.vas_id
121
+ LEFT JOIN pallets plt on plt.id = inv.reusable_pallet_id
122
+ LEFT JOIN delivery_orders do2 ON do2.id = orderInv.delivery_order_id
123
+ LEFT JOIN products product ON product.id=inv.product_id
124
+ inner join order_inventories oi on oi.inventory_id = inv.id
125
+ where oi.arrival_notice_id = $1
126
+ AND inv.domain_id = $2
127
+ GROUP BY inv.id, product.name, do2.own_collection, plt.name
128
+ ORDER BY inv.pallet_id, product.name asc
129
+ ) foo
113
130
  `, [foundGAN.id, domain.id]);
114
- await trxMgr.query(`
115
- drop table temp_invHistory
116
- `);
117
131
  const sumPackQty = targetProducts.map((op) => op.actualPackQty).reduce((a, b) => a + b, 0);
118
132
  let sumPalletQty = 0;
119
133
  if (foundJS === null || foundJS === void 0 ? void 0 : foundJS.sumPalletQty) {
120
134
  sumPalletQty = foundJS.sumPalletQty;
121
135
  }
136
+ let index = 0;
122
137
  const data = {
123
138
  logo_url: logo,
124
139
  customer_biz: partnerBiz.company.name,
@@ -140,9 +155,10 @@ async function renderJobSheet({ ganNo, timezoneOffSet }, context) {
140
155
  created_on: datetime_util_1.DateTimeConverter.date(foundJS.createdAt),
141
156
  job_no: foundJS ? foundJS.name : null,
142
157
  ref_no: foundGAN.name,
143
- product_list: invItems.map((item, idx) => {
158
+ product_list: invItems.map(item => {
159
+ index = item.rn == 1 ? index + 1 : index;
144
160
  return {
145
- idx: idx + 1,
161
+ idx: item.rn == 1 ? index : '',
146
162
  pallet_id: item.palletId,
147
163
  product_name: item.productName,
148
164
  product_type: item.packingType,
@@ -1 +1 @@
1
- {"version":3,"file":"render-job-sheet.js","sourceRoot":"","sources":["../../server/controllers/render-job-sheet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-job-sheet.js","sourceRoot":"","sources":["../../server/controllers/render-job-sheet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/worksheet-base",
3
- "version": "3.6.34",
3
+ "version": "3.6.39",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,20 +24,20 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
25
  },
26
26
  "dependencies": {
27
- "@things-factory/auth-base": "^3.6.33",
28
- "@things-factory/biz-base": "^3.6.33",
29
- "@things-factory/document-template-base": "^3.6.33",
30
- "@things-factory/id-rule-base": "^3.6.33",
31
- "@things-factory/integration-lmd": "^3.6.33",
32
- "@things-factory/integration-marketplace": "^3.6.33",
33
- "@things-factory/integration-sellercraft": "^3.6.33",
34
- "@things-factory/marketplace-base": "^3.6.34",
35
- "@things-factory/notification": "^3.6.33",
36
- "@things-factory/sales-base": "^3.6.34",
37
- "@things-factory/setting-base": "^3.6.33",
38
- "@things-factory/shell": "^3.6.33",
39
- "@things-factory/transport-base": "^3.6.33",
40
- "@things-factory/warehouse-base": "^3.6.34"
27
+ "@things-factory/auth-base": "^3.6.38",
28
+ "@things-factory/biz-base": "^3.6.38",
29
+ "@things-factory/document-template-base": "^3.6.38",
30
+ "@things-factory/id-rule-base": "^3.6.39",
31
+ "@things-factory/integration-lmd": "^3.6.39",
32
+ "@things-factory/integration-marketplace": "^3.6.39",
33
+ "@things-factory/integration-sellercraft": "^3.6.39",
34
+ "@things-factory/marketplace-base": "^3.6.39",
35
+ "@things-factory/notification": "^3.6.38",
36
+ "@things-factory/sales-base": "^3.6.39",
37
+ "@things-factory/setting-base": "^3.6.38",
38
+ "@things-factory/shell": "^3.6.38",
39
+ "@things-factory/transport-base": "^3.6.38",
40
+ "@things-factory/warehouse-base": "^3.6.39"
41
41
  },
42
- "gitHead": "026c859918f474fae1c3d5c2e5604627afe8a95b"
42
+ "gitHead": "0c0d02d7247a05196bf21879cc899931de55d2ef"
43
43
  }
@@ -79,7 +79,7 @@ export async function renderJobSheet({ ganNo, timezoneOffSet }, context) {
79
79
  return await getManager().transaction(async (trxMgr: EntityManager) => {
80
80
  await trxMgr.query(
81
81
  `
82
- create temp table temp_invHistory as (
82
+ create temp table temp_invHistory on commit drop as (
83
83
  select i2.id as inventory_id, i2.pallet_id, i2.product_id, i2.packing_type, i2.batch_id,
84
84
  ih.id as inventory_history_id, ih.seq, ih.status, ih.transaction_type, ih.qty, ih.opening_qty, ih.uom_value, ih.opening_uom_value,
85
85
  ih.created_at
@@ -95,52 +95,63 @@ export async function renderJobSheet({ ganNo, timezoneOffSet }, context) {
95
95
  )
96
96
 
97
97
  const invItems: any[] = await trxMgr.query(
98
- `
99
- SELECT inv.id AS "inv_id", inv.packing_type AS "packingType", inv.created_at AS "createdAt", product.name AS "productName",
100
- (
101
- select distinct on(pallet_id) COALESCE(qty, 0) AS unloadedQty from temp_invHistory invh
102
- where invh.status = 'UNLOADED' and invh.inventory_id = inv.id
103
- order by pallet_id, seq asc
104
- ) AS "unloadedQty",
105
- (
106
- select distinct on(pallet_id) COALESCE(created_at, null) AS outboundAt from temp_invHistory invh
107
- where invh.status = 'TERMINATED' and invh.inventory_id = inv.id
108
- order by pallet_id, seq desc
109
- ) AS "outboundAt",
110
- STRING_AGG (case when do2.name is not null then (CONCAT(do2.delivery_date, ' (', orderInv.release_qty, ') ', do2.name, ', ', case when do2.own_collection = true then 'TPT N' else 'TPT Y' end )) else null end, ', ') AS "doName",
111
- case when plt.name is not null then (CONCAT(inv.pallet_id, ' (', plt.name, ')')) else inv.pallet_id end AS "palletId",
112
- SUM(orderInv.release_qty) as "qty",
113
- do2.own_collection AS "ownTransport",
114
- STRING_AGG (vas.name, ', ') AS "vasName"
115
- FROM inventories inv
116
- LEFT JOIN order_inventories orderInv ON orderInv.inventory_id = inv.id AND orderInv.release_good_id is not null and orderInv.status <> 'CANCELLED'
117
- LEFT JOIN order_vass orderVass ON orderVass.inventory_id = inv.id
118
- LEFT JOIN vass vas ON vas.id = orderVass.vas_id
119
- LEFT JOIN pallets plt on plt.id = inv.reusable_pallet_id
120
- LEFT JOIN delivery_orders do2 ON do2.id = orderInv.delivery_order_id
121
- LEFT JOIN products product ON product.id=inv.product_id
122
- inner join order_inventories oi on oi.inventory_id = inv.id
123
- where oi.arrival_notice_id = $1
124
- AND inv.domain_id = $2
125
- GROUP BY inv.id, product.name, do2.own_collection, plt.name
126
- ORDER BY inv.pallet_id, product.name asc
98
+ `
99
+ SELECT rn,
100
+ inv_id,
101
+ case when rn = 1 then "packingType" else null end as "packingType",
102
+ case when rn = 1 then "createdAt" else null end as "createdAt",
103
+ case when rn = 1 then "productName" else null end as "productName",
104
+ case when rn = 1 then "unloadedQty" else null end as "unloadedQty",
105
+ case when rn = 1 then "outboundAt" else null end as "outboundAt",
106
+ "doName",
107
+ case when rn = 1 then "palletId" else null end as "palletId",
108
+ qty,
109
+ case when rn = 1 then "ownTransport" else null end as "ownTransport",
110
+ case when rn = 1 then "vasName" else null end as "vasName"
111
+ from
112
+ (
113
+ SELECT
114
+ row_number() over(partition by pallet_id order by inv.pallet_id, product.name asc) as rn,
115
+ inv.id AS "inv_id", inv.packing_type AS "packingType", inv.created_at AS "createdAt", product.name AS "productName",
116
+ (
117
+ select distinct on(pallet_id) COALESCE(qty, 0) AS unloadedQty from temp_invHistory invh
118
+ where invh.status = 'UNLOADED' and invh.inventory_id = inv.id
119
+ order by pallet_id, seq asc
120
+ ) AS "unloadedQty",
121
+ (
122
+ select distinct on(pallet_id) COALESCE(created_at, null) AS outboundAt from temp_invHistory invh
123
+ where invh.status = 'TERMINATED' and invh.inventory_id = inv.id
124
+ order by pallet_id, seq desc
125
+ ) AS "outboundAt",
126
+ STRING_AGG (case when do2.name is not null then (CONCAT(do2.delivery_date, ' (', orderInv.release_qty, ') ', do2.name, ', ', case when do2.own_collection = true then 'TPT N' else 'TPT Y' end )) else null end, ', ') AS "doName",
127
+ case when plt.name is not null then (CONCAT(inv.pallet_id, ' (', plt.name, ')')) else inv.pallet_id end AS "palletId",
128
+ SUM(orderInv.release_qty) as "qty",
129
+ do2.own_collection AS "ownTransport",
130
+ STRING_AGG (vas.name, ', ') AS "vasName"
131
+ FROM inventories inv
132
+ LEFT JOIN order_inventories orderInv ON orderInv.inventory_id = inv.id AND orderInv.release_good_id is not null and orderInv.status <> 'CANCELLED' AND orderinv.picked_qty > 0
133
+ LEFT JOIN order_vass orderVass ON orderVass.inventory_id = inv.id
134
+ LEFT JOIN vass vas ON vas.id = orderVass.vas_id
135
+ LEFT JOIN pallets plt on plt.id = inv.reusable_pallet_id
136
+ LEFT JOIN delivery_orders do2 ON do2.id = orderInv.delivery_order_id
137
+ LEFT JOIN products product ON product.id=inv.product_id
138
+ inner join order_inventories oi on oi.inventory_id = inv.id
139
+ where oi.arrival_notice_id = $1
140
+ AND inv.domain_id = $2
141
+ GROUP BY inv.id, product.name, do2.own_collection, plt.name
142
+ ORDER BY inv.pallet_id, product.name asc
143
+ ) foo
127
144
  `,
128
145
  [foundGAN.id, domain.id]
129
146
  )
130
147
 
131
- await trxMgr.query(
132
- `
133
- drop table temp_invHistory
134
- `
135
- )
136
-
137
148
  const sumPackQty = targetProducts.map((op: OrderProduct) => op.actualPackQty).reduce((a, b) => a + b, 0)
138
149
 
139
150
  let sumPalletQty = 0
140
151
  if (foundJS?.sumPalletQty) {
141
152
  sumPalletQty = foundJS.sumPalletQty
142
153
  }
143
-
154
+ let index = 0
144
155
  const data = {
145
156
  logo_url: logo,
146
157
  customer_biz: partnerBiz.company.name,
@@ -163,9 +174,10 @@ export async function renderJobSheet({ ganNo, timezoneOffSet }, context) {
163
174
  created_on: DateTimeConverter.date(foundJS.createdAt),
164
175
  job_no: foundJS ? foundJS.name : null,
165
176
  ref_no: foundGAN.name,
166
- product_list: invItems.map((item, idx) => {
177
+ product_list: invItems.map(item => {
178
+ index = item.rn == 1 ? index + 1 : index
167
179
  return {
168
- idx: idx + 1,
180
+ idx: item.rn == 1 ? index : '',
169
181
  pallet_id: item.palletId,
170
182
  product_name: item.productName,
171
183
  product_type: item.packingType,