@appcorp/stellar-solutions-invoice-module 0.1.3 → 0.1.5

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.
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { VistaFormElements } from '@appcorp/app-corp-vista/type/vista-form-elements';
3
+ export declare const renderCompanyFormElements: (elementProps: VistaFormElements) => React.JSX.Element;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /* eslint-disable */
3
+ var __assign = (this && this.__assign) || function () {
4
+ __assign = Object.assign || function(t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8
+ t[p] = s[p];
9
+ }
10
+ return t;
11
+ };
12
+ return __assign.apply(this, arguments);
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.renderCompanyFormElements = void 0;
19
+ var react_1 = __importDefault(require("react"));
20
+ var form_schema_1 = require("@appcorp/app-corp-vista/utils/form-schema");
21
+ var renderCompanyFormElements = function (elementProps) {
22
+ var _a;
23
+ var elementsArray = (_a = Object.entries(form_schema_1.vistaFormSchema)
24
+ .flatMap(function (_a) {
25
+ var _b, _c;
26
+ var key = _a[0], config = _a[1];
27
+ var Component = config;
28
+ return (_c = (_b = (elementProps[key] || [])) === null || _b === void 0 ? void 0 : _b.filter(function (props) { return props.enabled; })) === null || _c === void 0 ? void 0 : _c.map(function (props) { return ({
29
+ Component: Component,
30
+ key: key,
31
+ order: props.order,
32
+ props: props,
33
+ }); });
34
+ })) === null || _a === void 0 ? void 0 : _a.sort(function (a, b) { return a.order - b.order; });
35
+ return (react_1.default.createElement("div", { className: "grid grid-cols-3 gap-4" }, elementsArray === null || elementsArray === void 0 ? void 0 : elementsArray.map(function (_a, index) {
36
+ var key = _a.key, Component = _a.Component, props = _a.props;
37
+ return (react_1.default.createElement("div", { key: "".concat(key, "-").concat(index) },
38
+ react_1.default.createElement(Component, __assign({}, props))));
39
+ })));
40
+ };
41
+ exports.renderCompanyFormElements = renderCompanyFormElements;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const CompanySection: () => React.JSX.Element;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CompanySection = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var vista_vertical_divider_v4_1 = require("@appcorp/app-corp-vista/molecules/vista-vertical-divider-v4");
9
+ var company_form_elements_1 = require("./company-form-elements");
10
+ var context_1 = require("./context");
11
+ var CompanySection = function () {
12
+ var dynamicCompanyFormElements = (0, context_1.useInvoiceStateContext)().dynamicCompanyFormElements;
13
+ return (react_1.default.createElement("div", { className: "flex flex-col gap-4" },
14
+ react_1.default.createElement(vista_vertical_divider_v4_1.VistaVerticalDividerV4, { label: "Company" }),
15
+ (0, company_form_elements_1.renderCompanyFormElements)(dynamicCompanyFormElements)));
16
+ };
17
+ exports.CompanySection = CompanySection;
@@ -35,7 +35,7 @@ exports.staticCompanySection = (_a = {},
35
35
  error: '',
36
36
  handleOnChange: function () { return void 0; },
37
37
  id: 'ref',
38
- label: '',
38
+ label: 'Ref',
39
39
  order: 6,
40
40
  placeholder: '',
41
41
  required: true,
@@ -47,7 +47,7 @@ exports.staticCompanySection = (_a = {},
47
47
  error: '',
48
48
  handleOnChange: function () { return void 0; },
49
49
  id: 'date',
50
- label: '',
50
+ label: 'Date',
51
51
  order: 2,
52
52
  placeholder: '',
53
53
  required: false,
@@ -59,7 +59,7 @@ exports.staticCompanySection = (_a = {},
59
59
  error: '',
60
60
  handleOnChange: function () { return void 0; },
61
61
  id: 'expiryDate',
62
- label: '',
62
+ label: 'Expire Date',
63
63
  order: 3,
64
64
  placeholder: '',
65
65
  required: false,
@@ -71,7 +71,7 @@ exports.staticCompanySection = (_a = {},
71
71
  error: '',
72
72
  handleOnChange: function () { return void 0; },
73
73
  id: 'note',
74
- label: '',
74
+ label: 'Note',
75
75
  order: 5,
76
76
  placeholder: 'This is invoice for...',
77
77
  required: false,
@@ -103,6 +103,7 @@ var validate_1 = require("./validate");
103
103
  var generate_toast_1 = require("@appcorp/app-corp-vista/utils/generate-toast");
104
104
  var calculate_subtotal_1 = require("./calculate-subtotal");
105
105
  var context_1 = require("@appcorp/stellar-solutions-product-module/base-modules/product/context");
106
+ var date_fns_1 = require("date-fns");
106
107
  var useInvoiceState = function () {
107
108
  var _a = (0, react_1.useReducer)(reducer_1.invoiceReducer, reducer_1.initialInvoiceState), state = _a[0], dispatch = _a[1];
108
109
  var products = (0, context_1.useProductStateContext)().products;
@@ -313,9 +314,8 @@ var useInvoiceState = function () {
313
314
  body: JSON.stringify(__assign({})),
314
315
  });
315
316
  }
316
- // eslint-disable-next-line
317
317
  }
318
- catch (err) {
318
+ catch (_b) {
319
319
  (0, generate_toast_1.generateToast)({
320
320
  description: constants_1.messages.error,
321
321
  variant: vista_notification_type_1.VISTA_NOTIFICATION_V1_VARIANT.ERROR,
@@ -330,7 +330,16 @@ var useInvoiceState = function () {
330
330
  return [2 /*return*/];
331
331
  });
332
332
  }); }, [updateFetchNow]);
333
- var handleChange = function (key, value) {
333
+ var handleChange = (0, react_1.useCallback)(function (key, value) {
334
+ if (key === 'taxValue') {
335
+ dispatch({
336
+ type: actions_1.INVOICE_ACTION_TYPES.SET_INPUT_FIELD,
337
+ payload: {
338
+ key: key,
339
+ value: value,
340
+ },
341
+ });
342
+ }
334
343
  dispatch({
335
344
  type: actions_1.INVOICE_ACTION_TYPES.SET_INPUT_FIELD,
336
345
  payload: { key: key, value: String(value).trim(), },
@@ -342,6 +351,30 @@ var useInvoiceState = function () {
342
351
  dispatch({
343
352
  type: actions_1.INVOICE_ACTION_TYPES.CLEAR_ERRORS,
344
353
  });
354
+ }, []);
355
+ var handleDateChange = function (key, date) {
356
+ var _a, _b;
357
+ console.log('_???', key, date);
358
+ var selectedDate = (_a = new Date(date)) === null || _a === void 0 ? void 0 : _a.toISOString();
359
+ var expireDate = (_b = (0, date_fns_1.addDays)(selectedDate, 7)) === null || _b === void 0 ? void 0 : _b.toISOString();
360
+ if (key === 'expiryDate') {
361
+ dispatch({
362
+ type: actions_1.INVOICE_ACTION_TYPES.SET_INPUT_FIELD,
363
+ payload: { key: 'expiryDate', value: selectedDate },
364
+ });
365
+ return;
366
+ }
367
+ dispatch({
368
+ type: actions_1.INVOICE_ACTION_TYPES.SET_INPUT_FIELD,
369
+ payload: {
370
+ key: key,
371
+ value: selectedDate,
372
+ },
373
+ });
374
+ dispatch({
375
+ type: actions_1.INVOICE_ACTION_TYPES.SET_INPUT_FIELD,
376
+ payload: { key: 'expiryDate', value: expireDate },
377
+ });
345
378
  };
346
379
  var handleItemChangeServices = (0, react_1.useCallback)(function (_a) {
347
380
  var _b;
@@ -484,17 +517,24 @@ var useInvoiceState = function () {
484
517
  type: actions_1.INVOICE_ACTION_TYPES.CLEAR_ERRORS,
485
518
  });
486
519
  };
487
- var dynamicFormElements = (0, react_1.useMemo)(function () {
520
+ var dynamicCompanyFormElements = (0, react_1.useMemo)(function () {
488
521
  var _a, _b, _c, _d, _e;
489
522
  var elements = __assign({}, constants_1.staticCompanySection);
490
523
  var textInputElements = (_a = elements[form_schema_1.VISTA_FORM_ELEMENTS.TEXT_INPUT_V1]) === null || _a === void 0 ? void 0 : _a.sort(function (a, b) { return a.order - b.order; });
491
524
  if (textInputElements) {
492
- textInputElements === null || textInputElements === void 0 ? void 0 : textInputElements.map(function (_a, i) {
493
- var id = _a.id;
494
- textInputElements[i].value = state[id];
495
- textInputElements[i].handleOnChange = handleChange;
496
- textInputElements[i].error = state.errors[id];
497
- });
525
+ textInputElements[0].value = state.date ? (0, date_fns_1.format)(state === null || state === void 0 ? void 0 : state.date, 'yyyy-MM-dd') : '';
526
+ textInputElements[0].handleOnChange = handleDateChange;
527
+ textInputElements[0].error = state.errors.date;
528
+ textInputElements[1].value = state.expiryDate ? (0, date_fns_1.format)(new Date(state.expiryDate), 'yyyy-MM-dd') : '';
529
+ textInputElements[1].handleOnChange = handleDateChange;
530
+ textInputElements[1].error = state.errors.expiryDate;
531
+ textInputElements[2].value = state.note;
532
+ textInputElements[2].handleOnChange = handleChange;
533
+ textInputElements[2].error = state.errors.note;
534
+ textInputElements[3].value = state.ref;
535
+ textInputElements[3].handleOnChange = handleChange;
536
+ textInputElements[3].error = state.errors.ref;
537
+ return elements;
498
538
  }
499
539
  var textAreaElements = (_b = elements[form_schema_1.VISTA_FORM_ELEMENTS.TEXT_AREA_V1]) === null || _b === void 0 ? void 0 : _b.sort(function (a, b) { return a.order - b.order; });
500
540
  if (textAreaElements) {
@@ -536,7 +576,7 @@ var useInvoiceState = function () {
536
576
  // });
537
577
  }
538
578
  return elements;
539
- }, [state]);
579
+ }, [state, handleChange]);
540
580
  var dynamicPricingFormElements = (0, react_1.useMemo)(function () {
541
581
  var elements = __assign({}, constants_1.staticPricingSection);
542
582
  return elements;
@@ -575,6 +615,8 @@ var useInvoiceState = function () {
575
615
  value: v,
576
616
  }); };
577
617
  // textInputElements[i].error = state.errors[id];
618
+ textInputElements[4].value = state.services[0].rowTotal;
619
+ // textInputElements[i].error = state.errors[id];
578
620
  });
579
621
  }
580
622
  return elements;
@@ -592,6 +634,7 @@ var useInvoiceState = function () {
592
634
  value: Number(v),
593
635
  }); };
594
636
  // textInputElements[i].error = state.errors[id];
637
+ textInputElements[2].value = product.rowTotal;
595
638
  });
