repzo-sap-absjo 1.0.8 → 1.0.9

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.
Files changed (77) hide show
  1. package/lib/actions/create_invoice.d.ts +19 -13
  2. package/lib/actions/create_invoice.js +363 -214
  3. package/lib/actions/create_payment.d.ts +4 -1
  4. package/lib/actions/create_payment.js +200 -125
  5. package/lib/actions/create_proforma.d.ts +4 -1
  6. package/lib/actions/create_proforma.js +290 -165
  7. package/lib/actions/create_return_invoice.d.ts +4 -1
  8. package/lib/actions/create_return_invoice.js +321 -177
  9. package/lib/actions/create_transfer.d.ts +4 -1
  10. package/lib/actions/create_transfer.js +220 -143
  11. package/lib/actions/index.js +23 -15
  12. package/lib/commands/adjust_inventory.d.ts +4 -2
  13. package/lib/commands/adjust_inventory.js +290 -160
  14. package/lib/commands/bank.d.ts +4 -2
  15. package/lib/commands/bank.js +279 -157
  16. package/lib/commands/basic.js +66 -47
  17. package/lib/commands/category.d.ts +3 -1
  18. package/lib/commands/category.js +178 -104
  19. package/lib/commands/channel.d.ts +3 -1
  20. package/lib/commands/channel.js +198 -117
  21. package/lib/commands/client.d.ts +34 -32
  22. package/lib/commands/client.js +404 -244
  23. package/lib/commands/client_disabled.d.ts +3 -1
  24. package/lib/commands/client_disabled.js +163 -94
  25. package/lib/commands/index.d.ts +15 -11
  26. package/lib/commands/index.js +60 -60
  27. package/lib/commands/join.js +192 -66
  28. package/lib/commands/measureunit.d.ts +19 -14
  29. package/lib/commands/measureunit.js +289 -191
  30. package/lib/commands/measureunit_family.d.ts +10 -8
  31. package/lib/commands/measureunit_family.js +250 -138
  32. package/lib/commands/payment_term.d.ts +3 -1
  33. package/lib/commands/payment_term.js +202 -123
  34. package/lib/commands/price_list.d.ts +15 -15
  35. package/lib/commands/price_list.js +612 -326
  36. package/lib/commands/product.d.ts +32 -30
  37. package/lib/commands/product.js +425 -243
  38. package/lib/commands/product_disabled.d.ts +3 -1
  39. package/lib/commands/product_disabled.js +164 -94
  40. package/lib/commands/rep.js +221 -141
  41. package/lib/commands/tag.js +174 -109
  42. package/lib/commands/tax.js +177 -112
  43. package/lib/commands/warehouse.d.ts +3 -1
  44. package/lib/commands/warehouse.js +207 -119
  45. package/lib/index.d.ts +21 -12
  46. package/lib/test/actions/create_invoice.js +193 -188
  47. package/lib/test/actions/create_payment.js +112 -107
  48. package/lib/test/actions/create_proforma.js +220 -216
  49. package/lib/test/actions/create_return_invoice.js +205 -200
  50. package/lib/test/actions/create_transfer.js +120 -115
  51. package/lib/test/commands/adjust_inventory.js +90 -90
  52. package/lib/test/commands/bank.js +90 -90
  53. package/lib/test/commands/basic.js +328 -327
  54. package/lib/test/commands/category.js +90 -90
  55. package/lib/test/commands/channel.js +90 -90
  56. package/lib/test/commands/client.js +355 -353
  57. package/lib/test/commands/client_disabled.js +90 -90
  58. package/lib/test/commands/join.js +328 -327
  59. package/lib/test/commands/measureunit.js +90 -90
  60. package/lib/test/commands/measureunit_family.js +90 -90
  61. package/lib/test/commands/payment_term.js +90 -90
  62. package/lib/test/commands/price_list.js +337 -334
  63. package/lib/test/commands/product.js +90 -90
  64. package/lib/test/commands/product_disabled.js +90 -90
  65. package/lib/test/commands/rep.js +346 -344
  66. package/lib/test/commands/tag.js +90 -90
  67. package/lib/test/commands/tax.js +90 -90
  68. package/lib/test/commands/warehouse.js +90 -90
  69. package/lib/types.d.ts +83 -60
  70. package/lib/util.d.ts +70 -19
  71. package/lib/util.js +170 -144
  72. package/package.json +1 -1
  73. package/src/actions/create_invoice.ts +4 -13
  74. package/src/actions/create_payment.ts +4 -13
  75. package/src/actions/create_proforma.ts +28 -40
  76. package/src/actions/create_return_invoice.ts +4 -16
  77. package/src/actions/create_transfer.ts +24 -36
