feat: enhance invoice handling with success messages and payment data integration
Production CI / validate-and-build (push) Failing after 1m7s

This commit is contained in:
2026-06-17 10:03:06 +03:30
parent e5f53c2265
commit 4e4cc08224
3 changed files with 32 additions and 6 deletions
@@ -1,6 +1,8 @@
import { TspProviderResponseStatus } from '@/shared/catalog';
import { IPosSaleInvoicesSummaryResponse } from './io';
export interface IPosSaleInvoiceFiscalActionResponse {
invoice: IPosSaleInvoicesSummaryResponse;
message?: string;
status: TspProviderResponseStatus;
}
@@ -94,7 +94,12 @@ export class PosSaleInvoiceComponent {
this.correctionLoading.set(false);
})
)
.subscribe();
.subscribe((res) => {
this.toastService.success({
text: `اصلاحیه‌ی صورت‌حساب با شماره‌ی ${res.invoice?.invoice_number} با موفقیت ایجاد شد.`,
});
this.store.updateStatus(res.status);
});
}
returnFromSale(data: IPosReturnFromSaleRequest) {
this.backFromSaleLoading.set(true);
@@ -105,7 +110,12 @@ export class PosSaleInvoiceComponent {
this.backFromSaleLoading.set(false);
})
)
.subscribe();
.subscribe((res) => {
this.toastService.success({
text: `برگشت از فروش با شماره‌ی ${res.invoice?.invoice_number} با موفقیت ایجاد شد.`,
});
this.store.updateStatus(res.status);
});
}
revoke() {
this.revokeLoading.set(true);
@@ -116,7 +126,12 @@ export class PosSaleInvoiceComponent {
this.revokeLoading.set(false);
})
)
.subscribe();
.subscribe((res) => {
this.toastService.success({
text: `صورت‌حساب شماره‌ی ${res.invoice?.invoice_number} با موفقیت ابطال شد.`,
});
this.store.updateStatus(res.status);
});
}
ngOnInit() {
@@ -110,8 +110,10 @@ export class SharedSaleInvoiceSingleViewComponent {
showQrCodeDialog = signal(false);
showCorrectionPaymentDialog = signal(false);
correctionRequiredPayment = signal(0);
paymentData = signal<Maybe<IPayment>>(null);
readonly isApplication = config.isPosApplication;
private pendingCorrectionSubmitResolver: Maybe<(allowed: boolean) => void> = null;
private pendingCorrectionSubmitResolver: Maybe<(allowed: boolean, payment?: IPayment) => void> =
null;
publicInvoiceRoute = computed(() => {
if (this.invoice) {
@@ -282,6 +284,7 @@ export class SharedSaleInvoiceSingleViewComponent {
total_amount,
discount_amount,
tax_amount,
payments: this.paymentData() || undefined,
};
}
@@ -310,7 +313,12 @@ export class SharedSaleInvoiceSingleViewComponent {
return false;
}
return (await this.beforeCorrectionSubmit?.(mapped)) ?? true;
return (
(await this.beforeCorrectionSubmit?.({
...mapped,
payments: this.paymentData() || undefined,
})) ?? true
);
}
confirmCorrectionPayment(_event: {
@@ -318,7 +326,8 @@ export class SharedSaleInvoiceSingleViewComponent {
settlementType: 'CASH' | 'CREDIT' | 'MIXED';
}) {
this.showCorrectionPaymentDialog.set(false);
this.pendingCorrectionSubmitResolver?.(true);
this.paymentData.set(_event.payment);
this.pendingCorrectionSubmitResolver?.(true, _event.payment);
this.pendingCorrectionSubmitResolver = null;
}