596
639
  }
597
640
  var comboboxElements = (_c = elements[form_schema_1.VISTA_FORM_ELEMENTS.COMBOBOX_V1]) === null || _c === void 0 ? void 0 : _c.sort(function (a, b) { return a.order - b.order; });
@@ -638,11 +681,11 @@ var useInvoiceState = function () {
638
681
  order: 2,
639
682
  },
640
683
  ];
641
- return __assign(__assign({}, state), { byIdError: byIdError, byIdLoading: byIdLoading, clearSearch: clearSearch, closeDrawer: closeDrawer, deleteError: deleteError, deleteLoading: deleteLoading, dispatch: dispatch, dynamicFormElements: dynamicFormElements, dynamicPricingFormElements: dynamicPricingFormElements, dynamicProductFormElements: dynamicProductFormElements, dynamicServiceFormElements: dynamicServiceFormElements, handleChange: handleChange, handleNextClick: handleNextClick, handlePageLimit: handlePageLimit, handlePreviousClick: handlePreviousClick, handleSubmit: handleSubmit,
684
+ return __assign(__assign({}, state), { byIdError: byIdError, byIdLoading: byIdLoading, clearSearch: clearSearch, closeDrawer: closeDrawer, deleteError: deleteError, deleteLoading: deleteLoading, dispatch: dispatch, dynamicCompanyFormElements: dynamicCompanyFormElements, dynamicPricingFormElements: dynamicPricingFormElements, dynamicProductFormElements: dynamicProductFormElements, dynamicServiceFormElements: dynamicServiceFormElements, handleChange: handleChange, handleNextClick: handleNextClick, handlePageLimit: handlePageLimit, handlePreviousClick: handlePreviousClick, handleSubmit: handleSubmit,
642
685
  // handleUploadImage,
643
686
  headerActions: headerActions, listError: listError, listFetchNow: listFetchNow, listLoading: listLoading, rowActions: rowActions, searchOnChange: searchOnChange, updateError: updateError, updateLoading: updateLoading });
644
687
  };
645
- exports.InvoiceStateContext = (0, react_1.createContext)(__assign(__assign({}, reducer_1.initialInvoiceState), { byIdError: undefined, byIdLoading: false, clearSearch: function () { return void 0; }, closeDrawer: function () { return void 0; }, deleteError: undefined, deleteLoading: false, dispatch: function () { return void 0; }, dynamicFormElements: {}, dynamicPricingFormElements: {}, dynamicProductFormElements: {}, dynamicServiceFormElements: {}, handleChange: function () { return void 0; }, handleNextClick: function () { return void 0; }, handlePageLimit: function () { return void 0; }, handlePreviousClick: function () { return void 0; }, handleSubmit: function () { return void 0; },
688
+ exports.InvoiceStateContext = (0, react_1.createContext)(__assign(__assign({}, reducer_1.initialInvoiceState), { byIdError: undefined, byIdLoading: false, clearSearch: function () { return void 0; }, closeDrawer: function () { return void 0; }, deleteError: undefined, deleteLoading: false, dispatch: function () { return void 0; }, dynamicCompanyFormElements: {}, dynamicPricingFormElements: {}, dynamicProductFormElements: {}, dynamicServiceFormElements: {}, handleChange: function () { return void 0; }, handleNextClick: function () { return void 0; }, handlePageLimit: function () { return void 0; }, handlePreviousClick: function () { return void 0; }, handleSubmit: function () { return void 0; },
646
689
  // handleUploadImage: () => void 0,
647
690
  headerActions: [], listError: undefined, listFetchNow: function () { return void 0; }, listLoading: false, rowActions: [], searchOnChange: function () { return void 0; }, updateError: undefined, updateLoading: false }));
648
691
  var InvoiceStateContextProvider = function (_a) {
@@ -18,6 +18,7 @@ var products_form_section_1 = require("./products-form-section");
18
18
  var pricing_form_section_1 = require("./pricing-form-section");
19
19
  var add_service_product_section_1 = require("./add-service-product-section");
20
20
  var services_form_section_1 = require("./services-form-section");
21
+ var company_form_section_1 = require("./company-form-section");
21
22
  var InvoiceForm = function () {
22
23
  // const updated = useMemo(() => {
23
24
  // const elements: VistaFormElements = { ...dynamicFormElements };
@@ -59,6 +60,7 @@ var InvoiceForm = function () {
59
60
  // return elements;
60
61
  // }, [dynamicFormElements, translationMap]);
61
62
  return (react_1.default.createElement("div", { className: "flex flex-col gap-8" },
63
+ react_1.default.createElement(company_form_section_1.CompanySection, null),
62
64
  react_1.default.createElement(services_form_section_1.ServicesSection, null),
63
65
  react_1.default.createElement(products_form_section_1.ProductsSection, null),
64
66
  react_1.default.createElement(add_service_product_section_1.AddServiceProductSection, null),
@@ -10,6 +10,15 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
13
22
  Object.defineProperty(exports, "__esModule", { value: true });
14
23
  exports.initialInvoiceState = void 0;
15
24
  exports.invoiceReducer = invoiceReducer;
@@ -116,11 +125,8 @@ function invoiceReducer(state, action) {
116
125
  // };
117
126
  case actions_1.INVOICE_ACTION_TYPES.SET_PAGE_LIMIT:
118
127
  return __assign(__assign({}, state), { pageLimit: action.payload.pageLimit });
119
- // case INVOICE_ACTION_TYPES.SET_PRODUCTS:
120
- // return {
121
- // ...state,
122
- // products: [...action.payload.products],
123
- // };
128
+ case actions_1.INVOICE_ACTION_TYPES.SET_INVOICES:
129
+ return __assign(__assign({}, state), { invoices: __spreadArray([], action.payload.invoices, true) });
124
130
  case actions_1.INVOICE_ACTION_TYPES.SET_SEARCH_QUERY:
125
131
  return __assign(__assign({}, state), { searchQuery: action.payload.searchQuery });
126
132
  case actions_1.INVOICE_ACTION_TYPES.SET_FORM:
@@ -12,7 +12,7 @@ export interface InvoiceContextType {
12
12
  deleteError?: Error;
13
13
  deleteLoading: boolean;
14
14
  dispatch: Dispatch<InvoiceActions>;
15
- dynamicFormElements: VistaFormElements;
15
+ dynamicCompanyFormElements: VistaFormElements;
16
16
  dynamicPricingFormElements: VistaFormElements;
17
17
  dynamicProductFormElements: VistaFormElements;
18
18
  dynamicServiceFormElements: VistaFormElements;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appcorp/stellar-solutions-invoice-module",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "scripts": {
5
5
  "build": "yarn clean && yarn build:ts && cp package.json lib && cp README.md lib",
6
6
  "build:next": "next build",