@yakuzaa/jade-runtime 0.1.3 → 0.1.4
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/dist/apis/auth_service.d.ts +5 -1
- package/dist/apis/auth_service.d.ts.map +1 -1
- package/dist/apis/auth_service.js +29 -9
- package/dist/apis/auth_service.js.map +1 -1
- package/dist/apis/console_api.d.ts +14 -0
- package/dist/apis/console_api.d.ts.map +1 -1
- package/dist/apis/console_api.js +18 -0
- package/dist/apis/console_api.js.map +1 -1
- package/dist/apis/http_client.d.ts +1 -0
- package/dist/apis/http_client.d.ts.map +1 -1
- package/dist/apis/http_client.js +36 -0
- package/dist/apis/http_client.js.map +1 -1
- package/dist/browser.d.ts +31 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +3327 -0
- package/dist/browser.js.map +1 -0
- package/dist/core/entity_manager.d.ts +33 -0
- package/dist/core/entity_manager.d.ts.map +1 -0
- package/dist/core/entity_manager.js +52 -0
- package/dist/core/entity_manager.js.map +1 -0
- package/dist/core/event_loop.d.ts +1 -2
- package/dist/core/event_loop.d.ts.map +1 -1
- package/dist/core/event_loop.js +32 -13
- package/dist/core/event_loop.js.map +1 -1
- package/dist/core/rule_engine.d.ts +61 -0
- package/dist/core/rule_engine.d.ts.map +1 -0
- package/dist/core/rule_engine.js +88 -0
- package/dist/core/rule_engine.js.map +1 -0
- package/dist/persistence/local_datastore.d.ts +1 -0
- package/dist/persistence/local_datastore.d.ts.map +1 -1
- package/dist/persistence/local_datastore.js +8 -4
- package/dist/persistence/local_datastore.js.map +1 -1
- package/dist/persistence/preferencias.d.ts +37 -0
- package/dist/persistence/preferencias.d.ts.map +1 -0
- package/dist/persistence/preferencias.js +92 -0
- package/dist/persistence/preferencias.js.map +1 -0
- package/dist/stdlib/fiscal.d.ts +100 -0
- package/dist/stdlib/fiscal.d.ts.map +1 -0
- package/dist/stdlib/fiscal.js +158 -0
- package/dist/stdlib/fiscal.js.map +1 -0
- package/dist/stdlib/wms.d.ts +109 -0
- package/dist/stdlib/wms.d.ts.map +1 -0
- package/dist/stdlib/wms.js +257 -0
- package/dist/stdlib/wms.js.map +1 -0
- package/dist/ui/components/cartao.d.ts +4 -0
- package/dist/ui/components/cartao.d.ts.map +1 -0
- package/dist/ui/components/cartao.js +4 -0
- package/dist/ui/components/cartao.js.map +1 -0
- package/dist/ui/responsive.d.ts +51 -0
- package/dist/ui/responsive.d.ts.map +1 -0
- package/dist/ui/responsive.js +526 -0
- package/dist/ui/responsive.js.map +1 -0
- package/dist/ui/router.d.ts.map +1 -1
- package/dist/ui/router.js +5 -2
- package/dist/ui/router.js.map +1 -1
- package/dist/ui/ui_engine.d.ts +25 -2
- package/dist/ui/ui_engine.d.ts.map +1 -1
- package/dist/ui/ui_engine.js +76 -179
- package/dist/ui/ui_engine.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* stdlib/fiscal.ts — Cálculos fiscais brasileiros (ICMS, PIS, COFINS, ISS, IPI)
|
|
3
|
+
*
|
|
4
|
+
* Todos os valores monetários em R$ (número).
|
|
5
|
+
* Alíquotas em decimal: 0.12 = 12%.
|
|
6
|
+
*
|
|
7
|
+
* Acumulações de totais usam MoedaStdlib (aritmética em centavos inteiros)
|
|
8
|
+
* para evitar erros de ponto flutuante IEEE 754.
|
|
9
|
+
*/
|
|
10
|
+
export interface ResultadoICMS {
|
|
11
|
+
baseCalculo: number;
|
|
12
|
+
aliquota: number;
|
|
13
|
+
valor: number;
|
|
14
|
+
valorLiquido: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Calcula ICMS sobre uma base de cálculo.
|
|
18
|
+
* @param baseCalculo Valor sobre o qual incide o ICMS
|
|
19
|
+
* @param aliquota Alíquota decimal (ex: 0.12 para 12%)
|
|
20
|
+
*/
|
|
21
|
+
export declare function calcularICMS(baseCalculo: number, aliquota: number): ResultadoICMS;
|
|
22
|
+
/**
|
|
23
|
+
* Calcula ICMS-ST (Substituição Tributária) — MVA sobre o ICMS próprio.
|
|
24
|
+
* @param valorProduto Valor do produto sem impostos
|
|
25
|
+
* @param aliquotaInterna Alíquota interna do estado destino
|
|
26
|
+
* @param aliquotaInterestadual Alíquota interestadual
|
|
27
|
+
* @param mva Margem de Valor Agregado decimal (ex: 0.35 para 35%)
|
|
28
|
+
*/
|
|
29
|
+
export declare function calcularICMSST(valorProduto: number, aliquotaInterna: number, aliquotaInterestadual: number, mva: number): {
|
|
30
|
+
icmsPropio: number;
|
|
31
|
+
baseCalculoST: number;
|
|
32
|
+
icmsST: number;
|
|
33
|
+
};
|
|
34
|
+
export interface ResultadoPISCOFINS {
|
|
35
|
+
baseCalculo: number;
|
|
36
|
+
aliquotaPIS: number;
|
|
37
|
+
aliquotaCOFINS: number;
|
|
38
|
+
valorPIS: number;
|
|
39
|
+
valorCOFINS: number;
|
|
40
|
+
totalPISCOFINS: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Calcula PIS e COFINS no regime cumulativo.
|
|
44
|
+
* Alíquotas padrão: PIS 0.65%, COFINS 3%.
|
|
45
|
+
*/
|
|
46
|
+
export declare function calcularPISCOFINS(baseCalculo: number, aliquotaPIS?: number, aliquotaCOFINS?: number): ResultadoPISCOFINS;
|
|
47
|
+
/**
|
|
48
|
+
* Calcula PIS e COFINS no regime não-cumulativo.
|
|
49
|
+
* Alíquotas padrão: PIS 1.65%, COFINS 7.6%.
|
|
50
|
+
* @param creditos Créditos a deduzir
|
|
51
|
+
*/
|
|
52
|
+
export declare function calcularPISCOFINSNaoCumulativo(baseCalculo: number, creditos?: number, aliquotaPIS?: number, aliquotaCOFINS?: number): ResultadoPISCOFINS & {
|
|
53
|
+
creditos: number;
|
|
54
|
+
totalLiquido: number;
|
|
55
|
+
};
|
|
56
|
+
export interface ResultadoISS {
|
|
57
|
+
baseCalculo: number;
|
|
58
|
+
aliquota: number;
|
|
59
|
+
valor: number;
|
|
60
|
+
valorLiquido: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Calcula ISS (Imposto Sobre Serviços).
|
|
64
|
+
* Alíquota varia por município: mínimo 2%, máximo 5%.
|
|
65
|
+
*/
|
|
66
|
+
export declare function calcularISS(baseCalculo: number, aliquota: number): ResultadoISS;
|
|
67
|
+
export interface ResultadoIPI {
|
|
68
|
+
valorProduto: number;
|
|
69
|
+
aliquota: number;
|
|
70
|
+
valorIPI: number;
|
|
71
|
+
valorTotal: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Calcula IPI (Imposto sobre Produtos Industrializados).
|
|
75
|
+
* O IPI é adicionado ao preço do produto (por fora).
|
|
76
|
+
*/
|
|
77
|
+
export declare function calcularIPI(valorProduto: number, aliquota: number): ResultadoIPI;
|
|
78
|
+
export interface ItemNF {
|
|
79
|
+
descricao: string;
|
|
80
|
+
quantidade: number;
|
|
81
|
+
valorUnitario: number;
|
|
82
|
+
aliquotaICMS?: number;
|
|
83
|
+
aliquotaIPI?: number;
|
|
84
|
+
}
|
|
85
|
+
export interface TotaisNF {
|
|
86
|
+
totalProdutos: number;
|
|
87
|
+
totalICMS: number;
|
|
88
|
+
totalIPI: number;
|
|
89
|
+
totalPIS: number;
|
|
90
|
+
totalCOFINS: number;
|
|
91
|
+
totalNF: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Calcula os totais de uma nota fiscal com múltiplos itens.
|
|
95
|
+
* @param itens Lista de itens da NF
|
|
96
|
+
* @param aliquotaPIS Alíquota PIS (padrão: 0.65% cumulativo)
|
|
97
|
+
* @param aliquotaCOFINS Alíquota COFINS (padrão: 3% cumulativo)
|
|
98
|
+
*/
|
|
99
|
+
export declare function calcularTotaisNF(itens: ItemNF[], aliquotaPIS?: number, aliquotaCOFINS?: number): TotaisNF;
|
|
100
|
+
//# sourceMappingURL=fiscal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiscal.d.ts","sourceRoot":"","sources":["../../stdlib/fiscal.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAWjF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,MAAM,EAC7B,GAAG,EAAE,MAAM,GACV;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAW/D;AAID,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,WAAW,SAAS,EACpB,cAAc,SAAO,GACpB,kBAAkB,CAgBpB;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,EACnB,QAAQ,SAAI,EACZ,WAAW,SAAS,EACpB,cAAc,SAAQ,GACrB,kBAAkB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAIjE;AAID,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAa/E;AAID,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAWhF;AAID,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,SAAS,EACpB,cAAc,SAAO,GACpB,QAAQ,CAoCV"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* stdlib/fiscal.ts — Cálculos fiscais brasileiros (ICMS, PIS, COFINS, ISS, IPI)
|
|
3
|
+
*
|
|
4
|
+
* Todos os valores monetários em R$ (número).
|
|
5
|
+
* Alíquotas em decimal: 0.12 = 12%.
|
|
6
|
+
*
|
|
7
|
+
* Acumulações de totais usam MoedaStdlib (aritmética em centavos inteiros)
|
|
8
|
+
* para evitar erros de ponto flutuante IEEE 754.
|
|
9
|
+
*/
|
|
10
|
+
import { MoedaStdlib } from './moeda';
|
|
11
|
+
/**
|
|
12
|
+
* Calcula ICMS sobre uma base de cálculo.
|
|
13
|
+
* @param baseCalculo Valor sobre o qual incide o ICMS
|
|
14
|
+
* @param aliquota Alíquota decimal (ex: 0.12 para 12%)
|
|
15
|
+
*/
|
|
16
|
+
export function calcularICMS(baseCalculo, aliquota) {
|
|
17
|
+
validarPositivo(baseCalculo, 'baseCalculo');
|
|
18
|
+
validarAliquota(aliquota);
|
|
19
|
+
const valor = arredondar(baseCalculo * aliquota);
|
|
20
|
+
return {
|
|
21
|
+
baseCalculo,
|
|
22
|
+
aliquota,
|
|
23
|
+
valor,
|
|
24
|
+
valorLiquido: arredondar(baseCalculo - valor)
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Calcula ICMS-ST (Substituição Tributária) — MVA sobre o ICMS próprio.
|
|
29
|
+
* @param valorProduto Valor do produto sem impostos
|
|
30
|
+
* @param aliquotaInterna Alíquota interna do estado destino
|
|
31
|
+
* @param aliquotaInterestadual Alíquota interestadual
|
|
32
|
+
* @param mva Margem de Valor Agregado decimal (ex: 0.35 para 35%)
|
|
33
|
+
*/
|
|
34
|
+
export function calcularICMSST(valorProduto, aliquotaInterna, aliquotaInterestadual, mva) {
|
|
35
|
+
validarPositivo(valorProduto, 'valorProduto');
|
|
36
|
+
validarAliquota(aliquotaInterna);
|
|
37
|
+
validarAliquota(aliquotaInterestadual);
|
|
38
|
+
if (mva < 0)
|
|
39
|
+
throw new Error('MVA não pode ser negativo');
|
|
40
|
+
const icmsPropio = arredondar(valorProduto * aliquotaInterestadual);
|
|
41
|
+
const baseCalculoST = arredondar(valorProduto * (1 + mva));
|
|
42
|
+
const icmsST = arredondar(baseCalculoST * aliquotaInterna - icmsPropio);
|
|
43
|
+
return { icmsPropio, baseCalculoST, icmsST: Math.max(0, icmsST) };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Calcula PIS e COFINS no regime cumulativo.
|
|
47
|
+
* Alíquotas padrão: PIS 0.65%, COFINS 3%.
|
|
48
|
+
*/
|
|
49
|
+
export function calcularPISCOFINS(baseCalculo, aliquotaPIS = 0.0065, aliquotaCOFINS = 0.03) {
|
|
50
|
+
validarPositivo(baseCalculo, 'baseCalculo');
|
|
51
|
+
validarAliquota(aliquotaPIS);
|
|
52
|
+
validarAliquota(aliquotaCOFINS);
|
|
53
|
+
const valorPIS = arredondar(baseCalculo * aliquotaPIS);
|
|
54
|
+
const valorCOFINS = arredondar(baseCalculo * aliquotaCOFINS);
|
|
55
|
+
return {
|
|
56
|
+
baseCalculo,
|
|
57
|
+
aliquotaPIS,
|
|
58
|
+
aliquotaCOFINS,
|
|
59
|
+
valorPIS,
|
|
60
|
+
valorCOFINS,
|
|
61
|
+
totalPISCOFINS: arredondar(valorPIS + valorCOFINS)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Calcula PIS e COFINS no regime não-cumulativo.
|
|
66
|
+
* Alíquotas padrão: PIS 1.65%, COFINS 7.6%.
|
|
67
|
+
* @param creditos Créditos a deduzir
|
|
68
|
+
*/
|
|
69
|
+
export function calcularPISCOFINSNaoCumulativo(baseCalculo, creditos = 0, aliquotaPIS = 0.0165, aliquotaCOFINS = 0.076) {
|
|
70
|
+
const base = calcularPISCOFINS(baseCalculo, aliquotaPIS, aliquotaCOFINS);
|
|
71
|
+
const totalLiquido = arredondar(Math.max(0, base.totalPISCOFINS - creditos));
|
|
72
|
+
return { ...base, creditos, totalLiquido };
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Calcula ISS (Imposto Sobre Serviços).
|
|
76
|
+
* Alíquota varia por município: mínimo 2%, máximo 5%.
|
|
77
|
+
*/
|
|
78
|
+
export function calcularISS(baseCalculo, aliquota) {
|
|
79
|
+
validarPositivo(baseCalculo, 'baseCalculo');
|
|
80
|
+
if (aliquota < 0.02 || aliquota > 0.05) {
|
|
81
|
+
throw new Error(`Alíquota ISS inválida: ${(aliquota * 100).toFixed(2)}%. Deve estar entre 2% e 5%`);
|
|
82
|
+
}
|
|
83
|
+
const valor = arredondar(baseCalculo * aliquota);
|
|
84
|
+
return {
|
|
85
|
+
baseCalculo,
|
|
86
|
+
aliquota,
|
|
87
|
+
valor,
|
|
88
|
+
valorLiquido: arredondar(baseCalculo - valor)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Calcula IPI (Imposto sobre Produtos Industrializados).
|
|
93
|
+
* O IPI é adicionado ao preço do produto (por fora).
|
|
94
|
+
*/
|
|
95
|
+
export function calcularIPI(valorProduto, aliquota) {
|
|
96
|
+
validarPositivo(valorProduto, 'valorProduto');
|
|
97
|
+
validarAliquota(aliquota);
|
|
98
|
+
const valorIPI = arredondar(valorProduto * aliquota);
|
|
99
|
+
return {
|
|
100
|
+
valorProduto,
|
|
101
|
+
aliquota,
|
|
102
|
+
valorIPI,
|
|
103
|
+
valorTotal: arredondar(valorProduto + valorIPI)
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Calcula os totais de uma nota fiscal com múltiplos itens.
|
|
108
|
+
* @param itens Lista de itens da NF
|
|
109
|
+
* @param aliquotaPIS Alíquota PIS (padrão: 0.65% cumulativo)
|
|
110
|
+
* @param aliquotaCOFINS Alíquota COFINS (padrão: 3% cumulativo)
|
|
111
|
+
*/
|
|
112
|
+
export function calcularTotaisNF(itens, aliquotaPIS = 0.0065, aliquotaCOFINS = 0.03) {
|
|
113
|
+
if (itens.length === 0)
|
|
114
|
+
throw new Error('Nota fiscal sem itens');
|
|
115
|
+
// Acumula em centavos para evitar erros de ponto flutuante
|
|
116
|
+
let totalProdutosCentavos = 0;
|
|
117
|
+
let totalICMSCentavos = 0;
|
|
118
|
+
let totalIPICentavos = 0;
|
|
119
|
+
for (const item of itens) {
|
|
120
|
+
validarPositivo(item.quantidade, 'quantidade');
|
|
121
|
+
validarPositivo(item.valorUnitario, 'valorUnitario');
|
|
122
|
+
const subtotal = MoedaStdlib.multiplicar(item.valorUnitario, item.quantidade);
|
|
123
|
+
totalProdutosCentavos += MoedaStdlib.toCentavos(subtotal);
|
|
124
|
+
if (item.aliquotaICMS !== undefined) {
|
|
125
|
+
totalICMSCentavos += MoedaStdlib.toCentavos(calcularICMS(subtotal, item.aliquotaICMS).valor);
|
|
126
|
+
}
|
|
127
|
+
if (item.aliquotaIPI !== undefined) {
|
|
128
|
+
totalIPICentavos += MoedaStdlib.toCentavos(calcularIPI(subtotal, item.aliquotaIPI).valorIPI);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const totalProdutos = MoedaStdlib.fromCentavos(totalProdutosCentavos);
|
|
132
|
+
const totalICMS = MoedaStdlib.fromCentavos(totalICMSCentavos);
|
|
133
|
+
const totalIPI = MoedaStdlib.fromCentavos(totalIPICentavos);
|
|
134
|
+
const pisCofins = calcularPISCOFINS(totalProdutos, aliquotaPIS, aliquotaCOFINS);
|
|
135
|
+
return {
|
|
136
|
+
totalProdutos,
|
|
137
|
+
totalICMS,
|
|
138
|
+
totalIPI,
|
|
139
|
+
totalPIS: pisCofins.valorPIS,
|
|
140
|
+
totalCOFINS: pisCofins.valorCOFINS,
|
|
141
|
+
totalNF: MoedaStdlib.fromCentavos(totalProdutosCentavos + totalIPICentavos)
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
// ── Utilitários ───────────────────────────────────────────────────────────────
|
|
145
|
+
function arredondar(valor) {
|
|
146
|
+
return Math.round(valor * 100) / 100;
|
|
147
|
+
}
|
|
148
|
+
function validarPositivo(valor, nome) {
|
|
149
|
+
if (typeof valor !== 'number' || isNaN(valor) || valor < 0) {
|
|
150
|
+
throw new Error(`'${nome}' deve ser um número não-negativo`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function validarAliquota(aliquota) {
|
|
154
|
+
if (typeof aliquota !== 'number' || isNaN(aliquota) || aliquota < 0 || aliquota > 1) {
|
|
155
|
+
throw new Error(`Alíquota inválida: ${aliquota}. Deve ser um decimal entre 0 e 1`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=fiscal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiscal.js","sourceRoot":"","sources":["../../stdlib/fiscal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* stdlib/wms.ts — Warehouse Management System
|
|
3
|
+
*
|
|
4
|
+
* Utilitários para gestão de armazém:
|
|
5
|
+
* - Validação e geração de códigos de barras (EAN-13, EAN-8, Code128)
|
|
6
|
+
* - Grade de posições (endereçamento de estoque: corredor-prateleira-nível)
|
|
7
|
+
* - Cálculo de capacidade e ocupação de posições
|
|
8
|
+
* - Sugestão de endereçamento por peso/volume
|
|
9
|
+
*/
|
|
10
|
+
export interface ValidacaoCodigoBarras {
|
|
11
|
+
valido: boolean;
|
|
12
|
+
formato: string;
|
|
13
|
+
mensagem?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Valida e calcula o dígito verificador de um EAN-13.
|
|
17
|
+
* O EAN-13 tem 13 dígitos; os 12 primeiros são dados e o último é o dígito verificador.
|
|
18
|
+
*/
|
|
19
|
+
export declare function validarEAN13(codigo: string): ValidacaoCodigoBarras;
|
|
20
|
+
/**
|
|
21
|
+
* Valida e calcula o dígito verificador de um EAN-8.
|
|
22
|
+
*/
|
|
23
|
+
export declare function validarEAN8(codigo: string): ValidacaoCodigoBarras;
|
|
24
|
+
/**
|
|
25
|
+
* Gera um EAN-13 válido a partir de 12 dígitos base.
|
|
26
|
+
* @param base12 String com os 12 primeiros dígitos (sem dígito verificador)
|
|
27
|
+
*/
|
|
28
|
+
export declare function gerarEAN13(base12: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Gera um EAN-8 válido a partir de 7 dígitos base.
|
|
31
|
+
*/
|
|
32
|
+
export declare function gerarEAN8(base7: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Valida um código Code128 — aceita qualquer string de 1 a 80 caracteres ASCII imprimíveis.
|
|
35
|
+
*/
|
|
36
|
+
export declare function validarCode128(codigo: string): ValidacaoCodigoBarras;
|
|
37
|
+
/**
|
|
38
|
+
* Detecta automaticamente o formato do código de barras e valida.
|
|
39
|
+
*/
|
|
40
|
+
export declare function validarCodigoBarras(codigo: string): ValidacaoCodigoBarras;
|
|
41
|
+
export interface EnderecoArmazem {
|
|
42
|
+
corredor: string;
|
|
43
|
+
prateleira: number;
|
|
44
|
+
nivel: number;
|
|
45
|
+
}
|
|
46
|
+
export interface PosicaoArmazem extends EnderecoArmazem {
|
|
47
|
+
codigo: string;
|
|
48
|
+
capacidadeKg: number;
|
|
49
|
+
capacidadeM3: number;
|
|
50
|
+
ocupadoKg: number;
|
|
51
|
+
ocupadoM3: number;
|
|
52
|
+
disponivel: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface GradeArmazem {
|
|
55
|
+
corredores: string[];
|
|
56
|
+
prateleirasPorCorredor: number;
|
|
57
|
+
niveisPorPrateleira: number;
|
|
58
|
+
capacidadePadraoKg: number;
|
|
59
|
+
capacidadePadraoM3: number;
|
|
60
|
+
posicoes: Map<string, PosicaoArmazem>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Cria uma grade de armazém com endereçamento automático.
|
|
64
|
+
* @param corredores Lista de letras dos corredores (ex: ['A', 'B', 'C'])
|
|
65
|
+
* @param prateleiras Número de prateleiras por corredor
|
|
66
|
+
* @param niveis Número de níveis por prateleira (1 = chão)
|
|
67
|
+
* @param capacidadeKg Capacidade padrão em kg por posição
|
|
68
|
+
* @param capacidadeM3 Capacidade padrão em m³ por posição
|
|
69
|
+
*/
|
|
70
|
+
export declare function criarGrade(corredores: string[], prateleiras: number, niveis: number, capacidadeKg: number, capacidadeM3: number): GradeArmazem;
|
|
71
|
+
/**
|
|
72
|
+
* Formata um endereço de armazém no padrão JADE: 'A-001-1'
|
|
73
|
+
*/
|
|
74
|
+
export declare function formatarEndereco(end: EnderecoArmazem): string;
|
|
75
|
+
/**
|
|
76
|
+
* Parseia um código de endereço no formato 'A-001-1' para EnderecoArmazem.
|
|
77
|
+
*/
|
|
78
|
+
export declare function parsearEndereco(codigo: string): EnderecoArmazem;
|
|
79
|
+
/**
|
|
80
|
+
* Aloca uma carga em uma posição do armazém.
|
|
81
|
+
* Retorna erro se a posição não tiver capacidade suficiente.
|
|
82
|
+
*/
|
|
83
|
+
export declare function alocarPosicao(grade: GradeArmazem, codigo: string, pesoKg: number, volumeM3: number): {
|
|
84
|
+
sucesso: boolean;
|
|
85
|
+
mensagem?: string;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Libera uma posição do armazém (esvazia ocupação).
|
|
89
|
+
*/
|
|
90
|
+
export declare function liberarPosicao(grade: GradeArmazem, codigo: string): void;
|
|
91
|
+
/**
|
|
92
|
+
* Sugere a melhor posição livre para uma carga com base em peso e volume.
|
|
93
|
+
* Estratégia: posição mais próxima do chão (nível 1) com capacidade suficiente.
|
|
94
|
+
*/
|
|
95
|
+
export declare function sugerirPosicao(grade: GradeArmazem, pesoKg: number, volumeM3: number): PosicaoArmazem | null;
|
|
96
|
+
/**
|
|
97
|
+
* Retorna estatísticas de ocupação do armazém.
|
|
98
|
+
*/
|
|
99
|
+
export declare function estatisticasArmazem(grade: GradeArmazem): {
|
|
100
|
+
totalPosicoes: number;
|
|
101
|
+
posicoesDisponiveis: number;
|
|
102
|
+
posicoesOcupadas: number;
|
|
103
|
+
ocupacaoPercent: number;
|
|
104
|
+
totalKgOcupado: number;
|
|
105
|
+
totalM3Ocupado: number;
|
|
106
|
+
totalKgCapacidade: number;
|
|
107
|
+
totalM3Capacidade: number;
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=wms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wms.d.ts","sourceRoot":"","sources":["../../stdlib/wms.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAalE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAajE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAapE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAKzE;AAID,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,YAAY,CAoCd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAU/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAsBzC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,cAAc,GAAG,IAAI,CAevB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CA4BA"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* stdlib/wms.ts — Warehouse Management System
|
|
3
|
+
*
|
|
4
|
+
* Utilitários para gestão de armazém:
|
|
5
|
+
* - Validação e geração de códigos de barras (EAN-13, EAN-8, Code128)
|
|
6
|
+
* - Grade de posições (endereçamento de estoque: corredor-prateleira-nível)
|
|
7
|
+
* - Cálculo de capacidade e ocupação de posições
|
|
8
|
+
* - Sugestão de endereçamento por peso/volume
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Valida e calcula o dígito verificador de um EAN-13.
|
|
12
|
+
* O EAN-13 tem 13 dígitos; os 12 primeiros são dados e o último é o dígito verificador.
|
|
13
|
+
*/
|
|
14
|
+
export function validarEAN13(codigo) {
|
|
15
|
+
const limpo = codigo.replace(/\D/g, '');
|
|
16
|
+
if (limpo.length !== 13) {
|
|
17
|
+
return { valido: false, formato: 'EAN-13', mensagem: `EAN-13 deve ter 13 dígitos, recebeu ${limpo.length}` };
|
|
18
|
+
}
|
|
19
|
+
const digito = calcularDigitoEAN(limpo.slice(0, 12));
|
|
20
|
+
const valido = digito === parseInt(limpo[12], 10);
|
|
21
|
+
return {
|
|
22
|
+
valido,
|
|
23
|
+
formato: 'EAN-13',
|
|
24
|
+
mensagem: valido ? undefined : `Dígito verificador inválido: esperado ${digito}, recebeu ${limpo[12]}`
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Valida e calcula o dígito verificador de um EAN-8.
|
|
29
|
+
*/
|
|
30
|
+
export function validarEAN8(codigo) {
|
|
31
|
+
const limpo = codigo.replace(/\D/g, '');
|
|
32
|
+
if (limpo.length !== 8) {
|
|
33
|
+
return { valido: false, formato: 'EAN-8', mensagem: `EAN-8 deve ter 8 dígitos, recebeu ${limpo.length}` };
|
|
34
|
+
}
|
|
35
|
+
const digito = calcularDigitoEAN(limpo.slice(0, 7));
|
|
36
|
+
const valido = digito === parseInt(limpo[7], 10);
|
|
37
|
+
return {
|
|
38
|
+
valido,
|
|
39
|
+
formato: 'EAN-8',
|
|
40
|
+
mensagem: valido ? undefined : `Dígito verificador inválido: esperado ${digito}, recebeu ${limpo[7]}`
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Gera um EAN-13 válido a partir de 12 dígitos base.
|
|
45
|
+
* @param base12 String com os 12 primeiros dígitos (sem dígito verificador)
|
|
46
|
+
*/
|
|
47
|
+
export function gerarEAN13(base12) {
|
|
48
|
+
const limpo = base12.replace(/\D/g, '');
|
|
49
|
+
if (limpo.length !== 12) {
|
|
50
|
+
throw new Error(`Base EAN-13 deve ter 12 dígitos, recebeu ${limpo.length}`);
|
|
51
|
+
}
|
|
52
|
+
const digito = calcularDigitoEAN(limpo);
|
|
53
|
+
return limpo + digito;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Gera um EAN-8 válido a partir de 7 dígitos base.
|
|
57
|
+
*/
|
|
58
|
+
export function gerarEAN8(base7) {
|
|
59
|
+
const limpo = base7.replace(/\D/g, '');
|
|
60
|
+
if (limpo.length !== 7) {
|
|
61
|
+
throw new Error(`Base EAN-8 deve ter 7 dígitos, recebeu ${limpo.length}`);
|
|
62
|
+
}
|
|
63
|
+
const digito = calcularDigitoEAN(limpo);
|
|
64
|
+
return limpo + digito;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Valida um código Code128 — aceita qualquer string de 1 a 80 caracteres ASCII imprimíveis.
|
|
68
|
+
*/
|
|
69
|
+
export function validarCode128(codigo) {
|
|
70
|
+
if (!codigo || codigo.length === 0) {
|
|
71
|
+
return { valido: false, formato: 'Code128', mensagem: 'Código vazio' };
|
|
72
|
+
}
|
|
73
|
+
if (codigo.length > 80) {
|
|
74
|
+
return { valido: false, formato: 'Code128', mensagem: `Code128 máximo 80 caracteres, recebeu ${codigo.length}` };
|
|
75
|
+
}
|
|
76
|
+
// Code128 aceita caracteres ASCII 32–126
|
|
77
|
+
const invalido = [...codigo].find(c => c.charCodeAt(0) < 32 || c.charCodeAt(0) > 126);
|
|
78
|
+
if (invalido) {
|
|
79
|
+
return { valido: false, formato: 'Code128', mensagem: `Caractere inválido: '${invalido}' (ASCII ${invalido.charCodeAt(0)})` };
|
|
80
|
+
}
|
|
81
|
+
return { valido: true, formato: 'Code128' };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Detecta automaticamente o formato do código de barras e valida.
|
|
85
|
+
*/
|
|
86
|
+
export function validarCodigoBarras(codigo) {
|
|
87
|
+
const limpo = codigo.replace(/\D/g, '');
|
|
88
|
+
if (limpo.length === 13)
|
|
89
|
+
return validarEAN13(codigo);
|
|
90
|
+
if (limpo.length === 8)
|
|
91
|
+
return validarEAN8(codigo);
|
|
92
|
+
return validarCode128(codigo);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Cria uma grade de armazém com endereçamento automático.
|
|
96
|
+
* @param corredores Lista de letras dos corredores (ex: ['A', 'B', 'C'])
|
|
97
|
+
* @param prateleiras Número de prateleiras por corredor
|
|
98
|
+
* @param niveis Número de níveis por prateleira (1 = chão)
|
|
99
|
+
* @param capacidadeKg Capacidade padrão em kg por posição
|
|
100
|
+
* @param capacidadeM3 Capacidade padrão em m³ por posição
|
|
101
|
+
*/
|
|
102
|
+
export function criarGrade(corredores, prateleiras, niveis, capacidadeKg, capacidadeM3) {
|
|
103
|
+
if (corredores.length === 0)
|
|
104
|
+
throw new Error('Armazém deve ter ao menos 1 corredor');
|
|
105
|
+
if (prateleiras < 1)
|
|
106
|
+
throw new Error('Prateleiras deve ser >= 1');
|
|
107
|
+
if (niveis < 1)
|
|
108
|
+
throw new Error('Níveis deve ser >= 1');
|
|
109
|
+
if (capacidadeKg <= 0)
|
|
110
|
+
throw new Error('capacidadeKg deve ser positivo');
|
|
111
|
+
if (capacidadeM3 <= 0)
|
|
112
|
+
throw new Error('capacidadeM3 deve ser positivo');
|
|
113
|
+
const posicoes = new Map();
|
|
114
|
+
for (const corredor of corredores) {
|
|
115
|
+
for (let p = 1; p <= prateleiras; p++) {
|
|
116
|
+
for (let n = 1; n <= niveis; n++) {
|
|
117
|
+
const codigo = formatarEndereco({ corredor, prateleira: p, nivel: n });
|
|
118
|
+
posicoes.set(codigo, {
|
|
119
|
+
corredor,
|
|
120
|
+
prateleira: p,
|
|
121
|
+
nivel: n,
|
|
122
|
+
codigo,
|
|
123
|
+
capacidadeKg,
|
|
124
|
+
capacidadeM3,
|
|
125
|
+
ocupadoKg: 0,
|
|
126
|
+
ocupadoM3: 0,
|
|
127
|
+
disponivel: true
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
corredores,
|
|
134
|
+
prateleirasPorCorredor: prateleiras,
|
|
135
|
+
niveisPorPrateleira: niveis,
|
|
136
|
+
capacidadePadraoKg: capacidadeKg,
|
|
137
|
+
capacidadePadraoM3: capacidadeM3,
|
|
138
|
+
posicoes
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Formata um endereço de armazém no padrão JADE: 'A-001-1'
|
|
143
|
+
*/
|
|
144
|
+
export function formatarEndereco(end) {
|
|
145
|
+
return `${end.corredor}-${String(end.prateleira).padStart(3, '0')}-${end.nivel}`;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Parseia um código de endereço no formato 'A-001-1' para EnderecoArmazem.
|
|
149
|
+
*/
|
|
150
|
+
export function parsearEndereco(codigo) {
|
|
151
|
+
const partes = codigo.split('-');
|
|
152
|
+
if (partes.length !== 3)
|
|
153
|
+
throw new Error(`Endereço inválido: '${codigo}'. Formato: CORREDOR-PRATELEIRA-NIVEL`);
|
|
154
|
+
const corredor = partes[0];
|
|
155
|
+
const prateleira = parseInt(partes[1], 10);
|
|
156
|
+
const nivel = parseInt(partes[2], 10);
|
|
157
|
+
if (!corredor || isNaN(prateleira) || isNaN(nivel)) {
|
|
158
|
+
throw new Error(`Endereço inválido: '${codigo}'`);
|
|
159
|
+
}
|
|
160
|
+
return { corredor, prateleira, nivel };
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Aloca uma carga em uma posição do armazém.
|
|
164
|
+
* Retorna erro se a posição não tiver capacidade suficiente.
|
|
165
|
+
*/
|
|
166
|
+
export function alocarPosicao(grade, codigo, pesoKg, volumeM3) {
|
|
167
|
+
const pos = grade.posicoes.get(codigo);
|
|
168
|
+
if (!pos)
|
|
169
|
+
return { sucesso: false, mensagem: `Posição '${codigo}' não existe` };
|
|
170
|
+
if (pos.ocupadoKg + pesoKg > pos.capacidadeKg) {
|
|
171
|
+
return {
|
|
172
|
+
sucesso: false,
|
|
173
|
+
mensagem: `Peso excede capacidade: ${pos.ocupadoKg + pesoKg}kg > ${pos.capacidadeKg}kg`
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
if (pos.ocupadoM3 + volumeM3 > pos.capacidadeM3) {
|
|
177
|
+
return {
|
|
178
|
+
sucesso: false,
|
|
179
|
+
mensagem: `Volume excede capacidade: ${(pos.ocupadoM3 + volumeM3).toFixed(3)}m³ > ${pos.capacidadeM3}m³`
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
pos.ocupadoKg += pesoKg;
|
|
183
|
+
pos.ocupadoM3 += volumeM3;
|
|
184
|
+
pos.disponivel = (pos.ocupadoKg < pos.capacidadeKg) && (pos.ocupadoM3 < pos.capacidadeM3);
|
|
185
|
+
return { sucesso: true };
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Libera uma posição do armazém (esvazia ocupação).
|
|
189
|
+
*/
|
|
190
|
+
export function liberarPosicao(grade, codigo) {
|
|
191
|
+
const pos = grade.posicoes.get(codigo);
|
|
192
|
+
if (!pos)
|
|
193
|
+
throw new Error(`Posição '${codigo}' não existe`);
|
|
194
|
+
pos.ocupadoKg = 0;
|
|
195
|
+
pos.ocupadoM3 = 0;
|
|
196
|
+
pos.disponivel = true;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Sugere a melhor posição livre para uma carga com base em peso e volume.
|
|
200
|
+
* Estratégia: posição mais próxima do chão (nível 1) com capacidade suficiente.
|
|
201
|
+
*/
|
|
202
|
+
export function sugerirPosicao(grade, pesoKg, volumeM3) {
|
|
203
|
+
let melhor = null;
|
|
204
|
+
for (const pos of grade.posicoes.values()) {
|
|
205
|
+
if (!pos.disponivel)
|
|
206
|
+
continue;
|
|
207
|
+
if (pos.ocupadoKg + pesoKg > pos.capacidadeKg)
|
|
208
|
+
continue;
|
|
209
|
+
if (pos.ocupadoM3 + volumeM3 > pos.capacidadeM3)
|
|
210
|
+
continue;
|
|
211
|
+
if (!melhor || pos.nivel < melhor.nivel ||
|
|
212
|
+
(pos.nivel === melhor.nivel && pos.prateleira < melhor.prateleira)) {
|
|
213
|
+
melhor = pos;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return melhor;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Retorna estatísticas de ocupação do armazém.
|
|
220
|
+
*/
|
|
221
|
+
export function estatisticasArmazem(grade) {
|
|
222
|
+
let totalKgOcupado = 0;
|
|
223
|
+
let totalM3Ocupado = 0;
|
|
224
|
+
let totalKgCapacidade = 0;
|
|
225
|
+
let totalM3Capacidade = 0;
|
|
226
|
+
let posicoesDisponiveis = 0;
|
|
227
|
+
for (const pos of grade.posicoes.values()) {
|
|
228
|
+
totalKgOcupado += pos.ocupadoKg;
|
|
229
|
+
totalM3Ocupado += pos.ocupadoM3;
|
|
230
|
+
totalKgCapacidade += pos.capacidadeKg;
|
|
231
|
+
totalM3Capacidade += pos.capacidadeM3;
|
|
232
|
+
if (pos.disponivel)
|
|
233
|
+
posicoesDisponiveis++;
|
|
234
|
+
}
|
|
235
|
+
const totalPosicoes = grade.posicoes.size;
|
|
236
|
+
const posicoesOcupadas = totalPosicoes - posicoesDisponiveis;
|
|
237
|
+
return {
|
|
238
|
+
totalPosicoes,
|
|
239
|
+
posicoesDisponiveis,
|
|
240
|
+
posicoesOcupadas,
|
|
241
|
+
ocupacaoPercent: totalPosicoes > 0 ? Math.round((posicoesOcupadas / totalPosicoes) * 100) : 0,
|
|
242
|
+
totalKgOcupado: Math.round(totalKgOcupado * 100) / 100,
|
|
243
|
+
totalM3Ocupado: Math.round(totalM3Ocupado * 1000) / 1000,
|
|
244
|
+
totalKgCapacidade,
|
|
245
|
+
totalM3Capacidade
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
// ── Utilitários internos ──────────────────────────────────────────────────────
|
|
249
|
+
function calcularDigitoEAN(digits) {
|
|
250
|
+
let soma = 0;
|
|
251
|
+
for (let i = 0; i < digits.length; i++) {
|
|
252
|
+
const d = parseInt(digits[i], 10);
|
|
253
|
+
soma += i % 2 === 0 ? d : d * 3;
|
|
254
|
+
}
|
|
255
|
+
return (10 - (soma % 10)) % 10;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=wms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wms.js","sourceRoot":"","sources":["../../stdlib/wms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartao.d.ts","sourceRoot":"","sources":["../../../ui/components/cartao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,wBAAgB,YAAY,CAC1B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAClB,SAAS,EAAE,WAAW,GACrB,IAAI,CAEN"}
|