@adonis-agora/payments 0.16.2 → 0.18.0
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/CHANGELOG.md +27 -0
- package/dist/assets/spa/assets/index-CmP4DYhG.js +10 -0
- package/dist/assets/spa/assets/index-CmP4DYhG.js.map +1 -0
- package/dist/assets/spa/index.html +1 -1
- package/dist/src/billing/billing_store.d.ts +26 -2
- package/dist/src/billing/billing_store.d.ts.map +1 -1
- package/dist/src/billing/billing_store.js.map +1 -1
- package/dist/src/billing/lucid_billing_store.d.ts +3 -1
- package/dist/src/billing/lucid_billing_store.d.ts.map +1 -1
- package/dist/src/billing/lucid_billing_store.js +9 -1
- package/dist/src/billing/lucid_billing_store.js.map +1 -1
- package/dist/src/billing/managed_subscriptions.d.ts +12 -0
- package/dist/src/billing/managed_subscriptions.d.ts.map +1 -1
- package/dist/src/billing/managed_subscriptions.js +13 -3
- package/dist/src/billing/managed_subscriptions.js.map +1 -1
- package/dist/src/billing/mixins/with_subscription.d.ts +5 -1
- package/dist/src/billing/mixins/with_subscription.d.ts.map +1 -1
- package/dist/src/billing/mixins/with_subscription.js.map +1 -1
- package/dist/src/billing/mixins/with_usage_event.d.ts +8 -0
- package/dist/src/billing/mixins/with_usage_event.d.ts.map +1 -1
- package/dist/src/billing/mixins/with_usage_event.js +6 -0
- package/dist/src/billing/mixins/with_usage_event.js.map +1 -1
- package/dist/src/billing/schema.d.ts.map +1 -1
- package/dist/src/billing/schema.js +15 -0
- package/dist/src/billing/schema.js.map +1 -1
- package/dist/src/billing/usage.d.ts +121 -0
- package/dist/src/billing/usage.d.ts.map +1 -0
- package/dist/src/billing/usage.js +123 -0
- package/dist/src/billing/usage.js.map +1 -0
- package/dist/src/drivers/asaas.d.ts.map +1 -1
- package/dist/src/drivers/asaas.js +41 -0
- package/dist/src/drivers/asaas.js.map +1 -1
- package/dist/src/index.d.ts +6 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/invoice/drivers/asaas.d.ts +44 -1
- package/dist/src/invoice/drivers/asaas.d.ts.map +1 -1
- package/dist/src/invoice/drivers/asaas.js +152 -42
- package/dist/src/invoice/drivers/asaas.js.map +1 -1
- package/dist/src/invoice/drivers/enotas.d.ts +2 -0
- package/dist/src/invoice/drivers/enotas.d.ts.map +1 -1
- package/dist/src/invoice/drivers/enotas.js +5 -0
- package/dist/src/invoice/drivers/enotas.js.map +1 -1
- package/dist/src/invoice/drivers/focus.d.ts +2 -0
- package/dist/src/invoice/drivers/focus.d.ts.map +1 -1
- package/dist/src/invoice/drivers/focus.js +5 -0
- package/dist/src/invoice/drivers/focus.js.map +1 -1
- package/dist/src/invoice/drivers/plugnotas.d.ts +2 -0
- package/dist/src/invoice/drivers/plugnotas.d.ts.map +1 -1
- package/dist/src/invoice/drivers/plugnotas.js +5 -0
- package/dist/src/invoice/drivers/plugnotas.js.map +1 -1
- package/dist/src/invoice/drivers/shared.d.ts +7 -0
- package/dist/src/invoice/drivers/shared.d.ts.map +1 -0
- package/dist/src/invoice/drivers/shared.js +9 -0
- package/dist/src/invoice/drivers/shared.js.map +1 -0
- package/dist/src/invoice/drivers/tecnospeed.d.ts +2 -0
- package/dist/src/invoice/drivers/tecnospeed.d.ts.map +1 -1
- package/dist/src/invoice/drivers/tecnospeed.js +5 -0
- package/dist/src/invoice/drivers/tecnospeed.js.map +1 -1
- package/dist/src/invoice/emit_invoice.d.ts.map +1 -1
- package/dist/src/invoice/emit_invoice.js +6 -0
- package/dist/src/invoice/emit_invoice.js.map +1 -1
- package/dist/src/invoice/invoice_provider.d.ts +51 -4
- package/dist/src/invoice/invoice_provider.d.ts.map +1 -1
- package/dist/src/payments_manager.d.ts +19 -0
- package/dist/src/payments_manager.d.ts.map +1 -1
- package/dist/src/payments_manager.js +28 -0
- package/dist/src/payments_manager.js.map +1 -1
- package/dist/src/testing/in_memory_billing_store.d.ts +5 -1
- package/dist/src/testing/in_memory_billing_store.d.ts.map +1 -1
- package/dist/src/testing/in_memory_billing_store.js +6 -0
- package/dist/src/testing/in_memory_billing_store.js.map +1 -1
- package/dist/src/types.d.ts +39 -1
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +44 -40
- package/dist/assets/spa/assets/index-1Gb8l6g0.js +0 -10
- package/dist/assets/spa/assets/index-1Gb8l6g0.js.map +0 -1
package/dist/src/index.js
CHANGED
|
@@ -6,7 +6,7 @@ export { AUDIT_ACTIONS, OPEN_DISPUTE_STATUSES } from './billing/billing_store.js
|
|
|
6
6
|
export { withBillable, withPayment, withSubscription, } from './billing/index.js';
|
|
7
7
|
export { BILLING_LIST_DEFAULT_SIZE, BILLING_LIST_MAX_SIZE, } from './billing/list_query.js';
|
|
8
8
|
export { LucidBillingStore, lucidBillingStore } from './billing/lucid_billing_store.js';
|
|
9
|
-
export { advancePeriod, cancelManagedSubscription, createManagedSubscription, cycleIdempotencyKey, renewDueManagedSubscriptions, resumeManagedSubscription, updateManagedSubscription, } from './billing/managed_subscriptions.js';
|
|
9
|
+
export { advancePeriod, advancePeriodBy, cancelManagedSubscription, createManagedSubscription, cycleIdempotencyKey, renewDueManagedSubscriptions, resumeManagedSubscription, updateManagedSubscription, } from './billing/managed_subscriptions.js';
|
|
10
10
|
export { meteredBill, meteredBillForSubscription } from './billing/metered_bill.js';
|
|
11
11
|
export { BillingAuditEvent } from './billing/mixins/with_audit_event.js';
|
|
12
12
|
export { BillingCustomer } from './billing/mixins/with_customer.js';
|
|
@@ -14,6 +14,7 @@ export { BillingDispute } from './billing/mixins/with_dispute.js';
|
|
|
14
14
|
export { BillingUsageEvent } from './billing/mixins/with_usage_event.js';
|
|
15
15
|
export { resolveBillingStore } from './billing/resolve_store.js';
|
|
16
16
|
export { BILLING_TABLES, createBillingTables, dropBillingTables, truncateBillingTables, } from './billing/schema.js';
|
|
17
|
+
export { createUsageApi, usagePeriodFor, usageRemaining, usageTotal, } from './billing/usage.js';
|
|
17
18
|
/**
|
|
18
19
|
* The canonical event types, as a value and as a type.
|
|
19
20
|
*
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAsBhE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EACL,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAExF,OAAO,EACL,aAAa,EACb,eAAe,EACf,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAMjE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,oBAAoB,CAAC;AAa5B;;;;;;GAMG;AACH,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAiClE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAWpF,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,gCAAgC,EAChC,yBAAyB,EACzB,eAAe,EACf,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,yBAAyB,EACzB,+BAA+B,EAC/B,oBAAoB,EACpB,aAAa,EACb,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAqB1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMvF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKxE,OAAO,EACL,eAAe,EACf,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAsC1D,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,6BAA6B,EAC7B,aAAa,EACb,qBAAqB,GACtB,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,15 +1,50 @@
|
|
|
1
1
|
import type { Invoice } from '../../types.js';
|
|
2
|
-
import type { InvoiceEmitInput, InvoiceProvider } from '../invoice_provider.js';
|
|
2
|
+
import type { InvoiceCancelOptions, InvoiceEmitInput, InvoiceProvider } from '../invoice_provider.js';
|
|
3
3
|
export interface AsaasInvoiceConfig {
|
|
4
4
|
/** Asaas API key. Defaults to `env.get('ASAAS_API_KEY')`. */
|
|
5
5
|
apiKey?: string;
|
|
6
6
|
/** Use the Asaas sandbox environment. Defaults to `NODE_ENV !== 'production'`. */
|
|
7
7
|
sandbox?: boolean;
|
|
8
8
|
}
|
|
9
|
+
/** `InvoiceGetResponseInvoiceStatus` in Asaas' reference. */
|
|
10
|
+
type AsaasInvoiceStatus = 'SCHEDULED' | 'SYNCHRONIZED' | 'AUTHORIZED' | 'PROCESSING_CANCELLATION' | 'CANCELED' | 'CANCELLATION_DENIED' | 'ERROR';
|
|
11
|
+
/** `InvoiceGetResponseDTO` — the fields this driver reads. The whole object is kept in `payload`. */
|
|
12
|
+
export interface AsaasInvoiceResponse {
|
|
13
|
+
id: string;
|
|
14
|
+
status?: AsaasInvoiceStatus | string;
|
|
15
|
+
customer?: string | null;
|
|
16
|
+
payment?: string | null;
|
|
17
|
+
installment?: string | null;
|
|
18
|
+
statusDescription?: string | null;
|
|
19
|
+
serviceDescription?: string | null;
|
|
20
|
+
pdfUrl?: string | null;
|
|
21
|
+
xmlUrl?: string | null;
|
|
22
|
+
number?: string | null;
|
|
23
|
+
validationCode?: string | null;
|
|
24
|
+
value?: number;
|
|
25
|
+
deductions?: number;
|
|
26
|
+
/** `YYYY-MM-DD`. */
|
|
27
|
+
effectiveDate?: string | null;
|
|
28
|
+
observations?: string | null;
|
|
29
|
+
externalReference?: string | null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The normalized status of an Asaas NFS-e.
|
|
33
|
+
*
|
|
34
|
+
* `PROCESSING_CANCELLATION` and `CANCELLATION_DENIED` stay `issued`: the note is still valid
|
|
35
|
+
* at the city hall until `CANCELED` says otherwise. `ERROR` is `failed` — the note was not
|
|
36
|
+
* authorized and `statusDescription` says why.
|
|
37
|
+
*/
|
|
38
|
+
export declare function mapAsaasInvoiceStatus(status: string | undefined): Invoice['status'];
|
|
9
39
|
/**
|
|
10
40
|
* Asaas native NFS-e invoice provider — emits the fiscal note through Asaas's own
|
|
11
41
|
* invoice API (`/v3/invoices`), so a charge through Asaas with `invoice: true` uses the
|
|
12
42
|
* same gateway that took the payment. Uses `fetch` directly (no SDK dependency).
|
|
43
|
+
*
|
|
44
|
+
* `POST /v3/invoices` SCHEDULES the note for `effectiveDate`; it does not mean the city hall
|
|
45
|
+
* authorized it. The returned invoice is `pending` until the `INVOICE_AUTHORIZED` webhook
|
|
46
|
+
* (`nfse.authorized` through the Asaas payments driver) or a later {@link find} says
|
|
47
|
+
* `issued`.
|
|
13
48
|
*/
|
|
14
49
|
export declare class AsaasInvoiceProvider implements InvoiceProvider {
|
|
15
50
|
#private;
|
|
@@ -19,5 +54,13 @@ export declare class AsaasInvoiceProvider implements InvoiceProvider {
|
|
|
19
54
|
}, config?: AsaasInvoiceConfig);
|
|
20
55
|
emit(input: InvoiceEmitInput): Promise<Invoice>;
|
|
21
56
|
find(invoiceId: string): Promise<Invoice | null>;
|
|
57
|
+
/**
|
|
58
|
+
* `POST /v3/invoices/{id}/cancel`. The cancellation goes through the city hall unless
|
|
59
|
+
* `providerOnly` (Asaas' `cancelOnlyOnAsaas`); follow `nfse.canceled` /
|
|
60
|
+
* `nfse.cancellation_denied` for the outcome. `reason` is not sent: Asaas' cancel endpoint
|
|
61
|
+
* takes no justification.
|
|
62
|
+
*/
|
|
63
|
+
cancel(invoiceId: string, options?: InvoiceCancelOptions): Promise<Invoice>;
|
|
22
64
|
}
|
|
65
|
+
export {};
|
|
23
66
|
//# sourceMappingURL=asaas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asaas.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/asaas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"asaas.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/asaas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,6DAA6D;AAC7D,KAAK,kBAAkB,GACnB,WAAW,GACX,cAAc,GACd,YAAY,GACZ,yBAAyB,GACzB,UAAU,GACV,qBAAqB,GACrB,OAAO,CAAC;AAEZ,qGAAqG;AACrG,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAgBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAcnF;AAED;;;;;;;;;GASG;AACH,qBAAa,oBAAqB,YAAW,eAAe;;IAC1D,QAAQ,CAAC,QAAQ,WAAW;IAK5B,YAAY,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,kBAAuB,EAU3E;IAEK,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBpD;IAEK,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAMrD;IAED;;;;;OAKG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CASpF;CAiIF"}
|
|
@@ -1,7 +1,44 @@
|
|
|
1
|
+
import { fromDecimal, toDecimal } from '../../money.js';
|
|
2
|
+
/** Today in Brasília, `YYYY-MM-DD` — the date Asaas' fiscal calendar runs on, not the process's. */
|
|
3
|
+
function todayInBrasilia() {
|
|
4
|
+
return new Intl.DateTimeFormat('en-CA', {
|
|
5
|
+
timeZone: 'America/Sao_Paulo',
|
|
6
|
+
year: 'numeric',
|
|
7
|
+
month: '2-digit',
|
|
8
|
+
day: '2-digit',
|
|
9
|
+
}).format(new Date());
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The normalized status of an Asaas NFS-e.
|
|
13
|
+
*
|
|
14
|
+
* `PROCESSING_CANCELLATION` and `CANCELLATION_DENIED` stay `issued`: the note is still valid
|
|
15
|
+
* at the city hall until `CANCELED` says otherwise. `ERROR` is `failed` — the note was not
|
|
16
|
+
* authorized and `statusDescription` says why.
|
|
17
|
+
*/
|
|
18
|
+
export function mapAsaasInvoiceStatus(status) {
|
|
19
|
+
switch (status) {
|
|
20
|
+
case 'AUTHORIZED':
|
|
21
|
+
case 'PROCESSING_CANCELLATION':
|
|
22
|
+
case 'CANCELLATION_DENIED':
|
|
23
|
+
return 'issued';
|
|
24
|
+
case 'CANCELED':
|
|
25
|
+
return 'canceled';
|
|
26
|
+
case 'ERROR':
|
|
27
|
+
return 'failed';
|
|
28
|
+
default:
|
|
29
|
+
// SCHEDULED, SYNCHRONIZED, or a status this driver does not know yet.
|
|
30
|
+
return 'pending';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
1
33
|
/**
|
|
2
34
|
* Asaas native NFS-e invoice provider — emits the fiscal note through Asaas's own
|
|
3
35
|
* invoice API (`/v3/invoices`), so a charge through Asaas with `invoice: true` uses the
|
|
4
36
|
* same gateway that took the payment. Uses `fetch` directly (no SDK dependency).
|
|
37
|
+
*
|
|
38
|
+
* `POST /v3/invoices` SCHEDULES the note for `effectiveDate`; it does not mean the city hall
|
|
39
|
+
* authorized it. The returned invoice is `pending` until the `INVOICE_AUTHORIZED` webhook
|
|
40
|
+
* (`nfse.authorized` through the Asaas payments driver) or a later {@link find} says
|
|
41
|
+
* `issued`.
|
|
5
42
|
*/
|
|
6
43
|
export class AsaasInvoiceProvider {
|
|
7
44
|
provider = 'asaas';
|
|
@@ -17,66 +54,139 @@ export class AsaasInvoiceProvider {
|
|
|
17
54
|
this.#apiKey = apiKey;
|
|
18
55
|
}
|
|
19
56
|
async emit(input) {
|
|
20
|
-
const body =
|
|
21
|
-
|
|
22
|
-
|
|
57
|
+
const body = this.#buildBody(input);
|
|
58
|
+
// Idempotency. Asaas has no idempotency key on `POST /invoices`, but it stores and
|
|
59
|
+
// filters by `externalReference`; a retry of an emit that reached Asaas (timeout,
|
|
60
|
+
// crash after the response) would otherwise schedule a SECOND legal document. A
|
|
61
|
+
// cancelled or failed (`ERROR`) note does not count — re-emitting after one is the point.
|
|
62
|
+
if (input.externalReference !== undefined) {
|
|
63
|
+
const existing = await this.#findLiveByReference(input.externalReference);
|
|
64
|
+
if (existing)
|
|
65
|
+
return this.#mapInvoice(existing);
|
|
66
|
+
}
|
|
67
|
+
const data = await this.#request('/invoices', {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
body,
|
|
70
|
+
});
|
|
71
|
+
return this.#mapInvoice(data);
|
|
72
|
+
}
|
|
73
|
+
async find(invoiceId) {
|
|
74
|
+
const data = await this.#request(`/invoices/${encodeURIComponent(invoiceId)}`, { allowNotFound: true });
|
|
75
|
+
return data === null ? null : this.#mapInvoice(data);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* `POST /v3/invoices/{id}/cancel`. The cancellation goes through the city hall unless
|
|
79
|
+
* `providerOnly` (Asaas' `cancelOnlyOnAsaas`); follow `nfse.canceled` /
|
|
80
|
+
* `nfse.cancellation_denied` for the outcome. `reason` is not sent: Asaas' cancel endpoint
|
|
81
|
+
* takes no justification.
|
|
82
|
+
*/
|
|
83
|
+
async cancel(invoiceId, options = {}) {
|
|
84
|
+
const data = await this.#request(`/invoices/${encodeURIComponent(invoiceId)}/cancel`, {
|
|
85
|
+
method: 'POST',
|
|
86
|
+
body: options.providerOnly !== undefined ? { cancelOnlyOnAsaas: options.providerOnly } : {},
|
|
87
|
+
});
|
|
88
|
+
return this.#mapInvoice(data);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The `InvoiceSaveRequestDTO` body.
|
|
92
|
+
*
|
|
93
|
+
* Asaas identifies the recipient by the CHARGE (`payment`) or by ITS OWN customer id
|
|
94
|
+
* (`customer`, `cus_…`) — the CPF/CNPJ is not accepted there. The charge only counts when
|
|
95
|
+
* it was taken by Asaas: an id from another gateway means nothing to Asaas.
|
|
96
|
+
*/
|
|
97
|
+
#buildBody(input) {
|
|
98
|
+
const paymentId = input.payment !== undefined && input.payment.provider === this.provider
|
|
99
|
+
? input.payment.gatewayId
|
|
100
|
+
: undefined;
|
|
101
|
+
const customerId = input.customer.gatewayId;
|
|
102
|
+
if (paymentId === undefined && customerId === undefined) {
|
|
103
|
+
throw new Error('[payments] Asaas invoices need the Asaas charge (`payment` from an Asaas charge) or the Asaas customer id (`customer.gatewayId`, `cus_…`). Asaas does not accept the CPF/CNPJ as the customer.');
|
|
104
|
+
}
|
|
105
|
+
const municipalServiceCode = input.service.cityServiceCode ?? input.service.code;
|
|
106
|
+
return {
|
|
107
|
+
...(paymentId !== undefined ? { payment: paymentId } : {}),
|
|
108
|
+
...(customerId !== undefined ? { customer: customerId } : {}),
|
|
23
109
|
serviceDescription: input.service.description,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
110
|
+
// Required by Asaas; an empty string when the caller has nothing to add.
|
|
111
|
+
observations: input.observations ?? '',
|
|
112
|
+
...(input.externalReference !== undefined
|
|
113
|
+
? { externalReference: input.externalReference }
|
|
27
114
|
: {}),
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
...(input.
|
|
115
|
+
value: toDecimal(input.amount, input.currency),
|
|
116
|
+
deductions: toDecimal(input.deductions ?? 0, input.currency),
|
|
117
|
+
effectiveDate: input.effectiveDate ?? todayInBrasilia(),
|
|
118
|
+
...(input.service.municipalServiceId !== undefined
|
|
119
|
+
? { municipalServiceId: input.service.municipalServiceId }
|
|
120
|
+
: {}),
|
|
121
|
+
...(municipalServiceCode !== undefined ? { municipalServiceCode } : {}),
|
|
122
|
+
// Listed as required in the request schema, while its description says Asaas falls back
|
|
123
|
+
// to the code. Sending the code ourselves makes that fallback explicit.
|
|
124
|
+
...(input.service.municipalServiceName !== undefined
|
|
125
|
+
? { municipalServiceName: input.service.municipalServiceName }
|
|
126
|
+
: municipalServiceCode !== undefined
|
|
127
|
+
? { municipalServiceName: municipalServiceCode }
|
|
128
|
+
: {}),
|
|
129
|
+
taxes: this.#buildTaxes(input),
|
|
32
130
|
};
|
|
33
|
-
|
|
34
|
-
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* `InvoiceTaxesRequestDTO`. Asaas requires `retainIss`, `iss`, `pis`, `cofins`, `csll`,
|
|
134
|
+
* `inss` and `ir`. The retentions default to "none" (`false` / `0`), the common case; the
|
|
135
|
+
* ISS rate does NOT default — a wrong rate prints a wrong legal document, so a missing one
|
|
136
|
+
* is refused here instead of being sent as 0. Any other key the caller passes (`nbsCode`,
|
|
137
|
+
* the tax-reform fields) goes through as-is.
|
|
138
|
+
*/
|
|
139
|
+
#buildTaxes(input) {
|
|
140
|
+
const tax = input.tax ?? {};
|
|
141
|
+
if (typeof tax.iss !== 'number') {
|
|
142
|
+
throw new Error('[payments] Asaas invoices need the ISS rate: pass `tax.iss` (percent, e.g. 2 for 2%) on the invoice option.');
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
...tax,
|
|
146
|
+
retainIss: tax.retainIss ?? false,
|
|
147
|
+
iss: tax.iss,
|
|
148
|
+
pis: tax.pis ?? 0,
|
|
149
|
+
cofins: tax.cofins ?? 0,
|
|
150
|
+
csll: tax.csll ?? 0,
|
|
151
|
+
inss: tax.inss ?? 0,
|
|
152
|
+
ir: tax.ir ?? 0,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
async #findLiveByReference(reference) {
|
|
156
|
+
const list = await this.#request(`/invoices?externalReference=${encodeURIComponent(reference)}&limit=100`);
|
|
157
|
+
// Cancelled and ERROR notes are terminal and not valid documents: re-emitting after
|
|
158
|
+
// either is the retry the caller is asking for.
|
|
159
|
+
return ((list.data ?? []).find((invoice) => invoice.status !== 'CANCELED' && invoice.status !== 'ERROR') ?? null);
|
|
160
|
+
}
|
|
161
|
+
async #request(path, options = {}) {
|
|
162
|
+
const response = await fetch(`${this.#baseUrl}${path}`, {
|
|
163
|
+
method: options.method ?? 'GET',
|
|
35
164
|
headers: {
|
|
36
165
|
access_token: this.#apiKey,
|
|
37
|
-
'Content-Type': 'application/json',
|
|
166
|
+
...(options.body !== undefined ? { 'Content-Type': 'application/json' } : {}),
|
|
38
167
|
},
|
|
39
|
-
body: JSON.stringify(body),
|
|
40
|
-
});
|
|
41
|
-
if (!response.ok) {
|
|
42
|
-
const text = await response.text();
|
|
43
|
-
throw new Error(`[payments] Asaas invoice request failed (${response.status}): ${text}`);
|
|
44
|
-
}
|
|
45
|
-
const data = (await response.json());
|
|
46
|
-
return this.#mapInvoice(data);
|
|
47
|
-
}
|
|
48
|
-
async find(invoiceId) {
|
|
49
|
-
const response = await fetch(`${this.#baseUrl}/invoices/${encodeURIComponent(invoiceId)}`, {
|
|
50
|
-
headers: { access_token: this.#apiKey },
|
|
168
|
+
...(options.body !== undefined ? { body: JSON.stringify(options.body) } : {}),
|
|
51
169
|
});
|
|
52
|
-
if (response.status === 404)
|
|
170
|
+
if (options.allowNotFound && response.status === 404)
|
|
53
171
|
return null;
|
|
54
172
|
if (!response.ok) {
|
|
55
173
|
const text = await response.text();
|
|
56
174
|
throw new Error(`[payments] Asaas invoice request failed (${response.status}): ${text}`);
|
|
57
175
|
}
|
|
58
|
-
|
|
59
|
-
return this.#mapInvoice(data);
|
|
176
|
+
return (await response.json());
|
|
60
177
|
}
|
|
61
178
|
#mapInvoice(data) {
|
|
62
|
-
const status = data.status
|
|
63
|
-
const normalized = status === 'AUTHORIZED' || status === 'PAID'
|
|
64
|
-
? 'issued'
|
|
65
|
-
: status === 'CANCELED' || status === 'REJECTED'
|
|
66
|
-
? 'canceled'
|
|
67
|
-
: 'pending';
|
|
179
|
+
const status = mapAsaasInvoiceStatus(data.status);
|
|
68
180
|
return {
|
|
69
181
|
id: data.id,
|
|
70
182
|
gatewayId: data.id,
|
|
71
183
|
provider: this.provider,
|
|
72
|
-
...(data.
|
|
73
|
-
|
|
74
|
-
...(data.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
...(data.pdfUrl !== undefined ? { hostedPdfUrl: data.pdfUrl } : {}),
|
|
79
|
-
amount: { amount: Math.round(Number(data.value ?? 0) * 100), currency: 'brl' },
|
|
184
|
+
...(data.customer ? { customerId: data.customer } : {}),
|
|
185
|
+
status,
|
|
186
|
+
...(data.number ? { number: data.number } : {}),
|
|
187
|
+
...(data.pdfUrl ? { hostedPdfUrl: data.pdfUrl } : {}),
|
|
188
|
+
...(status === 'issued' && data.effectiveDate ? { issuedAt: data.effectiveDate } : {}),
|
|
189
|
+
amount: { amount: fromDecimal(Number(data.value ?? 0), 'brl'), currency: 'brl' },
|
|
80
190
|
createdAt: new Date().toISOString(),
|
|
81
191
|
payload: data,
|
|
82
192
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asaas.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/asaas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"asaas.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/asaas.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,5 +19,7 @@ export declare class ENotasInvoiceProvider implements InvoiceProvider {
|
|
|
19
19
|
}, config?: ENotasInvoiceConfig);
|
|
20
20
|
emit(input: InvoiceEmitInput): Promise<Invoice>;
|
|
21
21
|
find(invoiceId: string): Promise<Invoice | null>;
|
|
22
|
+
/** Cancellation is not implemented for this provider yet. */
|
|
23
|
+
cancel(_invoiceId: string): Promise<Invoice>;
|
|
22
24
|
}
|
|
23
25
|
//# sourceMappingURL=enotas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enotas.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/enotas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"enotas.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/enotas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGhF,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,eAAe;;IAC3D,QAAQ,CAAC,QAAQ,YAAY;IAK7B,YAAY,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,mBAAwB,EAS5E;IAEK,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BpD;IAEK,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAWrD;IAED,6DAA6D;IAC7D,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3C;CAuBF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { unsupportedInvoiceCancel } from './shared.js';
|
|
1
2
|
/**
|
|
2
3
|
* eNotas invoice provider — REST API for NFS-e/NF-e across Brazilian municipalities.
|
|
3
4
|
* Uses `fetch` directly (no SDK dependency). Exact field names follow the eNotas API;
|
|
@@ -59,6 +60,10 @@ export class ENotasInvoiceProvider {
|
|
|
59
60
|
const data = (await response.json());
|
|
60
61
|
return this.#mapInvoice(data);
|
|
61
62
|
}
|
|
63
|
+
/** Cancellation is not implemented for this provider yet. */
|
|
64
|
+
cancel(_invoiceId) {
|
|
65
|
+
return Promise.reject(unsupportedInvoiceCancel(this.provider));
|
|
66
|
+
}
|
|
62
67
|
#mapInvoice(data) {
|
|
63
68
|
const status = data.status ?? '';
|
|
64
69
|
const normalized = status === 'AUTORIZADO' || status === 'AUTORIZADA'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enotas.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/enotas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"enotas.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/enotas.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,5 +19,7 @@ export declare class FocusInvoiceProvider implements InvoiceProvider {
|
|
|
19
19
|
}, config?: FocusInvoiceConfig);
|
|
20
20
|
emit(input: InvoiceEmitInput): Promise<Invoice>;
|
|
21
21
|
find(invoiceId: string): Promise<Invoice | null>;
|
|
22
|
+
/** Cancellation is not implemented for this provider yet. */
|
|
23
|
+
cancel(_invoiceId: string): Promise<Invoice>;
|
|
22
24
|
}
|
|
23
25
|
//# sourceMappingURL=focus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGhF,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,eAAe;;IAC1D,QAAQ,CAAC,QAAQ,WAAW;IAK5B,YAAY,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,kBAAuB,EAS3E;IAEK,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmCpD;IAEK,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAWrD;IAED,6DAA6D;IAC7D,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3C;CA0BF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { unsupportedInvoiceCancel } from './shared.js';
|
|
1
2
|
/**
|
|
2
3
|
* Focus NFe invoice provider — REST API for electronic invoices across hundreds of
|
|
3
4
|
* municipalities. Uses `fetch` directly (no SDK dependency), so Focus is not a peer
|
|
@@ -63,6 +64,10 @@ export class FocusInvoiceProvider {
|
|
|
63
64
|
const data = (await response.json());
|
|
64
65
|
return this.#mapInvoice(data);
|
|
65
66
|
}
|
|
67
|
+
/** Cancellation is not implemented for this provider yet. */
|
|
68
|
+
cancel(_invoiceId) {
|
|
69
|
+
return Promise.reject(unsupportedInvoiceCancel(this.provider));
|
|
70
|
+
}
|
|
66
71
|
#mapInvoice(data) {
|
|
67
72
|
const status = data.status ?? 'pendente';
|
|
68
73
|
const normalized = status === 'autorizado'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/focus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"focus.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/focus.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,5 +18,7 @@ export declare class PlugNotasInvoiceProvider implements InvoiceProvider {
|
|
|
18
18
|
}, config?: PlugNotasInvoiceConfig);
|
|
19
19
|
emit(input: InvoiceEmitInput): Promise<Invoice>;
|
|
20
20
|
find(invoiceId: string): Promise<Invoice | null>;
|
|
21
|
+
/** Cancellation is not implemented for this provider yet. */
|
|
22
|
+
cancel(_invoiceId: string): Promise<Invoice>;
|
|
21
23
|
}
|
|
22
24
|
//# sourceMappingURL=plugnotas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugnotas.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/plugnotas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugnotas.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/plugnotas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGhF,MAAM,WAAW,sBAAsB;IACrC,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,eAAe;;IAC9D,QAAQ,CAAC,QAAQ,eAAe;IAKhC,YAAY,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,sBAA2B,EAS/E;IAEK,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BpD;IAEK,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAWrD;IAED,6DAA6D;IAC7D,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3C;CAuBF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { unsupportedInvoiceCancel } from './shared.js';
|
|
1
2
|
/**
|
|
2
3
|
* PlugNotas invoice provider — NFS-e API. Uses `fetch` directly (no SDK dependency).
|
|
3
4
|
* Exact field names follow the PlugNotas API; if a variant differs, extend this driver.
|
|
@@ -57,6 +58,10 @@ export class PlugNotasInvoiceProvider {
|
|
|
57
58
|
const data = (await response.json());
|
|
58
59
|
return this.#mapInvoice(data);
|
|
59
60
|
}
|
|
61
|
+
/** Cancellation is not implemented for this provider yet. */
|
|
62
|
+
cancel(_invoiceId) {
|
|
63
|
+
return Promise.reject(unsupportedInvoiceCancel(this.provider));
|
|
64
|
+
}
|
|
60
65
|
#mapInvoice(data) {
|
|
61
66
|
const status = data.status ?? '';
|
|
62
67
|
const normalized = status === 'AUTORIZADO' || status === 'AUTORIZADA' || status === 'emitido'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugnotas.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/plugnotas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugnotas.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/plugnotas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The error a provider throws for a cancellation it does not implement. A fiscal invoice
|
|
3
|
+
* that is still valid at the city hall must never read as cancelled, so this refuses
|
|
4
|
+
* loudly instead of returning the invoice unchanged.
|
|
5
|
+
*/
|
|
6
|
+
export declare function unsupportedInvoiceCancel(provider: string): Error;
|
|
7
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAIhE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The error a provider throws for a cancellation it does not implement. A fiscal invoice
|
|
3
|
+
* that is still valid at the city hall must never read as cancelled, so this refuses
|
|
4
|
+
* loudly instead of returning the invoice unchanged.
|
|
5
|
+
*/
|
|
6
|
+
export function unsupportedInvoiceCancel(provider) {
|
|
7
|
+
return new Error(`[payments] Cancelling an invoice is not supported by the "${provider}" invoice provider. Cancel it in the provider's dashboard.`);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,OAAO,IAAI,KAAK,CACd,6DAA6D,QAAQ,4DAA4D,CAClI,CAAC;AACJ,CAAC"}
|
|
@@ -25,5 +25,7 @@ export declare class TecnospeedInvoiceProvider implements InvoiceProvider {
|
|
|
25
25
|
}, config?: TecnospeedInvoiceConfig);
|
|
26
26
|
emit(input: InvoiceEmitInput): Promise<Invoice>;
|
|
27
27
|
find(invoiceId: string): Promise<Invoice | null>;
|
|
28
|
+
/** Cancellation is not implemented for this provider yet. */
|
|
29
|
+
cancel(_invoiceId: string): Promise<Invoice>;
|
|
28
30
|
}
|
|
29
31
|
//# sourceMappingURL=tecnospeed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tecnospeed.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/tecnospeed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tecnospeed.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/tecnospeed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGhF,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD;;;;;;GAMG;AACH,qBAAa,yBAA0B,YAAW,eAAe;;IAC/D,QAAQ,CAAC,QAAQ,gBAAgB;IAKjC,YAAY,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,uBAA4B,EAShF;IAEK,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCpD;IAEK,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAWrD;IAED,6DAA6D;IAC7D,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3C;CAuBF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { unsupportedInvoiceCancel } from './shared.js';
|
|
1
2
|
/**
|
|
2
3
|
* Tecnospeed invoice provider — NFS-e across municipalities. Uses `fetch` directly (no
|
|
3
4
|
* SDK dependency). The exact JSON layout varies per municipality and standard (Tecnospeed
|
|
@@ -63,6 +64,10 @@ export class TecnospeedInvoiceProvider {
|
|
|
63
64
|
const data = (await response.json());
|
|
64
65
|
return this.#mapInvoice(data);
|
|
65
66
|
}
|
|
67
|
+
/** Cancellation is not implemented for this provider yet. */
|
|
68
|
+
cancel(_invoiceId) {
|
|
69
|
+
return Promise.reject(unsupportedInvoiceCancel(this.provider));
|
|
70
|
+
}
|
|
66
71
|
#mapInvoice(data) {
|
|
67
72
|
const status = data.status ?? '';
|
|
68
73
|
const normalized = status === 'autorizado' || status === 'AUTORIZADO' || status === 'emitido'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tecnospeed.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/tecnospeed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tecnospeed.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/tecnospeed.ts"],"names":[],"mappings":"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"}
|