feat: update invoice components and add correction payment dialog
Production CI / validate-and-build (push) Failing after 1m1s

- Updated return form instructions for clarity.
- Refined labels in sale invoice info card for consistency.
- Enhanced sale invoice view with a correction payment dialog for increased user interaction.
- Improved invoice print preparation utility for better data handling.
- Adjusted paginator component for first and last page navigation.
- Modified layout styles for better responsiveness and user experience.
- Updated environment configurations for different setups.
This commit is contained in:
2026-06-14 16:33:51 +03:30
parent 72954fb5d1
commit 5ee03cf761
82 changed files with 709 additions and 544 deletions
@@ -1,4 +1,4 @@
<div class="flex flex-col gap-6">
<div class="flex flex-col gap-4">
<app-card-data cardTitle="اطلاعات کاربری" [editable]="false" [(editMode)]="editMode">
<div class="flex flex-col gap-4">
<div class="listKeyValue">
@@ -1,8 +1,8 @@
<form [formGroup]="form" (submit)="submit()" class="flex flex-col gap-4">
<field-name [control]="form.controls.name" />
<field-pos-type [control]="form.controls.pos_type" />
<!-- <field-pos-type [control]="form.controls.pos_type" /> -->
@if (form.controls.pos_type.value === "PSP") {
@if (form.controls.pos_type.value === 'PSP') {
<field-serial-number [control]="form.controls.serial_number" />
<field-device-id [control]="form.controls.device_id" />
<field-provider-id [control]="form.controls.provider_id" />
@@ -13,8 +13,7 @@
<field-username [control]="form.controls.username" />
<shared-password-input
[passwordControl]="form.controls.password"
[confirmPasswordControl]="form.controls.confirmPassword"
/>
[confirmPasswordControl]="form.controls.confirmPassword" />
}
<app-form-footer-actions [submitLabel]="'ذخیره'" [loading]="submitLoading()" (onCancel)="close()" />
@@ -4,7 +4,6 @@ import { AbstractForm } from '@/shared/abstractClasses';
import {
DeviceIdComponent,
NameComponent,
PosTypeComponent,
ProviderIdComponent,
SerialNumberComponent,
SharedPasswordInputComponent,
@@ -27,7 +26,6 @@ import { PartnerPosesService } from '../../services/poses.service';
FormFooterActionsComponent,
DeviceIdComponent,
ProviderIdComponent,
PosTypeComponent,
SerialNumberComponent,
UsernameComponent,
Divider,
@@ -45,7 +43,7 @@ export class ConsumerPosFormContentComponent extends AbstractForm<IPosRequest, I
initForm = () => {
const form = this.fb.group({
name: fieldControl.name(this.initialValues?.name || ''),
pos_type: fieldControl.pos_type(this.initialValues?.pos_type || ''),
pos_type: fieldControl.pos_type(this.initialValues?.pos_type || 'PSP'),
serial_number: fieldControl.serial_number(this.initialValues?.serial_number || ''),
device_id: fieldControl.device_id(this.initialValues?.device?.id || ''),
provider_id: fieldControl.provider_id(this.initialValues?.provider?.id || ''),
@@ -1,4 +1,4 @@
<div class="flex flex-col gap-6">
<div class="flex flex-col gap-4">
<app-card-data cardTitle="اطلاعات فعالیت اقتصادی" [editable]="true" [(editMode)]="editMode">
<ng-template #moreActions>
<button pButton outlined size="small" (click)="showAccountsChargeDialog()">شارژ کاربر</button>
@@ -22,13 +22,11 @@
[consumerId]="consumerId()"
[businessActivityId]="businessId()"
[initialValues]="businessActivity() || undefined"
(onSubmit)="getData()"
/>
(onSubmit)="getData()" />
<partner-charge-account-form-dialog
[(visible)]="visibleAccountsChargeForm"
[consumerId]="consumerId()"
[businessId]="businessId()"
(onSubmit)="getData()"
>
(onSubmit)="getData()">
</partner-charge-account-form-dialog>
</div>
@@ -1,4 +1,4 @@
<div class="flex flex-col gap-6">
<div class="flex flex-col gap-4">
<app-card-data cardTitle="اطلاعات شعبه" [editable]="true" [(editMode)]="editMode">
<div class="flex flex-col gap-4">
<div class="listKeyValue">
@@ -18,6 +18,5 @@
[businessActivityId]="businessId()"
[complexId]="complexId()"
[initialValues]="complex() || undefined"
(onSubmit)="getData()"
/>
(onSubmit)="getData()" />
</div>
@@ -1,5 +1,5 @@
<app-page-data-list
pageTitle="لیست مشتری"
pageTitle="مشتری‌ها"
[addNewCtaLabel]="'افزودن مشتری'"
[columns]="columns"
[showAdd]="true"
@@ -13,8 +13,7 @@
(onAdd)="openAddForm()"
(onDetails)="toSinglePage($event)"
(onEdit)="onEditClick($event)"
(onRefresh)="refresh()"
/>
(onRefresh)="refresh()" />
<partner-create-consumer-wrapper [(visible)]="visibleCreateForm" (onSubmit)="refresh()" />
<partner-consumer-form
@@ -22,5 +21,4 @@
[editMode]="true"
[consumerId]="selectedItemForEdit()?.id"
[initialValues]="selectedItemForEdit() || undefined"
(onSubmit)="refresh()"
/>
(onSubmit)="refresh()" />
@@ -1,4 +1,4 @@
<div class="flex flex-col gap-6">
<div class="flex flex-col gap-4">
<app-card-data cardTitle="اطلاعات پایانه‌ فروش" [editable]="true" [(editMode)]="editMode">
<div class="flex flex-col gap-4">
<div class="listKeyValue">
@@ -15,6 +15,5 @@
[complexId]="complexId()"
[posId]="posId()"
[initialValues]="pos() || undefined"
(onSubmit)="getData()"
/>
(onSubmit)="getData()" />
</div>
@@ -1,11 +1,11 @@
<div class="flex flex-col gap-6">
<div class="flex flex-col gap-4">
<app-card-data cardTitle="اطلاعات مشتری" [editable]="true" [(editMode)]="editMode">
<ng-template #moreActions> </ng-template>
<div class="flex flex-col gap-4">
<div class="listKeyValue">
<app-key-value label="نام مشتری" [value]="consumer()?.name" />
<app-key-value label="نوع مشتری" [value]="consumer()?.type?.translate" />
@if (consumer()?.type?.value === "LEGAL") {
@if (consumer()?.type?.value === 'LEGAL') {
<app-key-value label="شناسه ملی" [value]="consumer()?.legal?.registration_code" />
} @else {
<app-key-value label="شماره موبایل" [value]="consumer()?.individual?.mobile_number" />
@@ -28,6 +28,5 @@
[editMode]="true"
[consumerId]="consumerId()"
[initialValues]="consumer() || undefined"
(onSubmit)="getData()"
/>
(onSubmit)="getData()" />
</div>
@@ -1,5 +1,5 @@
<app-page-data-list
[pageTitle]="'لیست مشتری'"
[pageTitle]="'مشتری‌ها'"
[columns]="columns"
emptyPlaceholderTitle="مشتری یافت نشد"
[items]="items()"
@@ -8,5 +8,4 @@
[showDetails]="true"
(onEdit)="onEditClick($event)"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
/>
(onRefresh)="refresh()" />
@@ -1,4 +1,4 @@
<div class="flex flex-col gap-6">
<div class="flex flex-col gap-4">
<app-card-data cardTitle="اطلاعات مشتری" [editable]="true" [(editMode)]="editMode">
<div class="flex flex-col gap-4">
<div class="listKeyValue">