@@ -1,20 +1,26 @@
1
1
  import { EVENT, Config } from "../types";
2
2
  interface SAPOpenInvoice {
3
- CustomerNumber: string;
4
- FatherCode: string;
5
- DocDate: string;
6
- DocDueDate: string;
7
- InvoiceID: number;
8
- InvoiceNumber: string;
9
- InvoiceClientID: string;
10
- InvoiceFinalAmount: number;
11
- InvoiceRemainingAmount: number;
12
- InvoiceStatus: string;
3
+ CustomerNumber: string;
4
+ FatherCode: string;
5
+ DocDate: string;
6
+ DocDueDate: string;
7
+ InvoiceID: number;
8
+ InvoiceNumber: string;
9
+ InvoiceClientID: string;
10
+ InvoiceFinalAmount: number;
11
+ InvoiceRemainingAmount: number;
12
+ InvoiceStatus: string;
13
13
  }
14
- export declare const create_invoice: (event: EVENT, options: Config) => Promise<any>;
15
- export declare const get_invoice_from_sap: (serviceEndPoint: string, query?: {
14
+ export declare const create_invoice: (
15
+ event: EVENT,
16
+ options: Config
17
+ ) => Promise<any>;
18
+ export declare const get_invoice_from_sap: (
19
+ serviceEndPoint: string,
20
+ query?: {
16
21
  updatedAt: string;
17
22
  Status: string;
18
23
  InvoiceId: string;
19
- }) => Promise<SAPOpenInvoice[]>;
24
+ }
25
+ ) => Promise<SAPOpenInvoice[]>;
20
26
  export {};
@@ -3,227 +3,376 @@ import { _create } from "../util.js";
3
3
  import { v4 as uuid } from "uuid";
4
4
  import moment from "moment-timezone";
