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