@nomalism-com/types 0.37.6 → 0.37.7
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.
- package/.editorconfig +9 -0
- package/.prettierrc +7 -0
- package/eslint.config.mjs +39 -0
- package/package-lock.json +4327 -0
- package/package.json +1 -4
- package/src/index.ts +3 -0
- package/src/main.ts +672 -0
- package/src/modules/document/billOfLading/interfaces.ts +26 -0
- package/src/modules/document/billOfLading/route.schema.ts +32 -0
- package/src/modules/document/inventario/interface.ts +19 -0
- package/src/modules/document/inventario/route.schema.ts +16 -0
- package/src/modules/document/materialEntrance/interfaces.ts +207 -0
- package/src/modules/document/materialEntrance/route.schema.ts +53 -0
- package/src/modules/document/order/interfaces.ts +172 -0
- package/src/modules/document/order/route.schema.ts +61 -0
- package/src/modules/document/productionOrder/interfaces.ts +12 -0
- package/src/modules/document/productionOrder/route.schema.ts +13 -0
- package/src/modules/document/proforma/interfaces.ts +15 -0
- package/src/modules/document/proforma/route.schema.ts +14 -0
- package/src/modules/document/propostaFornecedor/interfaces.ts +17 -0
- package/src/modules/document/propostaFornecedor/route.schema.ts +21 -0
- package/src/modules/document/propostaSheets/interface.ts +113 -0
- package/src/modules/document/propostaSheets/route.schema.ts +45 -0
- package/src/modules/document/providerCreditNoteFromReturn/interfaces.ts +48 -0
- package/src/modules/document/providerCreditNoteFromReturn/route.schema.ts +41 -0
- package/src/modules/document/providerFinancialCreditNote/interfaces.ts +36 -0
- package/src/modules/document/providerFinancialCreditNote/route.schema.ts +40 -0
- package/src/modules/document/providerServiceInvoice/interfaces.ts +20 -0
- package/src/modules/document/providerServiceInvoice/route.schema.ts +26 -0
- package/src/modules/document/purchase/interfaces.ts +112 -0
- package/src/modules/document/purchase/route.schema.ts +51 -0
- package/src/modules/document/quebra/interfaces.ts +46 -0
- package/src/modules/document/quebra/route.schema.ts +25 -0
- package/src/modules/document/returnToProvider/interface.ts +59 -0
- package/src/modules/document/returnToProvider/route.schema.ts +27 -0
- package/src/modules/document/transformado/interfaces.ts +31 -0
- package/src/modules/document/transformado/route.schema.ts +26 -0
- package/src/modules/document/upfrontReturn/interfaces.ts +17 -0
- package/src/modules/document/upfrontReturn/route.schema.ts +11 -0
- package/src/modules/documentManagement/multimedia/interfaces.ts +22 -0
- package/src/modules/documentManagement/multimedia/route.schema.ts +9 -0
- package/src/modules/integration/emailLog/interfaces.ts +111 -0
- package/src/modules/integration/emailLog/route.schema.ts +18 -0
- package/src/modules/integration/emailTemplate/interfaces.ts +55 -0
- package/src/modules/integration/emailTemplate/route.schema.ts +95 -0
- package/src/modules/integration/emailTemplateAttachment/interfaces.ts +22 -0
- package/src/modules/integration/emailTemplateAttachment/route.schema.ts +12 -0
- package/src/modules/integration/emailVerification/interfaces.ts +30 -0
- package/src/modules/integration/emailVerification/route.schema.ts +34 -0
- package/src/modules/integration/googleFilePermission/interfaces.ts +32 -0
- package/src/modules/integration/googleFilePermission/route.schema.ts +15 -0
- package/src/modules/integration/googleSheets/interfaces.ts +98 -0
- package/src/modules/integration/googleSheets/route.schema.ts +52 -0
- package/src/modules/integration/observation/interfaces.ts +61 -0
- package/src/modules/integration/observation/route.schema.ts +40 -0
- package/src/modules/integration/observationType/interfaces.ts +37 -0
- package/src/modules/integration/observationType/route.schema.ts +17 -0
- package/src/modules/integration/projectInfo/interfaces.ts +26 -0
- package/src/modules/integration/projectInfo/route.schema.ts +18 -0
- package/src/modules/integration/settings/interfaces.ts +31 -0
- package/src/modules/integration/settings/route.schema.ts +24 -0
- package/src/modules/print/npc/interfaces.ts +34 -0
- package/src/modules/print/npc/route.schema.ts +21 -0
- package/src/modules/print/printer/interfaces.ts +47 -0
- package/src/modules/print/printer/route.schema.ts +60 -0
- package/src/modules/print/schedulePrintJob/interfaces.ts +48 -0
- package/src/modules/print/schedulePrintJob/route.schema.ts +39 -0
- package/src/modules/stock/chat/interfaces.ts +82 -0
- package/src/modules/stock/chat/route.schema.ts +28 -0
- package/src/modules/stock/chatRapidMessage/interface.ts +31 -0
- package/src/modules/stock/chatRapidMessage/route.schema.ts +18 -0
- package/src/modules/stock/dashboard/interface.ts +25 -0
- package/src/modules/stock/dashboard/route.schema.ts +11 -0
- package/src/modules/stock/file/interface.ts +37 -0
- package/src/modules/stock/file/route.schema.ts +37 -0
- package/src/modules/stock/location/interface.ts +77 -0
- package/src/modules/stock/location/route.schema.ts +57 -0
- package/src/modules/stock/prison/interface.ts +70 -0
- package/src/modules/stock/prison/route.schema.ts +50 -0
- package/src/modules/stock/productGoogleSheets/interface.ts +339 -0
- package/src/modules/stock/productGoogleSheets/route.schema.ts +146 -0
- package/src/modules/stock/productImage/interface.ts +69 -0
- package/src/modules/stock/productImage/route.schema.ts +52 -0
- package/src/modules/stock/promotion/interface.ts +61 -0
- package/src/modules/stock/promotion/route.schema.ts +39 -0
- package/src/modules/stock/promotionAssoc/interface.ts +62 -0
- package/src/modules/stock/promotionAssoc/route.schema.ts +35 -0
- package/src/modules/stock/queryList/interfaces.ts +56 -0
- package/src/modules/stock/queryList/route.schema.ts +37 -0
- package/src/modules/stock/queryParameter/interfaces.ts +72 -0
- package/src/modules/stock/queryParameter/route.schema.ts +36 -0
- package/src/modules/stock/recurrentTasks/interface.ts +12 -0
- package/src/modules/stock/returnReason/interfaces.ts +23 -0
- package/src/modules/stock/returnReason/route.schema.ts +14 -0
- package/src/modules/stock/savedEmPicking/interfaces.ts +37 -0
- package/src/modules/stock/savedEmPicking/route.schema.ts +113 -0
- package/src/modules/stock/savedProviderProposal/interfaces.ts +32 -0
- package/src/modules/stock/savedProviderProposal/route.schema.ts +16 -0
- package/src/modules/stock/sideMenu/interface.ts +48 -0
- package/src/modules/stock/sideMenu/route.schema.ts +20 -0
- package/src/modules/stock/stockMovement/interface.ts +78 -0
- package/src/modules/stock/stockMovement/route.schema.ts +34 -0
- package/src/modules/stock/tag/interface.ts +36 -0
- package/src/modules/stock/tag/route.schema.ts +30 -0
- package/src/modules/stock/task/interface.ts +126 -0
- package/src/modules/stock/task/route.schema.ts +48 -0
- package/src/modules/stock/taskMessage/interface.ts +18 -0
- package/src/modules/stock/taskMessage/route.schema.ts +19 -0
- package/src/modules/stock/taskRead/interface.ts +17 -0
- package/src/modules/stock/taskRead/route.schema.ts +18 -0
- package/src/modules/stock/typeOfLocation/interface.ts +51 -0
- package/src/modules/stock/typeOfLocation/route.schema.ts +29 -0
- package/src/modules/stock/unitOfMeasure/interface.ts +64 -0
- package/src/modules/stock/unitOfMeasure/route.schema.ts +41 -0
- package/src/modules/stock/vatTax/interface.ts +55 -0
- package/src/modules/stock/vatTax/route.schema.ts +33 -0
- package/src/modules/stock/vatTaxZone/interface.ts +63 -0
- package/src/modules/stock/vatTaxZone/route.schema.ts +42 -0
- package/src/modules/stock/vatValidation/interfaces.ts +10 -0
- package/src/modules/stock/vatValidation/route.schema.ts +8 -0
- package/src/modules/stock/workflow/interfaces.ts +64 -0
- package/src/modules/stock/workflow/route.schema.ts +28 -0
- package/src/modules/supply/batch/interface.ts +0 -0
- package/src/modules/supply/documentHeader/interfaces.ts +497 -0
- package/src/modules/supply/documentHeader/route.schema.ts +371 -0
- package/src/modules/supply/documentHeaderHistory/interfaces.ts +15 -0
- package/src/modules/supply/documentLine/interfaces.ts +210 -0
- package/src/modules/supply/documentLine/route.schema.ts +108 -0
- package/src/modules/supply/documentLineAssoc/interfaces.ts +52 -0
- package/src/modules/supply/documentLineAssoc/route.schema.ts +16 -0
- package/src/modules/supply/documentLineMT/interface.ts +27 -0
- package/src/modules/supply/documentLineMT/route.schema.ts +18 -0
- package/src/modules/supply/documentLineNote/interfaces.ts +53 -0
- package/src/modules/supply/documentLineNote/route.schema.ts +19 -0
- package/src/modules/supply/documentLineRM/interface.ts +34 -0
- package/src/modules/supply/documentLineRM/route.schema.ts +25 -0
- package/src/modules/supply/documentSet/interface.ts +31 -0
- package/src/modules/supply/documentSet/route.schema.ts +20 -0
- package/src/modules/supply/documentType/interfaces.ts +214 -0
- package/src/modules/supply/documentType/route.schema.ts +75 -0
- package/src/modules/supply/externalDocumentHeader/interface.ts +120 -0
- package/src/modules/supply/externalDocumentHeader/route.schema.ts +79 -0
- package/src/modules/supply/externalDocumentType/interface.ts +14 -0
- package/src/modules/supply/orderManagement/interface.ts +49 -0
- package/src/modules/supply/orderManagement/route.schema.ts +0 -0
- package/src/modules/supply/payment/interface.ts +229 -0
- package/src/modules/supply/payment/route.schema.ts +122 -0
- package/src/modules/supply/preSale/interface.ts +92 -0
- package/src/modules/supply/preSale/route.schema.ts +75 -0
- package/src/modules/supply/preSaleProduct/interface.ts +16 -0
- package/src/modules/supply/preSaleProduct/route.schema.ts +7 -0
- package/src/modules/supply/schedule/interface.ts +47 -0
- package/src/modules/supply/schedule/route.schema.ts +14 -0
- package/src/modules/supply/startDocumentHeaderLastUpdate/interface.ts +15 -0
- package/src/modules/tickets/channel/interfaces.ts +35 -0
- package/src/modules/tickets/channel/route.schema.ts +24 -0
- package/src/modules/tickets/clt/interfaces.ts +26 -0
- package/src/modules/tickets/clt/route.schema.ts +24 -0
- package/src/modules/tickets/language/interfaces.ts +25 -0
- package/src/modules/tickets/language/route.schema.ts +28 -0
- package/src/modules/tickets/tickets/interfaces.ts +80 -0
- package/src/modules/tickets/tickets/route.schema.ts +19 -0
- package/src/modules/user/bankData/interface.ts +64 -0
- package/src/modules/user/bankData/route.schema.ts +40 -0
- package/src/modules/user/chatSubscribers/interfaces.ts +34 -0
- package/src/modules/user/chatSubscribers/route.schema.ts +12 -0
- package/src/modules/user/clientType/interface.ts +47 -0
- package/src/modules/user/clientType/route.schema.ts +31 -0
- package/src/modules/user/clients/interface.ts +138 -0
- package/src/modules/user/clients/route.schema.ts +87 -0
- package/src/modules/user/commissioner/interface.ts +110 -0
- package/src/modules/user/commissioner/route.schema.ts +65 -0
- package/src/modules/user/country/interface.ts +54 -0
- package/src/modules/user/country/route.schema.ts +36 -0
- package/src/modules/user/deliveryMethods/interfaces.ts +28 -0
- package/src/modules/user/deliveryMethods/route.schema.ts +15 -0
- package/src/modules/user/favorites/interfaces.ts +28 -0
- package/src/modules/user/favorites/route.schema.ts +19 -0
- package/src/modules/user/groupPermissions/interface.ts +32 -0
- package/src/modules/user/groupPermissions/route.schema.ts +11 -0
- package/src/modules/user/language/interface.ts +47 -0
- package/src/modules/user/language/route.schema.ts +28 -0
- package/src/modules/user/maturityDates/interfaces.ts +31 -0
- package/src/modules/user/maturityDates/route.schema.ts +18 -0
- package/src/modules/user/password/interfaces.ts +21 -0
- package/src/modules/user/password/route.schema.ts +22 -0
- package/src/modules/user/paymentMethods/interfaces.ts +72 -0
- package/src/modules/user/paymentMethods/route.schema.ts +27 -0
- package/src/modules/user/permissions/interface.ts +34 -0
- package/src/modules/user/permissions/route.schema.ts +11 -0
- package/src/modules/user/persona/interface.ts +157 -0
- package/src/modules/user/persona/route.schema.ts +101 -0
- package/src/modules/user/providerType/interface.ts +47 -0
- package/src/modules/user/providerType/route.schema.ts +28 -0
- package/src/modules/user/providers/interface.ts +130 -0
- package/src/modules/user/providers/route.schema.ts +85 -0
- package/src/modules/user/purchaseConditions/interface.ts +58 -0
- package/src/modules/user/purchaseConditions/route.schema.ts +33 -0
- package/src/modules/user/reasonForExemption/interface.ts +53 -0
- package/src/modules/user/reasonForExemption/route.schema.ts +34 -0
- package/src/modules/user/refreshToken/interface.ts +19 -0
- package/src/modules/user/refreshToken/route.schema.ts +10 -0
- package/src/modules/user/segmentsArea/interface.ts +49 -0
- package/src/modules/user/segmentsArea/route.schema.ts +30 -0
- package/src/modules/user/sessions/interface.ts +24 -0
- package/src/modules/user/sessions/route.schema.ts +10 -0
- package/src/modules/user/shippings/interface.ts +57 -0
- package/src/modules/user/shippings/route.schema.ts +35 -0
- package/src/modules/user/storeOperator/interface.ts +42 -0
- package/src/modules/user/storeOperator/route.schema.ts +45 -0
- package/src/modules/user/swift/interface.ts +55 -0
- package/src/modules/user/swift/route.schema.ts +36 -0
- package/src/modules/user/tenant/interface.ts +59 -0
- package/src/modules/user/tenant/route.schema.ts +46 -0
- package/src/modules/user/theme/interfaces.ts +21 -0
- package/src/modules/user/theme/route.schema.ts +19 -0
- package/src/modules/user/userPermissions/interface.ts +28 -0
- package/src/modules/user/userPermissions/route.schema.ts +12 -0
- package/src/modules/user/userPositions/interface.ts +47 -0
- package/src/modules/user/userPositions/route.schema.ts +29 -0
- package/src/modules/user/userTokens/interface.ts +41 -0
- package/src/modules/user/userTokens/route.schema.ts +17 -0
- package/src/modules/user/users/interface.ts +177 -0
- package/src/modules/user/users/route.schema.ts +58 -0
- package/src/modules/user/vehicles/interfaces.ts +31 -0
- package/src/modules/user/vehicles/route.schema.ts +17 -0
- package/src/modules/user/zipCode/interfaces.ts +27 -0
- package/src/modules/user/zipCode/route.schema.ts +26 -0
- package/src/modules/view/adminPanel/interfaces.ts +180 -0
- package/src/modules/view/errorLog/interfaces.ts +36 -0
- package/src/modules/view/errorLog/route.schema.ts +25 -0
- package/src/shared/entities/documentManagement.ts +16 -0
- package/src/shared/entities/integration.ts +136 -0
- package/src/shared/entities/print.ts +49 -0
- package/src/shared/entities/stock.ts +1248 -0
- package/src/shared/entities/tickets.ts +82 -0
- package/src/shared/entities/user.ts +540 -0
- package/src/shared/errors/documentManagementErrors.ts +13 -0
- package/src/shared/errors/integrationErrors.ts +44 -0
- package/src/shared/errors/stockErrors.ts +267 -0
- package/src/shared/errors/userErrors.ts +108 -0
- package/src/shared/errors/viewErrors.ts +6 -0
- package/src/shared/interface.ts +548 -0
- package/src/shared/messages.ts +141 -0
- package/tsconfig.json +20 -0
- package/tsup.config.ts +10 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
import { messages } from '../../../shared/messages';
|
|
3
|
+
import * as IShared from '../../../shared/interface';
|
|
4
|
+
import {
|
|
5
|
+
ICheckLinesToReturnRequest,
|
|
6
|
+
ICheckLinesToReturnLinesRequest,
|
|
7
|
+
checkLinesToReturnOptions,
|
|
8
|
+
} from './interface';
|
|
9
|
+
|
|
10
|
+
// check lines to return
|
|
11
|
+
const checkLinesToReturnLinesKeys: IShared.IRouteRequest<ICheckLinesToReturnLinesRequest> = {
|
|
12
|
+
document_line_assoc_id: joi.string().uuid().required(),
|
|
13
|
+
document_line_id: joi.string().uuid().required(),
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const checkLinesToReturnBodyKeys: IShared.IRouteRequest<ICheckLinesToReturnRequest> = {
|
|
17
|
+
option: joi
|
|
18
|
+
.string()
|
|
19
|
+
.valid(...checkLinesToReturnOptions)
|
|
20
|
+
.required(),
|
|
21
|
+
lines: joi.array().items(joi.object().keys(checkLinesToReturnLinesKeys).required()).required(),
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const checkLinesToReturnBody = joi
|
|
25
|
+
.object()
|
|
26
|
+
.keys(checkLinesToReturnBodyKeys)
|
|
27
|
+
.messages(messages);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as IShared from '../../../shared/interface';
|
|
2
|
+
|
|
3
|
+
export const Route = 'transformado';
|
|
4
|
+
export const UpperName = 'Transformado';
|
|
5
|
+
export const LowerName = UpperName[0].toLowerCase() + UpperName.substring(1);
|
|
6
|
+
|
|
7
|
+
export interface IProducts {
|
|
8
|
+
id: string;
|
|
9
|
+
quantity: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface ITransformar {
|
|
13
|
+
product_id: string;
|
|
14
|
+
quantity: number;
|
|
15
|
+
price_sale: number;
|
|
16
|
+
price_cost: number;
|
|
17
|
+
out_products: IProducts[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface IDestransformar {
|
|
21
|
+
product_id: string;
|
|
22
|
+
quantity: number;
|
|
23
|
+
in_products: IProducts[];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface IRepository {
|
|
27
|
+
transformar(data: ITransformar): Promise<string>;
|
|
28
|
+
destransformar(data: IDestransformar): Promise<string>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type IController = IShared.IEntityWithUserToken<IRepository>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
|
|
3
|
+
import * as IShared from '../../../shared/interface';
|
|
4
|
+
import { messages } from '../../../shared/messages';
|
|
5
|
+
import { IProducts, ITransformar, IDestransformar } from './interfaces';
|
|
6
|
+
|
|
7
|
+
const productsKeys: IShared.IRouteRequestWithStamps<IProducts> = {
|
|
8
|
+
id: joi.string().uuid().required().invalid(joi.ref('/product_id')),
|
|
9
|
+
quantity: joi.number().positive().required(),
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const transformarKeys: IShared.IRouteRequestWithStamps<ITransformar> = {
|
|
13
|
+
product_id: joi.string().uuid().required(),
|
|
14
|
+
quantity: joi.number().positive().required(),
|
|
15
|
+
price_cost: joi.number().positive().allow(0).required(),
|
|
16
|
+
price_sale: joi.number().positive().allow(0).required(),
|
|
17
|
+
out_products: joi.array().items(joi.object().keys(productsKeys)).min(1),
|
|
18
|
+
};
|
|
19
|
+
export const transformarBody = joi.object().keys(transformarKeys).messages(messages);
|
|
20
|
+
|
|
21
|
+
const destransformarKeys: IShared.IRouteRequestWithStamps<IDestransformar> = {
|
|
22
|
+
product_id: joi.string().uuid().required(),
|
|
23
|
+
quantity: joi.number().positive().required(),
|
|
24
|
+
in_products: joi.array().items(joi.object().keys(productsKeys)).min(1),
|
|
25
|
+
};
|
|
26
|
+
export const destransformarBody = joi.object().keys(destransformarKeys).messages(messages);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as IShared from '../../../shared/interface';
|
|
2
|
+
|
|
3
|
+
export const Route = 'upfrontReturn';
|
|
4
|
+
export const UpperName = 'UpfrontReturn';
|
|
5
|
+
export const LowerName = UpperName[0].toLowerCase() + UpperName.substring(1);
|
|
6
|
+
|
|
7
|
+
export interface ICreateRequest {
|
|
8
|
+
current_account: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface IRepository {
|
|
12
|
+
create(id: IShared.IFindByIdRequest, body: ICreateRequest): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type IController = IShared.IEntityWithUserToken<IRepository>;
|
|
16
|
+
|
|
17
|
+
export type IApi = IRepository;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
|
|
3
|
+
import * as IShared from '../../../shared/interface';
|
|
4
|
+
import { messages } from '../../../shared/messages';
|
|
5
|
+
import { ICreateRequest } from './interfaces';
|
|
6
|
+
|
|
7
|
+
const createBodyKeys: IShared.IRouteRequestWithStamps<ICreateRequest> = {
|
|
8
|
+
current_account: joi.boolean().required(),
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const createBody = joi.object().keys(createBodyKeys).messages(messages);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Multimedia } from '../../../shared/entities/documentManagement';
|
|
2
|
+
|
|
3
|
+
export type Entity = Multimedia;
|
|
4
|
+
export const Route = 'multimedia';
|
|
5
|
+
export const UpperName = 'Multimedia';
|
|
6
|
+
export const LowerName = UpperName[0].toLowerCase() + UpperName.substring(1);
|
|
7
|
+
|
|
8
|
+
export interface IFindByIdRequest {
|
|
9
|
+
download?: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface IRepository {
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
create(multipartFormData: any, headers?: any): Promise<Entity>;
|
|
15
|
+
findById(multimedia_id: string): Promise<Entity | null>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface IController extends Omit<IRepository, 'findById'> {
|
|
19
|
+
findById(multimedia_id: string, params: IFindByIdRequest): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type IApi = Omit<IRepository, 'findById'>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
import { IFindByIdRequest } from './interfaces';
|
|
3
|
+
import * as IShared from '../../../shared/interface';
|
|
4
|
+
import { messages } from '../../../shared/messages';
|
|
5
|
+
|
|
6
|
+
const findByIdQueryKeys: IShared.IRouteRequest<IFindByIdRequest> = {
|
|
7
|
+
download: joi.boolean().optional(),
|
|
8
|
+
};
|
|
9
|
+
export const findByIdQuery = joi.object().keys(findByIdQueryKeys).messages(messages);
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import * as IShared from '../../../shared/interface';
|
|
2
|
+
import { EmailLog } from '../../../shared/entities/integration';
|
|
3
|
+
|
|
4
|
+
export type Entity = EmailLog;
|
|
5
|
+
export const Route = 'email_log';
|
|
6
|
+
export const UpperName = 'EmailLog';
|
|
7
|
+
export const LowerName = UpperName[0].toLowerCase() + UpperName.substring(1);
|
|
8
|
+
|
|
9
|
+
export interface IFindRequest {
|
|
10
|
+
date_start: Date;
|
|
11
|
+
date_end: Date;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface IFindResponse {
|
|
15
|
+
id: string;
|
|
16
|
+
template: string;
|
|
17
|
+
created_at: Date;
|
|
18
|
+
to: string;
|
|
19
|
+
subject: string;
|
|
20
|
+
sent: boolean;
|
|
21
|
+
retried: boolean;
|
|
22
|
+
error: string | null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface IEmailAddress {
|
|
26
|
+
name: string;
|
|
27
|
+
address: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface IEmailAttachment {
|
|
31
|
+
path: string;
|
|
32
|
+
filename: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const SendGridCallbackEventEnum: {
|
|
36
|
+
open: 'open';
|
|
37
|
+
delivered: 'delivered';
|
|
38
|
+
click: 'click';
|
|
39
|
+
processed: 'processed';
|
|
40
|
+
dropped: 'dropped';
|
|
41
|
+
deferred: 'deferred';
|
|
42
|
+
bounce: 'bounce';
|
|
43
|
+
} = {
|
|
44
|
+
open: 'open',
|
|
45
|
+
delivered: 'delivered',
|
|
46
|
+
click: 'click',
|
|
47
|
+
processed: 'processed',
|
|
48
|
+
dropped: 'dropped',
|
|
49
|
+
deferred: 'deferred',
|
|
50
|
+
bounce: 'bounce',
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export type ISendGridCallbackEvent =
|
|
54
|
+
(typeof SendGridCallbackEventEnum)[keyof typeof SendGridCallbackEventEnum];
|
|
55
|
+
|
|
56
|
+
export const sendGridCallbackEvents = Object.keys(SendGridCallbackEventEnum);
|
|
57
|
+
|
|
58
|
+
export interface ISendGridCallbacks {
|
|
59
|
+
email: string;
|
|
60
|
+
event: ISendGridCallbackEvent;
|
|
61
|
+
event_time: Date;
|
|
62
|
+
ip: string | null;
|
|
63
|
+
useragent: string | null;
|
|
64
|
+
// event dependent
|
|
65
|
+
reason: string | null;
|
|
66
|
+
type: string | null;
|
|
67
|
+
status: string | null;
|
|
68
|
+
bounce_classification: string | null;
|
|
69
|
+
response: string | null;
|
|
70
|
+
url: string | null;
|
|
71
|
+
attempt: number | null;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface IFindByIdResponse {
|
|
75
|
+
id: string;
|
|
76
|
+
owner_id: string | null;
|
|
77
|
+
chat_id: string | null;
|
|
78
|
+
template: string;
|
|
79
|
+
created_at: Date;
|
|
80
|
+
|
|
81
|
+
sent: boolean;
|
|
82
|
+
retried: boolean;
|
|
83
|
+
accepted: string[];
|
|
84
|
+
rejected: string[];
|
|
85
|
+
|
|
86
|
+
from: IEmailAddress;
|
|
87
|
+
to: IEmailAddress[];
|
|
88
|
+
cc: IEmailAddress[];
|
|
89
|
+
bcc: IEmailAddress[];
|
|
90
|
+
subject: string;
|
|
91
|
+
html: string;
|
|
92
|
+
attachments: IEmailAttachment[];
|
|
93
|
+
|
|
94
|
+
error: string | null;
|
|
95
|
+
|
|
96
|
+
callbacks: ISendGridCallbacks[];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface ICheckSent {
|
|
100
|
+
document_header_ids: string[];
|
|
101
|
+
}
|
|
102
|
+
export interface ICheckSentResponse {
|
|
103
|
+
[document_header_id: string]: string | null;
|
|
104
|
+
}
|
|
105
|
+
export interface IRepository {
|
|
106
|
+
find(params: IFindRequest): Promise<IFindResponse[]>;
|
|
107
|
+
findById(selector: IShared.IFindByIdRequest): Promise<IFindByIdResponse>;
|
|
108
|
+
checkSent(data: ICheckSent): Promise<ICheckSentResponse>;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export type IApi = IRepository;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
import { messages } from '../../../shared/messages';
|
|
3
|
+
import { IFindRequest, ICheckSent } from './interfaces';
|
|
4
|
+
|
|
5
|
+
export const findQuery = joi
|
|
6
|
+
.object<IFindRequest>()
|
|
7
|
+
.keys({
|
|
8
|
+
date_start: joi.date().required(),
|
|
9
|
+
date_end: joi.date().required(),
|
|
10
|
+
})
|
|
11
|
+
.messages(messages);
|
|
12
|
+
|
|
13
|
+
export const checkSentBody = joi
|
|
14
|
+
.object<ICheckSent>()
|
|
15
|
+
.keys({
|
|
16
|
+
document_header_ids: joi.array().items(joi.string().uuid().required()).required(),
|
|
17
|
+
})
|
|
18
|
+
.messages(messages);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as IShared from '../../../shared/interface';
|
|
2
|
+
import { EmailTemplate, EmailTemplateAttachment } from '../../../shared/entities/integration';
|
|
3
|
+
import { IEmailAddress, IEmailAttachment } from '../emailLog/interfaces';
|
|
4
|
+
|
|
5
|
+
export type Entity = EmailTemplate;
|
|
6
|
+
export const Route = 'email_template';
|
|
7
|
+
export const UpperName = 'EmailTemplate';
|
|
8
|
+
export const LowerName = UpperName[0].toLowerCase() + UpperName.substring(1);
|
|
9
|
+
|
|
10
|
+
export interface IEntityExtended extends Entity {
|
|
11
|
+
attachments: EmailTemplateAttachment[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface ICreateAttachments {
|
|
15
|
+
multimedia_id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ICreateRequest {
|
|
20
|
+
name: string;
|
|
21
|
+
to: string;
|
|
22
|
+
subject: string;
|
|
23
|
+
body: string;
|
|
24
|
+
attachments: ICreateAttachments[];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface IUpdateRequest {
|
|
28
|
+
name?: string;
|
|
29
|
+
to?: string;
|
|
30
|
+
subject?: string;
|
|
31
|
+
body?: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface ISendRequest {
|
|
35
|
+
owner_id: string | null;
|
|
36
|
+
from: IEmailAddress;
|
|
37
|
+
to: IEmailAddress[];
|
|
38
|
+
cc: IEmailAddress[];
|
|
39
|
+
bcc: IEmailAddress[];
|
|
40
|
+
subject: string;
|
|
41
|
+
html: string;
|
|
42
|
+
attachments: IEmailAttachment[];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface IRepository {
|
|
46
|
+
find(): Promise<IEntityExtended[]>;
|
|
47
|
+
create(data: ICreateRequest): Promise<string>;
|
|
48
|
+
update(selector: IShared.IFindByIdRequest, data: IUpdateRequest): Promise<void>;
|
|
49
|
+
deleteOne(selector: IShared.IFindByIdRequest): Promise<void>;
|
|
50
|
+
send(data: ISendRequest): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export type IController = IShared.IEntityWithUserToken<IRepository>;
|
|
54
|
+
|
|
55
|
+
export type IApi = IRepository;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
import { messages } from '../../../shared/messages';
|
|
3
|
+
import { ICreateRequest, IUpdateRequest, ISendRequest, ICreateAttachments } from './interfaces';
|
|
4
|
+
import * as IShared from '../../../shared/interface';
|
|
5
|
+
import { IEmailAddress, IEmailAttachment } from '../emailLog/interfaces';
|
|
6
|
+
|
|
7
|
+
const createBodyKeys: IShared.IRouteRequest<ICreateRequest> = {
|
|
8
|
+
name: joi.string().required(),
|
|
9
|
+
to: joi.string().required(),
|
|
10
|
+
subject: joi.string().required(),
|
|
11
|
+
body: joi.string().required(),
|
|
12
|
+
attachments: joi
|
|
13
|
+
.array()
|
|
14
|
+
.items(
|
|
15
|
+
joi.object<ICreateAttachments>().keys({
|
|
16
|
+
multimedia_id: joi.string().uuid().required(),
|
|
17
|
+
name: joi.string().required(),
|
|
18
|
+
}),
|
|
19
|
+
)
|
|
20
|
+
.required(),
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const createBody = joi.object().keys(createBodyKeys).messages(messages);
|
|
24
|
+
|
|
25
|
+
const updateBodyKeys: IShared.IRouteRequest<IUpdateRequest> = {
|
|
26
|
+
name: joi.string().optional(),
|
|
27
|
+
to: joi.string().optional(),
|
|
28
|
+
subject: joi.string().optional(),
|
|
29
|
+
body: joi.string().optional(),
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const updateBody = joi.object().keys(updateBodyKeys).messages(messages);
|
|
33
|
+
|
|
34
|
+
const sendBodyKeys: IShared.IRouteRequest<ISendRequest> = {
|
|
35
|
+
owner_id: joi.string().uuid().allow(null).required(),
|
|
36
|
+
from: joi
|
|
37
|
+
.object<IEmailAddress>()
|
|
38
|
+
.keys({
|
|
39
|
+
name: joi.string().allow('', null).default('').required(),
|
|
40
|
+
address: joi
|
|
41
|
+
.string()
|
|
42
|
+
.email({ tlds: { allow: false } })
|
|
43
|
+
.required(),
|
|
44
|
+
})
|
|
45
|
+
.required(),
|
|
46
|
+
to: joi
|
|
47
|
+
.array()
|
|
48
|
+
.items(
|
|
49
|
+
joi.object<IEmailAddress>().keys({
|
|
50
|
+
name: joi.string().allow('', null).default('').required(),
|
|
51
|
+
address: joi
|
|
52
|
+
.string()
|
|
53
|
+
.email({ tlds: { allow: false } })
|
|
54
|
+
.required(),
|
|
55
|
+
}),
|
|
56
|
+
)
|
|
57
|
+
.required(),
|
|
58
|
+
cc: joi
|
|
59
|
+
.array()
|
|
60
|
+
.items(
|
|
61
|
+
joi.object<IEmailAddress>().keys({
|
|
62
|
+
name: joi.string().allow('', null).default('').required(),
|
|
63
|
+
address: joi
|
|
64
|
+
.string()
|
|
65
|
+
.email({ tlds: { allow: false } })
|
|
66
|
+
.required(),
|
|
67
|
+
}),
|
|
68
|
+
)
|
|
69
|
+
.required(),
|
|
70
|
+
bcc: joi
|
|
71
|
+
.array()
|
|
72
|
+
.items(
|
|
73
|
+
joi.object<IEmailAddress>().keys({
|
|
74
|
+
name: joi.string().allow('', null).default('').required(),
|
|
75
|
+
address: joi
|
|
76
|
+
.string()
|
|
77
|
+
.email({ tlds: { allow: false } })
|
|
78
|
+
.required(),
|
|
79
|
+
}),
|
|
80
|
+
)
|
|
81
|
+
.required(),
|
|
82
|
+
subject: joi.string().required(),
|
|
83
|
+
html: joi.string().required(),
|
|
84
|
+
attachments: joi
|
|
85
|
+
.array()
|
|
86
|
+
.items(
|
|
87
|
+
joi.object<IEmailAttachment>().keys({
|
|
88
|
+
filename: joi.string().required(),
|
|
89
|
+
path: joi.string().required(),
|
|
90
|
+
}),
|
|
91
|
+
)
|
|
92
|
+
.required(),
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const sendBody = joi.object().keys(sendBodyKeys).messages(messages);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as IShared from '../../../shared/interface';
|
|
2
|
+
import { EmailTemplateAttachment } from '../../../shared/entities/integration';
|
|
3
|
+
|
|
4
|
+
export type Entity = EmailTemplateAttachment;
|
|
5
|
+
export const Route = 'email_template_attachment';
|
|
6
|
+
export const UpperName = 'EmailTemplateAttachment';
|
|
7
|
+
export const LowerName = UpperName[0].toLowerCase() + UpperName.substring(1);
|
|
8
|
+
|
|
9
|
+
export interface ICreateRequest {
|
|
10
|
+
email_template_id: string;
|
|
11
|
+
multimedia_id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface IRepository {
|
|
16
|
+
create(data: ICreateRequest): Promise<string>;
|
|
17
|
+
deleteOne(selector: IShared.IFindByIdRequest): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type IController = IShared.IEntityWithUserToken<IRepository>;
|
|
21
|
+
|
|
22
|
+
export type IApi = IRepository;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
import { messages } from '../../../shared/messages';
|
|
3
|
+
import { ICreateRequest } from './interfaces';
|
|
4
|
+
import * as IShared from '../../../shared/interface';
|
|
5
|
+
|
|
6
|
+
const createBodyKeys: IShared.IRouteRequest<ICreateRequest> = {
|
|
7
|
+
email_template_id: joi.string().uuid().required(),
|
|
8
|
+
multimedia_id: joi.string().uuid().required(),
|
|
9
|
+
name: joi.string().required(),
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const createBody = joi.object().keys(createBodyKeys).messages(messages);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EmailVerification } from '../../../shared/entities/integration';
|
|
2
|
+
import * as IShared from '../../../shared/interface';
|
|
3
|
+
|
|
4
|
+
export type Entity = EmailVerification;
|
|
5
|
+
export const Route = 'email_verification';
|
|
6
|
+
export const UpperName = 'EmailVerification';
|
|
7
|
+
export const LowerName = UpperName[0].toLowerCase() + UpperName.substring(1);
|
|
8
|
+
|
|
9
|
+
export interface IIsVerifiedRequest {
|
|
10
|
+
email: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface ISendVerificationRequest {
|
|
14
|
+
email: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface IMarkAsVerifiedRequest {
|
|
18
|
+
email: string;
|
|
19
|
+
token: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface IRepository {
|
|
23
|
+
isVerified(selector: IIsVerifiedRequest): Promise<boolean>;
|
|
24
|
+
sendVerificationEmail(data: ISendVerificationRequest): Promise<void>;
|
|
25
|
+
markAsVerified(data: IMarkAsVerifiedRequest): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type IController = IShared.IEntityWithUserToken<IRepository>;
|
|
29
|
+
|
|
30
|
+
export type IApi = IRepository;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
import { messages } from '../../../shared/messages';
|
|
3
|
+
import { IIsVerifiedRequest, ISendVerificationRequest, IMarkAsVerifiedRequest } from './interfaces';
|
|
4
|
+
|
|
5
|
+
export const isVerifiedQuery = joi
|
|
6
|
+
.object<IIsVerifiedRequest>()
|
|
7
|
+
.keys({
|
|
8
|
+
email: joi
|
|
9
|
+
.string()
|
|
10
|
+
.email({ tlds: { allow: false } })
|
|
11
|
+
.required(),
|
|
12
|
+
})
|
|
13
|
+
.messages(messages);
|
|
14
|
+
|
|
15
|
+
export const sendVerificationBody = joi
|
|
16
|
+
.object<ISendVerificationRequest>()
|
|
17
|
+
.keys({
|
|
18
|
+
email: joi
|
|
19
|
+
.string()
|
|
20
|
+
.email({ tlds: { allow: false } })
|
|
21
|
+
.required(),
|
|
22
|
+
})
|
|
23
|
+
.messages(messages);
|
|
24
|
+
|
|
25
|
+
export const markAsVerifiedBody = joi
|
|
26
|
+
.object<IMarkAsVerifiedRequest>()
|
|
27
|
+
.keys({
|
|
28
|
+
email: joi
|
|
29
|
+
.string()
|
|
30
|
+
.email({ tlds: { allow: false } })
|
|
31
|
+
.required(),
|
|
32
|
+
token: joi.string().uuid().required(),
|
|
33
|
+
})
|
|
34
|
+
.messages(messages);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as IShared from '../../../shared/interface';
|
|
2
|
+
import { GoogleFilePermission } from '../../../shared/entities/integration';
|
|
3
|
+
|
|
4
|
+
export type Entity = GoogleFilePermission;
|
|
5
|
+
export const Route = 'google_file_permission';
|
|
6
|
+
export const UpperName = 'GoogleFilePermission';
|
|
7
|
+
export const LowerName = UpperName[0].toLowerCase() + UpperName.substring(1);
|
|
8
|
+
|
|
9
|
+
export type IFindRequest = Record<string, unknown>;
|
|
10
|
+
|
|
11
|
+
export interface ICreateRequest {
|
|
12
|
+
file_id: string;
|
|
13
|
+
email: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface ICreateRequestRepository extends ICreateRequest {
|
|
17
|
+
permission_id: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface IController {
|
|
21
|
+
create(data: ICreateRequest): Promise<Entity>;
|
|
22
|
+
findById(shared: IShared.IFindByIdRequest): Promise<Entity | null>;
|
|
23
|
+
find(): Promise<Entity[]>;
|
|
24
|
+
deleteOne(selector: IShared.IFindByIdRequest): Promise<Entity | null>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface IRepository {
|
|
28
|
+
create(data: ICreateRequestRepository): Promise<Entity>;
|
|
29
|
+
findById(shared: IShared.IFindByIdRequest): Promise<Entity | null>;
|
|
30
|
+
find(): Promise<Entity[]>;
|
|
31
|
+
deleteOne(selector: IShared.IFindByIdRequest): Promise<Entity | null>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
import { messages } from '../../../shared/messages';
|
|
3
|
+
import { ICreateRequest } from './interfaces';
|
|
4
|
+
|
|
5
|
+
import * as IShared from '../../../shared/interface';
|
|
6
|
+
|
|
7
|
+
export const createBodyKeys: IShared.IRouteRequest<ICreateRequest> = {
|
|
8
|
+
email: joi
|
|
9
|
+
.string()
|
|
10
|
+
.email({ tlds: { allow: false } })
|
|
11
|
+
.required(),
|
|
12
|
+
file_id: joi.string().required(),
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const createBody = joi.object().keys(createBodyKeys).messages(messages);
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { DocumentHeader } from '../../../shared/entities/stock';
|
|
2
|
+
import { Persona } from '../../../shared/entities/user';
|
|
3
|
+
import * as IShared from '../../../shared/interface';
|
|
4
|
+
|
|
5
|
+
export const Route = 'google';
|
|
6
|
+
export const UpperName = 'Google';
|
|
7
|
+
export const LowerName = UpperName[0].toLowerCase() + UpperName.substring(1);
|
|
8
|
+
|
|
9
|
+
export interface IGetUserData
|
|
10
|
+
extends Pick<
|
|
11
|
+
DocumentHeader,
|
|
12
|
+
| 'document_number'
|
|
13
|
+
| 'owner_number'
|
|
14
|
+
| 'billing_persona_nif'
|
|
15
|
+
| 'billing_persona_name'
|
|
16
|
+
| 'billing_persona_email'
|
|
17
|
+
| 'billing_persona_telephone'
|
|
18
|
+
| 'billing_persona_address_street'
|
|
19
|
+
| 'billing_persona_address_locality'
|
|
20
|
+
| 'billing_persona_address_postal_code'
|
|
21
|
+
| 'billing_persona_address_country_name'
|
|
22
|
+
| 'delivery_persona_name'
|
|
23
|
+
| 'delivery_persona_email'
|
|
24
|
+
| 'delivery_persona_telephone'
|
|
25
|
+
| 'delivery_persona_address_street'
|
|
26
|
+
| 'delivery_persona_address_locality'
|
|
27
|
+
| 'delivery_persona_address_postal_code'
|
|
28
|
+
| 'delivery_persona_address_country_name'
|
|
29
|
+
> {
|
|
30
|
+
emission_date: string;
|
|
31
|
+
store_operator_id: string | null;
|
|
32
|
+
store_operator_name: string | null;
|
|
33
|
+
store_operator_number: number | null;
|
|
34
|
+
reason_for_exemption_name: string | null;
|
|
35
|
+
contact_persona_name: Persona['name'];
|
|
36
|
+
contact_persona_email: Persona['email'];
|
|
37
|
+
contact_persona_telephone: Persona['telephone'];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface IUpdateRequest {
|
|
41
|
+
document_name: string;
|
|
42
|
+
client_data?: IGetUserData;
|
|
43
|
+
}
|
|
44
|
+
export interface ICloneRequest {
|
|
45
|
+
document_name: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface ICloneResponse {
|
|
49
|
+
spreadsheetId: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export type IGetProductGroup =
|
|
53
|
+
| 'cortinado'
|
|
54
|
+
| 'tapete'
|
|
55
|
+
| 'estore'
|
|
56
|
+
| 'estofo'
|
|
57
|
+
| 'almofada'
|
|
58
|
+
| 'outros'
|
|
59
|
+
| 'calhas&varões'
|
|
60
|
+
| 'papel'
|
|
61
|
+
| 'varoes'
|
|
62
|
+
| 'terceiros';
|
|
63
|
+
|
|
64
|
+
export type IGetProductType =
|
|
65
|
+
| 'confecção'
|
|
66
|
+
| 'calha'
|
|
67
|
+
| 'tecido 1'
|
|
68
|
+
| 'tecido 2'
|
|
69
|
+
| 'varoes'
|
|
70
|
+
| 'livre'
|
|
71
|
+
| 'papel';
|
|
72
|
+
|
|
73
|
+
export interface IGetProduct {
|
|
74
|
+
index: number; // line index in sheet's config tab
|
|
75
|
+
group: IGetProductGroup;
|
|
76
|
+
type: IGetProductType;
|
|
77
|
+
quantity: number;
|
|
78
|
+
reference: string;
|
|
79
|
+
designation: string;
|
|
80
|
+
discount: number;
|
|
81
|
+
price_sale: number;
|
|
82
|
+
price_cost: number;
|
|
83
|
+
}
|
|
84
|
+
export interface IGetDataResponse {
|
|
85
|
+
products: IGetProduct[];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface IExportRequest {
|
|
89
|
+
spreadsheetId: string;
|
|
90
|
+
document_header_id: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface IController {
|
|
94
|
+
clone(params: IShared.IFindByIdRequest, data?: ICloneRequest): Promise<ICloneResponse>;
|
|
95
|
+
export(params: IExportRequest): Promise<string>;
|
|
96
|
+
getData(params: IShared.IFindByIdRequest): Promise<IGetDataResponse>;
|
|
97
|
+
update(params: IShared.IFindByIdRequest, data: IUpdateRequest): Promise<void>;
|
|
98
|
+
}
|