5
5
  export const create_invoice = async (event, options) => {
6
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
7
- const repzo = new Repzo((_a = options.data) === null || _a === void 0 ? void 0 : _a.repzoApiKey, { env: options.env });
8
- const action_sync_id = ((_b = event === null || event === void 0 ? void 0 : event.headers) === null || _b === void 0 ? void 0 : _b.action_sync_id) || uuid();
9
- const actionLog = new Repzo.ActionLogs(repzo, action_sync_id);
10
- let body;
6
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
7
+ const repzo = new Repzo(
8
+ (_a = options.data) === null || _a === void 0 ? void 0 : _a.repzoApiKey,
9
+ { env: options.env }
10
+ );
11
+ const action_sync_id =
12
+ ((_b = event === null || event === void 0 ? void 0 : event.headers) ===
13
+ null || _b === void 0
14
+ ? void 0
15
+ : _b.action_sync_id) || uuid();
16
+ const actionLog = new Repzo.ActionLogs(repzo, action_sync_id);
17
+ let body;
18
+ try {
19
+ // console.log("create_invoice");
20
+ await actionLog.load(action_sync_id);
21
+ body = event.body;
11
22
  try {
12
- // console.log("create_invoice");
13
- await actionLog.load(action_sync_id);
14
- body = event.body;
15
- try {
16
- if (body)
17
- body = JSON.parse(body);
18
- }
19
- catch (e) { }
20
- const repzo_serial_number = (_c = body === null || body === void 0 ? void 0 : body.serial_number) === null || _c === void 0 ? void 0 : _c.formatted;
21
- try {
22
- if (body === null || body === void 0 ? void 0 : body._id) {
23
- body.integration_meta = (body === null || body === void 0 ? void 0 : body.integration_meta) || {};
24
- body.integration_meta.sync_to_sap_started = true;
25
- body.integration_meta.sync_to_sap_succeeded =
26
- body.integration_meta.sync_to_sap_succeeded || false;
27
- await repzo.invoice.update(body._id, {
28
- integration_meta: body.integration_meta,
29
- });
30
- }
31
- }
32
- catch (e) {
33
- console.error(e);
34
- await actionLog
35
- .addDetail(`Failed updating integration_meta of Invoice: ${repzo_serial_number}`)
36
- .commit();
37
- }
38
- await actionLog
39
- .addDetail(`Invoice - ${repzo_serial_number} => ${body === null || body === void 0 ? void 0 : body.sync_id}`)
40
- .addDetail(`Repzo => SAP: Started Create Invoice - ${repzo_serial_number}`)
41
- .commit();
42
- const SAP_HOST_URL = (_d = options.data) === null || _d === void 0 ? void 0 : _d.sapHostUrl;
43
- if (!SAP_HOST_URL)
44
- throw `SAP Host Url is missing and Required: ${SAP_HOST_URL}`;
45
- const repzo_invoice = body;
46
- // Check if it is already exist in SAP
47
- const sap_open_invoices = await get_invoice_from_sap(SAP_HOST_URL, {
48
- updatedAt: "",
49
- Status: "",
50
- InvoiceId: repzo_serial_number,
51
- });
52
- const open_invoice = sap_open_invoices === null || sap_open_invoices === void 0 ? void 0 : sap_open_invoices.find((inv) => (inv === null || inv === void 0 ? void 0 : inv.InvoiceNumber) === repzo_serial_number);
53
- if (open_invoice) {
54
- await actionLog
55
- .addDetail(`Checked Already in SAP `, open_invoice)
56
- .addDetail(`Invoice - ${repzo_serial_number} Checked Already in SAP`)
57
- .setStatus("success")
58
- .setBody(repzo_invoice)
59
- .commit();
60
- return {
61
- message: "Checked Already in SAP",
62
- result: open_invoice,
63
- };
64
- }
65
- // Check closed invoice in SAP
66
- const sap_closed_invoices = await get_invoice_from_sap(SAP_HOST_URL, {
67
- updatedAt: "",
68
- Status: "closed",
69
- InvoiceId: repzo_serial_number,
23
+ if (body) body = JSON.parse(body);
24
+ } catch (e) {}
25
+ const repzo_serial_number =
26
+ (_c = body === null || body === void 0 ? void 0 : body.serial_number) ===
27
+ null || _c === void 0
28
+ ? void 0
29
+ : _c.formatted;
30
+ try {
31
+ if (body === null || body === void 0 ? void 0 : body._id) {
32
+ body.integration_meta =
33
+ (body === null || body === void 0 ? void 0 : body.integration_meta) ||
34
+ {};
35
+ body.integration_meta.sync_to_sap_started = true;
36
+ body.integration_meta.sync_to_sap_succeeded =
37
+ body.integration_meta.sync_to_sap_succeeded || false;
38
+ await repzo.invoice.update(body._id, {
39
+ integration_meta: body.integration_meta,
70
40
  });
71
- const closed_invoice = sap_closed_invoices === null || sap_closed_invoices === void 0 ? void 0 : sap_closed_invoices.find((inv) => (inv === null || inv === void 0 ? void 0 : inv.InvoiceNumber) === repzo_serial_number);
72
- if (closed_invoice) {
73
- await actionLog
74
- .addDetail(`Checked Closed Already in SAP `, closed_invoice)
75
- .addDetail(`Invoice - ${repzo_serial_number} Checked Closed Already in SAP`)
76
- .setStatus("success")
77
- .setBody(repzo_invoice)
78
- .commit();
79
- return {
80
- message: "Checked Closed Already in SAP",
81
- result: closed_invoice,
82
- };
83
- }
84
- // Get Repzo Rep
85
- let repzo_rep;
86
- if (repzo_invoice.creator.type == "rep") {
87
- repzo_rep = await repzo.rep.get((_e = repzo_invoice === null || repzo_invoice === void 0 ? void 0 : repzo_invoice.creator) === null || _e === void 0 ? void 0 : _e._id);
88
- if (!repzo_rep)
89
- throw `Rep with _id: ${repzo_invoice.creator._id} not found in Repzo`;
90
- }
91
- // Get Repzo Client
92
- const repzo_client = await repzo.client.get(repzo_invoice === null || repzo_invoice === void 0 ? void 0 : repzo_invoice.client_id);
93
- if (!repzo_client)
94
- throw `Client with _id: ${repzo_invoice.client_id} not found in Repzo`;
95
- // Get Repzo Warehouse
96
- const repzo_warehouse = await repzo.warehouse.get(repzo_invoice.origin_warehouse);
97
- if (!repzo_warehouse)
98
- throw `warehouse with _id: ${repzo_invoice.origin_warehouse} not found in Repzo`;
99
- const repzo_tax_ids = {};
100
- const repzo_measureunit_ids = {};
101
- const repzo_product_ids = {};
102
- (_f = repzo_invoice.items) === null || _f === void 0 ? void 0 : _f.forEach((item) => {
103
- var _a, _b, _c;
104
- if (item) {
105
- repzo_tax_ids[(_a = item.tax) === null || _a === void 0 ? void 0 : _a._id] = true;
106
- repzo_measureunit_ids[(_b = item.measureunit) === null || _b === void 0 ? void 0 : _b._id] = true;
107
- repzo_product_ids[(_c = item.variant) === null || _c === void 0 ? void 0 : _c.product_id] = true;
108
- }
41
+ }
42
+ } catch (e) {
43
+ console.error(e);
44
+ }
45
+ await actionLog
46
+ .addDetail(
47
+ `Invoice - ${repzo_serial_number} => ${
48
+ body === null || body === void 0 ? void 0 : body.sync_id
49
+ }`
50
+ )
51
+ .addDetail(
52
+ `Repzo => SAP: Started Create Invoice - ${repzo_serial_number}`
53
+ )
54
+ .commit();
55
+ const SAP_HOST_URL =
56
+ (_d = options.data) === null || _d === void 0 ? void 0 : _d.sapHostUrl;
57
+ if (!SAP_HOST_URL)
58
+ throw `SAP Host Url is missing and Required: ${SAP_HOST_URL}`;
59
+ const repzo_invoice = body;
60
+ // Check if it is already exist in SAP
61
+ const sap_open_invoices = await get_invoice_from_sap(SAP_HOST_URL, {
62
+ updatedAt: "",
63
+ Status: "",
64
+ InvoiceId: repzo_serial_number,
65
+ });
66
+ const open_invoice =
67
+ sap_open_invoices === null || sap_open_invoices === void 0
68
+ ? void 0
69
+ : sap_open_invoices.find(
70
+ (inv) =>
71
+ (inv === null || inv === void 0 ? void 0 : inv.InvoiceNumber) ===
72
+ repzo_serial_number
73
+ );
74
+ if (open_invoice) {
75
+ await actionLog
76
+ .addDetail(`Checked Already in SAP `, open_invoice)
77
+ .addDetail(`Invoice - ${repzo_serial_number} Checked Already in SAP`)
78
+ .setStatus("success")
79
+ .setBody(repzo_invoice)
80
+ .commit();
81
+ return {
82
+ message: "Checked Already in SAP",
83
+ result: open_invoice,
84
+ };
85
+ }
86
+ // Check closed invoice in SAP
87
+ const sap_closed_invoices = await get_invoice_from_sap(SAP_HOST_URL, {
88
+ updatedAt: "",
89
+ Status: "closed",
90
+ InvoiceId: repzo_serial_number,
91
+ });
92
+ const closed_invoice =
93
+ sap_closed_invoices === null || sap_closed_invoices === void 0
94
+ ? void 0
95
+ : sap_closed_invoices.find(
96
+ (inv) =>
97
+ (inv === null || inv === void 0 ? void 0 : inv.InvoiceNumber) ===
98
+ repzo_serial_number
99
+ );
100
+ if (closed_invoice) {
101
+ await actionLog
102
+ .addDetail(`Checked Closed Already in SAP `, closed_invoice)
103
+ .addDetail(
104
+ `Invoice - ${repzo_serial_number} Checked Closed Already in SAP`
105
+ )
106
+ .setStatus("success")
107
+ .setBody(repzo_invoice)
108
+ .commit();
109
+ return {
110
+ message: "Checked Closed Already in SAP",
111
+ result: closed_invoice,
112
+ };
113
+ }
114
+ // Get Repzo Rep
115
+ let repzo_rep;
116
+ if (repzo_invoice.creator.type == "rep") {
117
+ repzo_rep = await repzo.rep.get(
118
+ (_e =
119
+ repzo_invoice === null || repzo_invoice === void 0
120
+ ? void 0
121
+ : repzo_invoice.creator) === null || _e === void 0
122
+ ? void 0
123
+ : _e._id
124
+ );
125
+ if (!repzo_rep)
126
+ throw `Rep with _id: ${repzo_invoice.creator._id} not found in Repzo`;
127
+ }
128
+ // Get Repzo Client
129
+ const repzo_client = await repzo.client.get(
130
+ repzo_invoice === null || repzo_invoice === void 0
131
+ ? void 0
132
+ : repzo_invoice.client_id
133
+ );
134
+ if (!repzo_client)
135
+ throw `Client with _id: ${repzo_invoice.client_id} not found in Repzo`;
136
+ // Get Repzo Warehouse
137
+ const repzo_warehouse = await repzo.warehouse.get(
138
+ repzo_invoice.origin_warehouse
139
+ );
140
+ if (!repzo_warehouse)
141
+ throw `warehouse with _id: ${repzo_invoice.origin_warehouse} not found in Repzo`;
142
+ const repzo_tax_ids = {};
143
+ const repzo_measureunit_ids = {};
144
+ const repzo_product_ids = {};
145
+ (_f = repzo_invoice.items) === null || _f === void 0
146
+ ? void 0
147
+ : _f.forEach((item) => {
148
+ var _a, _b, _c;
149
+ if (item) {
150
+ repzo_tax_ids[
151
+ (_a = item.tax) === null || _a === void 0 ? void 0 : _a._id
152
+ ] = true;
153
+ repzo_measureunit_ids[
154
+ (_b = item.measureunit) === null || _b === void 0
155
+ ? void 0
156
+ : _b._id
157
+ ] = true;
158
+ repzo_product_ids[
159
+ (_c = item.variant) === null || _c === void 0
160
+ ? void 0
161
+ : _c.product_id
162
+ ] = true;
163
+ }
109
164
  });
110
- const repzo_taxes = await repzo.patchAction.create({
111
- slug: "tax",
112
- readQuery: [
113
- {
114
- key: "_id",
115
- value: Object.keys(repzo_tax_ids),
116
- operator: "in",
117
- },
118
- ],
119
- }, { per_page: 50000 });
120
- const repzo_measureunits = await repzo.patchAction.create({
121
- slug: "measureunits",
122
- readQuery: [
123
- {
124
- key: "_id",
125
- value: Object.keys(repzo_measureunit_ids),
126
- operator: "in",
127
- },
128
- ],
129
- }, { per_page: 50000 });
130
- const repzo_products = await repzo.patchAction.create({
131
- slug: "product",
132
- readQuery: [
133
- {
134
- key: "_id",
135
- value: Object.keys(repzo_product_ids),
136
- operator: "in",
137
- },
138
- ],
139
- }, { per_page: 50000 });
140
- // Prepare SAP_invoice_items
141
- const items = [];
142
- for (let i = 0; i < ((_g = repzo_invoice === null || repzo_invoice === void 0 ? void 0 : repzo_invoice.items) === null || _g === void 0 ? void 0 : _g.length); i++) {
143
- const item = repzo_invoice.items[i];
144
- // Get Repzo Tax
145
- const repzo_tax = (_h = repzo_taxes === null || repzo_taxes === void 0 ? void 0 : repzo_taxes.data) === null || _h === void 0 ? void 0 : _h.find((t) => { var _a, _b, _c; return ((_a = t._id) === null || _a === void 0 ? void 0 : _a.toString()) == ((_c = (_b = item.tax) === null || _b === void 0 ? void 0 : _b._id) === null || _c === void 0 ? void 0 : _c.toString()); });
146
- if (!repzo_tax)
147
- throw `Tax with _id: ${item.tax._id} not found in Repzo`;
148
- // Get Repzo UoM
149
- const repzo_measureunit = (_j = repzo_measureunits === null || repzo_measureunits === void 0 ? void 0 : repzo_measureunits.data) === null || _j === void 0 ? void 0 : _j.find((m) => { var _a, _b, _c; return ((_a = m._id) === null || _a === void 0 ? void 0 : _a.toString()) == ((_c = (_b = item.measureunit) === null || _b === void 0 ? void 0 : _b._id) === null || _c === void 0 ? void 0 : _c.toString()); });
150
- if (!repzo_measureunit)
151
- throw `Uom with _id: ${(_k = item.measureunit) === null || _k === void 0 ? void 0 : _k._id} not found in Repzo`;
152
- // Get Repzo Product
153
- const repzo_product = (_l = repzo_products === null || repzo_products === void 0 ? void 0 : repzo_products.data) === null || _l === void 0 ? void 0 : _l.find((p) => { var _a, _b, _c; return ((_a = p._id) === null || _a === void 0 ? void 0 : _a.toString()) == ((_c = (_b = item.variant) === null || _b === void 0 ? void 0 : _b.product_id) === null || _c === void 0 ? void 0 : _c.toString()); });
154
- if (!repzo_product)
155
- throw `Product with _id: ${item.measureunit._id} not found in Repzo`;
156
- items.push({
157
- ItemCode: item.variant.variant_name,
158
- Quantity: item.qty,
159
- TaxCode: repzo_tax.integration_meta.TaxCode,
160
- UnitPrice: (item.price * repzo_measureunit.factor) / 1000,
161
- DiscountPerc: "0",
162
- //@ts-ignore
163
- LineTotal: item.total_before_tax / 1000,
164
- UomCode: repzo_measureunit.integration_meta.ALTUOMID,
165
- Brand: (_m = repzo_product.integration_meta) === null || _m === void 0 ? void 0 : _m.BRAND,
166
- Department: ((_o = repzo_rep === null || repzo_rep === void 0 ? void 0 : repzo_rep.integration_meta) === null || _o === void 0 ? void 0 : _o.DEPARTMENTCODE) ||
167
- ((_p = options.data) === null || _p === void 0 ? void 0 : _p.DepartmentCode), // "D2",
165
+ const repzo_taxes = await repzo.patchAction.create(
166
+ {
167
+ slug: "tax",
168
+ readQuery: [
169
+ {
170
+ key: "_id",
171
+ value: Object.keys(repzo_tax_ids),
172
+ operator: "in",
173
+ },
174
+ ],
175
+ },
176
+ { per_page: 50000 }
177
+ );
178
+ const repzo_measureunits = await repzo.patchAction.create(
179
+ {
180
+ slug: "measureunits",
181
+ readQuery: [
182
+ {
183
+ key: "_id",
184
+ value: Object.keys(repzo_measureunit_ids),
185
+ operator: "in",
186
+ },
187
+ ],
188
+ },
189
+ { per_page: 50000 }
190
+ );
191
+ const repzo_products = await repzo.patchAction.create(
192
+ {
193
+ slug: "product",
194
+ readQuery: [
195
+ {
196
+ key: "_id",
197
+ value: Object.keys(repzo_product_ids),
198
+ operator: "in",
199
+ },
200
+ ],
201
+ },
202
+ { per_page: 50000 }
203
+ );
204
+ // Prepare SAP_invoice_items
205
+ const items = [];
206
+ for (
207
+ let i = 0;
208
+ i <
209
+ ((_g =
210
+ repzo_invoice === null || repzo_invoice === void 0
211
+ ? void 0
212
+ : repzo_invoice.items) === null || _g === void 0
213
+ ? void 0
214
+ : _g.length);
215
+ i++
216
+ ) {
217
+ const item = repzo_invoice.items[i];
218
+ // Get Repzo Tax
219
+ const repzo_tax =
220
+ (_h =
221
+ repzo_taxes === null || repzo_taxes === void 0
222
+ ? void 0
223
+ : repzo_taxes.data) === null || _h === void 0
224
+ ? void 0
225
+ : _h.find((t) => {
226
+ var _a, _b, _c;
227
+ return (
228
+ ((_a = t._id) === null || _a === void 0
229
+ ? void 0
230
+ : _a.toString()) ==
231
+ ((_c =
232
+ (_b = item.tax) === null || _b === void 0
233
+ ? void 0
234
+ : _b._id) === null || _c === void 0
235
+ ? void 0
236
+ : _c.toString())
237
+ );
168
238
  });
169
- }
170
- const sap_invoice = {
171
- RefNum: repzo_invoice.serial_number.formatted,
172
- SalPersCode: repzo_rep === null || repzo_rep === void 0 ? void 0 : repzo_rep.integration_id,
173
- DocDate: moment(repzo_invoice.issue_date, "YYYY-MM-DD").format("YYYYMMDD"),
174
- DocDueDate: moment(repzo_invoice.due_date, "YYYY-MM-DD").format("YYYYMMDD"),
175
- ClientCode: repzo_client.client_code,
176
- DiscountPerc: "0",
177
- Note: repzo_invoice.comment,
178
- WarehouseCode: repzo_warehouse.code,
179
- LinesDetails: items,
180
- };
181
- // console.dir(sap_invoice, { depth: null });
182
- await actionLog
183
- .addDetail(`Repzo => SAP: Invoice - ${repzo_serial_number}`, sap_invoice)
184
- .commit();
185
- const result = await _create(SAP_HOST_URL, "/AddInvoice", sap_invoice);
186
- // console.log(result);
187
- try {
188
- if (body === null || body === void 0 ? void 0 : body._id) {
189
- body.integration_meta = (body === null || body === void 0 ? void 0 : body.integration_meta) || {};
190
- body.integration_meta.sync_to_sap_succeeded = true;
191
- await repzo.invoice.update(body._id, {
192
- integration_meta: body.integration_meta,
193
- });
194
- }
195
- }
196
- catch (e) {
197
- console.error(e);
198
- await actionLog
199
- .addDetail(`Failed updating integration_meta of Invoice: ${repzo_serial_number}`)
200
- .commit();
201
- }
202
- await actionLog
203
- .addDetail(`SAP Responded with `, result)
204
- .addDetail(`Repzo => SAP: Invoice - ${repzo_serial_number}`)
205
- .setStatus("success")
206
- .setBody(repzo_invoice)
207
- .commit();
208
- return result;
209
- }
210
- catch (e) {
239
+ if (!repzo_tax) throw `Tax with _id: ${item.tax._id} not found in Repzo`;
240
+ // Get Repzo UoM
241
+ const repzo_measureunit =
242
+ (_j =
243
+ repzo_measureunits === null || repzo_measureunits === void 0
244
+ ? void 0
245
+ : repzo_measureunits.data) === null || _j === void 0
246
+ ? void 0
247
+ : _j.find((m) => {
248
+ var _a, _b, _c;
249
+ return (
250
+ ((_a = m._id) === null || _a === void 0
251
+ ? void 0
252
+ : _a.toString()) ==
253
+ ((_c =
254
+ (_b = item.measureunit) === null || _b === void 0
255
+ ? void 0
256
+ : _b._id) === null || _c === void 0
257
+ ? void 0
258
+ : _c.toString())
259
+ );
260
+ });
261
+ if (!repzo_measureunit)
262
+ throw `Uom with _id: ${
263
+ (_k = item.measureunit) === null || _k === void 0 ? void 0 : _k._id
264
+ } not found in Repzo`;
265
+ // Get Repzo Product
266
+ const repzo_product =
267
+ (_l =
268
+ repzo_products === null || repzo_products === void 0
269
+ ? void 0
270
+ : repzo_products.data) === null || _l === void 0
271
+ ? void 0
272
+ : _l.find((p) => {
273
+ var _a, _b, _c;
274
+ return (
275
+ ((_a = p._id) === null || _a === void 0
276
+ ? void 0
277
+ : _a.toString()) ==
278
+ ((_c =
279
+ (_b = item.variant) === null || _b === void 0
280
+ ? void 0
281
+ : _b.product_id) === null || _c === void 0
282
+ ? void 0
283
+ : _c.toString())
284
+ );
285
+ });
286
+ if (!repzo_product)
287
+ throw `Product with _id: ${item.measureunit._id} not found in Repzo`;
288
+ items.push({
289
+ ItemCode: item.variant.variant_name,
290
+ Quantity: item.qty,
291
+ TaxCode: repzo_tax.integration_meta.TaxCode,
292
+ UnitPrice: (item.price * repzo_measureunit.factor) / 1000,
293
+ DiscountPerc: "0",
211
294
  //@ts-ignore
212
- console.error((e === null || e === void 0 ? void 0 : e.response) || e);
213
- await actionLog.setStatus("fail", e).setBody(body).commit();
214
- throw e;
295
+ LineTotal: item.total_before_tax / 1000,
296
+ UomCode: repzo_measureunit.integration_meta.ALTUOMID,
297
+ Brand:
298
+ (_m = repzo_product.integration_meta) === null || _m === void 0
299
+ ? void 0
300
+ : _m.BRAND,
301
+ Department:
302
+ ((_o =
303
+ repzo_rep === null || repzo_rep === void 0
304
+ ? void 0
305
+ : repzo_rep.integration_meta) === null || _o === void 0
306
+ ? void 0
307
+ : _o.DEPARTMENTCODE) ||
308
+ ((_p = options.data) === null || _p === void 0
309
+ ? void 0
310
+ : _p.DepartmentCode), // "D2",
311
+ });
215
312
  }
216
- };
217
- export const get_invoice_from_sap = async (serviceEndPoint, query) => {
313
+ const sap_invoice = {
314
+ RefNum: repzo_invoice.serial_number.formatted,
315
+ SalPersCode:
316
+ repzo_rep === null || repzo_rep === void 0
317
+ ? void 0
318
+ : repzo_rep.integration_id,
319
+ DocDate: moment(repzo_invoice.issue_date, "YYYY-MM-DD").format(
320
+ "YYYYMMDD"
321
+ ),
322
+ DocDueDate: moment(repzo_invoice.due_date, "YYYY-MM-DD").format(
323
+ "YYYYMMDD"
324
+ ),
325
+ ClientCode: repzo_client.client_code,
326
+ DiscountPerc: "0",
327
+ Note: repzo_invoice.comment,
328
+ WarehouseCode: repzo_warehouse.code,
329
+ LinesDetails: items,
330
+ };
331
+ // console.dir(sap_invoice, { depth: null });
332
+ actionLog.addDetail(
333
+ `Repzo => SAP: Invoice - ${repzo_serial_number}`,
334
+ sap_invoice
335
+ );
336
+ const result = await _create(SAP_HOST_URL, "/AddInvoice", sap_invoice);
337
+ // console.log(result);
218
338
  try {
219
- const sap_openInvoices = await _create(serviceEndPoint, "/OpenInvoices", {
220
- updatedAt: query === null || query === void 0 ? void 0 : query.updatedAt,
221
- Status: query === null || query === void 0 ? void 0 : query.Status,
222
- InvoiceId: query === null || query === void 0 ? void 0 : query.InvoiceId,
339
+ if (body === null || body === void 0 ? void 0 : body._id) {
340
+ body.integration_meta =
341
+ (body === null || body === void 0 ? void 0 : body.integration_meta) ||
342
+ {};
343
+ body.integration_meta.sync_to_sap_succeeded = true;
344
+ await repzo.invoice.update(body._id, {
345
+ integration_meta: body.integration_meta,
223
346
  });
224
- return sap_openInvoices === null || sap_openInvoices === void 0 ? void 0 : sap_openInvoices.OpenInvoices;
225
- }
226
- catch (e) {
227
- throw e;
347
+ }
348
+ } catch (e) {
349
+ console.error(e);
228
350
  }
351
+ await actionLog
352
+ .addDetail(`SAP Responded with `, result)
353
+ .addDetail(`Repzo => SAP: Invoice - ${repzo_serial_number}`)
354
+ .setStatus("success")
355
+ .setBody(repzo_invoice)
356
+ .commit();
357
+ return result;
358
+ } catch (e) {
359
+ //@ts-ignore
360
+ console.error((e === null || e === void 0 ? void 0 : e.response) || e);
361
+ await actionLog.setStatus("fail", e).setBody(body).commit();
362
+ throw e;
363
+ }
364
+ };
365
+ export const get_invoice_from_sap = async (serviceEndPoint, query) => {
366
+ try {
367
+ const sap_openInvoices = await _create(serviceEndPoint, "/OpenInvoices", {
368
+ updatedAt: query === null || query === void 0 ? void 0 : query.updatedAt,
369
+ Status: query === null || query === void 0 ? void 0 : query.Status,
370
+ InvoiceId: query === null || query === void 0 ? void 0 : query.InvoiceId,
371
+ });
372
+ return sap_openInvoices === null || sap_openInvoices === void 0
373
+ ? void 0
374
+ : sap_openInvoices.OpenInvoices;
375
+ } catch (e) {
376
+ throw e;
377
+ }
229
378
  };
@@ -1,2 +1,5 @@
1
1
  import { EVENT, Config } from "../types";
2
- export declare const create_payment: (event: EVENT, options: Config) => Promise<any>;
2
+ export declare const create_payment: (
3
+ event: EVENT,
4
+ options: Config
5
+ ) => Promise<any>;