diff --git a/src/app/domains/pos/modules/goodsManagement/components/list.component.html b/src/app/domains/pos/modules/goodsManagement/components/list.component.html index 6bf2250..2830339 100644 --- a/src/app/domains/pos/modules/goodsManagement/components/list.component.html +++ b/src/app/domains/pos/modules/goodsManagement/components/list.component.html @@ -1,6 +1,7 @@
- + + diff --git a/src/app/domains/pos/modules/goodsManagement/components/list.component.ts b/src/app/domains/pos/modules/goodsManagement/components/list.component.ts index 76ae498..a6d7494 100644 --- a/src/app/domains/pos/modules/goodsManagement/components/list.component.ts +++ b/src/app/domains/pos/modules/goodsManagement/components/list.component.ts @@ -1,4 +1,3 @@ -import { POS_ROUTES } from '@/domains/pos/routes'; import { PosInfoStore } from '@/domains/pos/store'; import { InnerPagesHeaderComponent } from '@/shared/components/innerPagesHeader/inner-pages-header.component'; import { Component, computed, inject, signal } from '@angular/core'; @@ -26,7 +25,8 @@ export class PosOwnedGoodsListComponent { loading = signal(true); items = signal([]); - backRoute = POS_ROUTES.path || '/'; + // backRoute = POS_ROUTES.path || '/'; + createRoute = PosGoodsManagementRoutes.create.meta.pagePath!(); preparedPageTitle = computed( () => `لیست کالاهای ${this.infoStore.entity()?.businessActivity.name}` diff --git a/src/app/domains/pos/modules/goodsManagement/constants/routes/index.ts b/src/app/domains/pos/modules/goodsManagement/constants/routes/index.ts index cb87905..ce29891 100644 --- a/src/app/domains/pos/modules/goodsManagement/constants/routes/index.ts +++ b/src/app/domains/pos/modules/goodsManagement/constants/routes/index.ts @@ -31,7 +31,7 @@ export const PosGoodsManagementRoutes: NamedRoutes m.PosGoodsCreateComponent), meta: { title: 'ایجاد کالا', - pagePath: () => baseRoute, + pagePath: () => `${baseRoute}/create`, }, }, }; diff --git a/src/app/domains/pos/modules/goodsManagement/views/create.component.ts b/src/app/domains/pos/modules/goodsManagement/views/create.component.ts index d559733..649b091 100644 --- a/src/app/domains/pos/modules/goodsManagement/views/create.component.ts +++ b/src/app/domains/pos/modules/goodsManagement/views/create.component.ts @@ -3,7 +3,7 @@ import { SharedGoodFormComponent } from '@/shared/components/good'; import { InnerPagesHeaderComponent } from '@/shared/components/innerPagesHeader/inner-pages-header.component'; import { Component, computed, inject } from '@angular/core'; import { Router } from '@angular/router'; -import config from 'src/config'; +import { PosGoodsManagementRoutes } from '../constants'; import { PosOwnedGoodsService } from '../services/main.service'; @Component({ @@ -18,7 +18,7 @@ export class PosGoodsCreateComponent { readonly guildId = computed(() => this.store.entity()?.guild.id || ''); - readonly backRoute = config.isPosApplication ? '/' : '/pos'; + readonly backRoute = PosGoodsManagementRoutes.goods.meta.pagePath!(); preparedPageTitle = computed( () => `ایجاد کالا برای ${this.store.entity()?.businessActivity.name}` diff --git a/src/app/domains/pos/modules/shop/components/order/order-card-template.component.ts b/src/app/domains/pos/modules/shop/components/order/order-card-template.component.ts index 51f1f59..58396d8 100644 --- a/src/app/domains/pos/modules/shop/components/order/order-card-template.component.ts +++ b/src/app/domains/pos/modules/shop/components/order/order-card-template.component.ts @@ -5,7 +5,7 @@ import { ButtonDirective } from 'primeng/button'; import images from 'src/assets/images'; import { IPosInOrderGood } from '../../models'; import { PosLandingStore } from '../../store/main.store'; -import { PayloadFormDialogComponent } from '../payload-form.component'; +import { PayloadFormDialogComponent } from '../payloads/payload-form.component'; @Component({ selector: 'pos-order-card-template', diff --git a/src/app/domains/pos/modules/shop/components/order/order-section.component.html b/src/app/domains/pos/modules/shop/components/order/order-section.component.html index 424c024..6f6203b 100644 --- a/src/app/domains/pos/modules/shop/components/order/order-section.component.html +++ b/src/app/domains/pos/modules/shop/components/order/order-section.component.html @@ -1,11 +1,11 @@ -
-
-
-
+
+
+
+
سفارش‌ها
-
+
@@ -16,21 +16,20 @@ outlined severity="danger" size="small" - (click)="clearOrderList()" - > + (click)="clearOrderList()"> پاک کردن سفارش‌ها
@if (!inOrderGoods().length) { -
+
- هیچ سفارشی ثبت نشده است. + هیچ سفارشی ثبت نشده است.
} @else { -
+
@for (inOrderGood of inOrderGoods(); track inOrderGood.id) { - @if (inOrderGood.good.pricing_model === "GOLD") { + @if (inOrderGood.good.pricing_model === 'GOLD') { } @else { @@ -40,9 +39,9 @@ }

-
- -
+
+ +
@@ -56,11 +55,8 @@ icon="pi pi-check" class="w-full" size="large" - (click)="submitAndPay()" - > + (click)="submitAndPay()">
- - diff --git a/src/app/domains/pos/modules/shop/components/order/order-section.component.ts b/src/app/domains/pos/modules/shop/components/order/order-section.component.ts index e8b0be0..e6a0c06 100644 --- a/src/app/domains/pos/modules/shop/components/order/order-section.component.ts +++ b/src/app/domains/pos/modules/shop/components/order/order-section.component.ts @@ -1,17 +1,23 @@ // import { CustomersSelectComponent } from '@/modules/customers/components/select/select.component'; // import { ICustomerResponse } from '@/modules/customers/models'; import { KeyValueComponent } from '@/shared/components'; -import { ChangeDetectionStrategy, Component, computed, EventEmitter, inject, Output, signal } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + computed, + EventEmitter, + inject, + Output, + signal, +} from '@angular/core'; import { FormsModule } from '@angular/forms'; import { ButtonDirective } from 'primeng/button'; import { Card } from 'primeng/card'; import images from 'src/assets/images'; -import { IPosOrderResponse } from '../../models'; import { PosLandingStore } from '../../store/main.store'; import { PosOrderCustomerDialogComponent } from '../customers/customer-dialog.component'; import { GoldPayloadOrderCardComponent } from '../payloads/gold/order-card.component'; import { StandardPayloadOrderCardComponent } from '../payloads/standard/order-card.component'; -import { PosPaymentFormDialogComponent } from '../payment/form-dialog.component'; import { POSOrderPriceInfoCardComponent } from './price-info-card.component'; @Component({ @@ -26,20 +32,17 @@ import { POSOrderPriceInfoCardComponent } from './price-info-card.component'; StandardPayloadOrderCardComponent, PosOrderCustomerDialogComponent, KeyValueComponent, - PosPaymentFormDialogComponent, Card, ], }) export class PosOrderSectionComponent { private readonly store = inject(PosLandingStore); @Output() onAddMoreGoods = new EventEmitter(); - @Output() onSuccess = new EventEmitter(); + @Output() onSubmit = new EventEmitter(); placeholderImage = images.placeholders.default; isVisibleCustomerForm = signal(false); - isVisiblePaymentForm = signal(false); - isVisiblePreInvoiceForm = signal(false); inOrderGoods = computed(() => this.store.inOrderGoods()); customer = computed(() => this.store.customer()); @@ -77,8 +80,7 @@ export class PosOrderSectionComponent { } submitAndPay() { - this.isVisiblePaymentForm.set(false); - queueMicrotask(() => this.isVisiblePaymentForm.set(true)); + this.onSubmit.emit(); } addMoreGoods() { @@ -86,7 +88,4 @@ export class PosOrderSectionComponent { } submitCustomer() {} - submitPayment(invoice: IPosOrderResponse) { - this.onSuccess.emit(invoice); - } } diff --git a/src/app/domains/pos/modules/shop/components/payloads/gold/form.component.ts b/src/app/domains/pos/modules/shop/components/payloads/gold/form.component.ts index 7218c73..6b4ff67 100644 --- a/src/app/domains/pos/modules/shop/components/payloads/gold/form.component.ts +++ b/src/app/domains/pos/modules/shop/components/payloads/gold/form.component.ts @@ -44,6 +44,7 @@ export class PosGoldPayloadFormComponent extends AbstractForm< }; @Input({ required: true }) vatPercentage!: number; + @Input() isRapidInvoice!: boolean; @Output() onSubmitForm = new EventEmitter(); @Output() onChangeTotalAmount = new EventEmitter(); @@ -71,7 +72,9 @@ export class PosGoldPayloadFormComponent extends AbstractForm< goldDefaultUnitPrice = signal(0); - preparedCTAText = computed(() => (this.editMode ? 'اعمال ویرایش' : 'افزودن به لیست خرید')); + preparedCTAText = computed(() => + this.editMode ? 'اعمال ویرایش' : this.isRapidInvoice ? 'ثبت و پرداخت' : 'افزودن به لیست خرید' + ); private readonly initialForm = () => { const defaultPrice = this.posGoldConfig.get(); diff --git a/src/app/domains/pos/modules/shop/components/payloads/index.ts b/src/app/domains/pos/modules/shop/components/payloads/index.ts index 00b894c..61f07b5 100644 --- a/src/app/domains/pos/modules/shop/components/payloads/index.ts +++ b/src/app/domains/pos/modules/shop/components/payloads/index.ts @@ -1 +1 @@ -export * from '../payload-form.component'; +export * from './payload-form.component'; diff --git a/src/app/domains/pos/modules/shop/components/payload-form.component.html b/src/app/domains/pos/modules/shop/components/payloads/payload-form.component.html similarity index 76% rename from src/app/domains/pos/modules/shop/components/payload-form.component.html rename to src/app/domains/pos/modules/shop/components/payloads/payload-form.component.html index 5de521d..0b35a50 100644 --- a/src/app/domains/pos/modules/shop/components/payload-form.component.html +++ b/src/app/domains/pos/modules/shop/components/payloads/payload-form.component.html @@ -4,24 +4,23 @@ [modal]="true" [style]="{ 'max-height': '90svh', height: 'auto' }" [closable]="true" - (onHide)="close()" -> + (onHide)="close()"> @if (good) { @if (isGoldMode()) { + [isRapidInvoice]="isRapidInvoice()" + (onSubmit)="submit($event)" /> } @else if (isStandardMode()) { + [isRapidInvoice]="isRapidInvoice()" + (onSubmit)="submit($event)" /> } } diff --git a/src/app/domains/pos/modules/shop/components/payload-form.component.ts b/src/app/domains/pos/modules/shop/components/payloads/payload-form.component.ts similarity index 73% rename from src/app/domains/pos/modules/shop/components/payload-form.component.ts rename to src/app/domains/pos/modules/shop/components/payloads/payload-form.component.ts index bcba1d1..6a242e8 100644 --- a/src/app/domains/pos/modules/shop/components/payload-form.component.ts +++ b/src/app/domains/pos/modules/shop/components/payloads/payload-form.component.ts @@ -2,10 +2,11 @@ import { IGoodResponse } from '@/domains/pos/models/good.io'; import { AbstractDialog } from '@/shared/abstractClasses/abstract-dialog'; import { SharedLightBottomsheetComponent } from '@/shared/components/dialog/light-bottomsheet.component'; import { Component, computed, EventEmitter, inject, Input, Output, signal } from '@angular/core'; -import { IGoldPayload, IPosOrderItem, IStandardPayload, TPosOrderGoodPayload } from '../models'; -import { PosLandingStore } from '../store/main.store'; -import { PosGoldPayloadFormComponent } from './payloads/gold/form.component'; -import { PosStandardPayloadFormComponent } from './payloads/standard/form.component'; +import { PosConfigRapidInvoiceService } from '../../../configs/components/rapidInvoice/services/main.service'; +import { IGoldPayload, IPosOrderItem, IStandardPayload } from '../../models'; +import { PosLandingStore } from '../../store/main.store'; +import { PosGoldPayloadFormComponent } from './gold/form.component'; +import { PosStandardPayloadFormComponent } from './standard/form.component'; @Component({ selector: 'pos-payload-form-dialog', @@ -20,9 +21,10 @@ export class PayloadFormDialogComponent extends AbstractDialog { @Input({ required: true }) good!: IGoodResponse; @Input() initialValues?: IPosOrderItem; @Input() orderItemId?: string; - @Output() onSubmit = new EventEmitter(); + @Output() onCreateRapidOrder = new EventEmitter(); private readonly store = inject(PosLandingStore); + private readonly rapidInvoiceConfig = inject(PosConfigRapidInvoiceService); totalAmount = signal(0); preparedTitle = computed(() => this.good?.name); @@ -32,6 +34,8 @@ export class PayloadFormDialogComponent extends AbstractDialog { isGoldMode = computed(() => this.good.pricing_model === 'GOLD'); isStandardMode = computed(() => this.good.pricing_model === 'STANDARD'); + isRapidInvoice = computed(() => this.rapidInvoiceConfig.get()); + goldPayload = computed(() => this.isGoldMode() && this.editMode() ? (this.initialValues as IPosOrderItem) @@ -52,6 +56,9 @@ export class PayloadFormDialogComponent extends AbstractDialog { this.store.editInOrderGoods({ id: this.orderItemId!, good: this.good, ...payload }); } else { this.store.addToInOrderGoods(this.good.id, payload); + if (this.isRapidInvoice()) { + this.onCreateRapidOrder.emit(); + } } this.close(); } diff --git a/src/app/domains/pos/modules/shop/components/payloads/standard/form.component.html b/src/app/domains/pos/modules/shop/components/payloads/standard/form.component.html index 5e1ac58..e2ea680 100644 --- a/src/app/domains/pos/modules/shop/components/payloads/standard/form.component.html +++ b/src/app/domains/pos/modules/shop/components/payloads/standard/form.component.html @@ -1,13 +1,12 @@
- + + [min]="0" /> + label="تخفیف" />
-
+
- + [taxAmount]="taxAmount()" /> +
diff --git a/src/app/domains/pos/modules/shop/components/payloads/standard/form.component.ts b/src/app/domains/pos/modules/shop/components/payloads/standard/form.component.ts index dabb2aa..8ed4a5e 100644 --- a/src/app/domains/pos/modules/shop/components/payloads/standard/form.component.ts +++ b/src/app/domains/pos/modules/shop/components/payloads/standard/form.component.ts @@ -27,6 +27,7 @@ export class PosStandardPayloadFormComponent extends AbstractForm< > { @Input({ required: true }) measureUnit!: ISummary; @Input({ required: true }) vatPercentage!: number; + @Input() isRapidInvoice!: boolean; @Output() onChangeTotalAmount = new EventEmitter(); private readonly initialForm = () => { @@ -60,7 +61,9 @@ export class PosStandardPayloadFormComponent extends AbstractForm< discountAmount = signal(0); taxAmount = signal(0); - preparedCTAText = computed(() => (this.editMode ? 'اعمال ویرایش' : 'افزودن به لیست خرید')); + preparedCTAText = computed(() => + this.editMode ? 'اعمال ویرایش' : this.isRapidInvoice ? 'ثبت و پرداخت' : 'افزودن به لیست خرید' + ); toPriceFormat(amount: number) { if (!amount) { diff --git a/src/app/domains/pos/modules/shop/components/categories.component.html b/src/app/domains/pos/modules/shop/components/views/categories.component.html similarity index 100% rename from src/app/domains/pos/modules/shop/components/categories.component.html rename to src/app/domains/pos/modules/shop/components/views/categories.component.html diff --git a/src/app/domains/pos/modules/shop/components/categories.component.ts b/src/app/domains/pos/modules/shop/components/views/categories.component.ts similarity index 92% rename from src/app/domains/pos/modules/shop/components/categories.component.ts rename to src/app/domains/pos/modules/shop/components/views/categories.component.ts index dc4cd23..1455bc5 100644 --- a/src/app/domains/pos/modules/shop/components/categories.component.ts +++ b/src/app/domains/pos/modules/shop/components/views/categories.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, Component, EventEmitter, inject, Output } from '@angular/core'; import { Skeleton } from 'primeng/skeleton'; -import { PosLandingStore } from '../store/main.store'; +import { PosLandingStore } from '../../store/main.store'; @Component({ selector: 'pos-good-categories', diff --git a/src/app/domains/pos/modules/shop/components/favorite-CTA.component.html b/src/app/domains/pos/modules/shop/components/views/favorite-CTA.component.html similarity index 100% rename from src/app/domains/pos/modules/shop/components/favorite-CTA.component.html rename to src/app/domains/pos/modules/shop/components/views/favorite-CTA.component.html diff --git a/src/app/domains/pos/modules/shop/components/favorite-CTA.component.ts b/src/app/domains/pos/modules/shop/components/views/favorite-CTA.component.ts similarity index 89% rename from src/app/domains/pos/modules/shop/components/favorite-CTA.component.ts rename to src/app/domains/pos/modules/shop/components/views/favorite-CTA.component.ts index 9d35b71..bbad251 100644 --- a/src/app/domains/pos/modules/shop/components/favorite-CTA.component.ts +++ b/src/app/domains/pos/modules/shop/components/views/favorite-CTA.component.ts @@ -1,8 +1,8 @@ import { Component, inject, Input, signal } from '@angular/core'; import { Button } from 'primeng/button'; import { finalize, Observable } from 'rxjs'; -import { PosGoodFavoriteService } from '../services/favorite.service'; -import { PosLandingStore } from '../store/main.store'; +import { PosGoodFavoriteService } from '../../services/favorite.service'; +import { PosLandingStore } from '../../store/main.store'; @Component({ selector: 'pos-good-favorite-cta', @@ -39,14 +39,14 @@ export class FavoriteCTAComponent { private handleFavoriteRequest( request$: Observable, goodId: string, - isFavorite: boolean, + isFavorite: boolean ) { this.loading.set(true); request$ .pipe( finalize(() => { this.loading.set(false); - }), + }) ) .subscribe(() => { this.store.toggleGoodFavorite(goodId, isFavorite); diff --git a/src/app/domains/pos/modules/shop/components/goods.component.html b/src/app/domains/pos/modules/shop/components/views/goods.component.html similarity index 90% rename from src/app/domains/pos/modules/shop/components/goods.component.html rename to src/app/domains/pos/modules/shop/components/views/goods.component.html index 750f138..808b31f 100644 --- a/src/app/domains/pos/modules/shop/components/goods.component.html +++ b/src/app/domains/pos/modules/shop/components/views/goods.component.html @@ -36,6 +36,10 @@
@if (showPayloadForm() && selectedGoodToAdd(); as selectedGood) { - + }
diff --git a/src/app/domains/pos/modules/shop/components/goods.component.ts b/src/app/domains/pos/modules/shop/components/views/goods.component.ts similarity index 85% rename from src/app/domains/pos/modules/shop/components/goods.component.ts rename to src/app/domains/pos/modules/shop/components/views/goods.component.ts index a5686a0..160e2e3 100644 --- a/src/app/domains/pos/modules/shop/components/goods.component.ts +++ b/src/app/domains/pos/modules/shop/components/views/goods.component.ts @@ -1,15 +1,24 @@ import { Maybe } from '@/core'; import { IGoodResponse } from '@/domains/pos/models/good.io'; import { SearchInputComponent } from '@/shared/components/search/search-input.component'; -import { ChangeDetectionStrategy, Component, computed, inject, Input, signal } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + computed, + EventEmitter, + inject, + Input, + Output, + signal, +} from '@angular/core'; import { FormsModule } from '@angular/forms'; import { Divider } from 'primeng/divider'; import { SelectButton } from 'primeng/selectbutton'; -import { PosLandingStore, TViewType } from '../store/main.store'; +import { PosLandingStore, TViewType } from '../../store/main.store'; +import { PayloadFormDialogComponent } from '../payloads'; import { PosGoodCategoriesComponent } from './categories.component'; import { PosGoodsGridViewComponent } from './grid-view.component'; import { PosGoodsListViewComponent } from './list-view.component'; -import { PayloadFormDialogComponent } from './payloads'; @Component({ selector: 'pos-goods', @@ -28,6 +37,7 @@ import { PayloadFormDialogComponent } from './payloads'; }) export class PosGoodsComponent { @Input() activeCategory = signal>(null); + @Output() onCreateRapidOrder = new EventEmitter(); private readonly store = inject(PosLandingStore); @@ -77,4 +87,8 @@ export class PosGoodsComponent { this.showPayloadForm.set(false); this.selectedGoodToAdd.set(null); } + + createRapidOrder() { + this.onCreateRapidOrder.emit(); + } } diff --git a/src/app/domains/pos/modules/shop/components/grid-view.component.html b/src/app/domains/pos/modules/shop/components/views/grid-view.component.html similarity index 100% rename from src/app/domains/pos/modules/shop/components/grid-view.component.html rename to src/app/domains/pos/modules/shop/components/views/grid-view.component.html diff --git a/src/app/domains/pos/modules/shop/components/grid-view.component.ts b/src/app/domains/pos/modules/shop/components/views/grid-view.component.ts similarity index 96% rename from src/app/domains/pos/modules/shop/components/grid-view.component.ts rename to src/app/domains/pos/modules/shop/components/views/grid-view.component.ts index 568bc9e..ecde740 100644 --- a/src/app/domains/pos/modules/shop/components/grid-view.component.ts +++ b/src/app/domains/pos/modules/shop/components/views/grid-view.component.ts @@ -12,7 +12,7 @@ import { import { ButtonDirective } from 'primeng/button'; import { Skeleton } from 'primeng/skeleton'; import images from 'src/assets/images'; -import { PosLandingStore } from '../store/main.store'; +import { PosLandingStore } from '../../store/main.store'; import { FavoriteCTAComponent } from './favorite-CTA.component'; @Component({ diff --git a/src/app/domains/pos/modules/shop/components/list-view.component.html b/src/app/domains/pos/modules/shop/components/views/list-view.component.html similarity index 100% rename from src/app/domains/pos/modules/shop/components/list-view.component.html rename to src/app/domains/pos/modules/shop/components/views/list-view.component.html diff --git a/src/app/domains/pos/modules/shop/components/list-view.component.ts b/src/app/domains/pos/modules/shop/components/views/list-view.component.ts similarity index 96% rename from src/app/domains/pos/modules/shop/components/list-view.component.ts rename to src/app/domains/pos/modules/shop/components/views/list-view.component.ts index 33d45b8..5eb016a 100644 --- a/src/app/domains/pos/modules/shop/components/list-view.component.ts +++ b/src/app/domains/pos/modules/shop/components/views/list-view.component.ts @@ -12,7 +12,7 @@ import { import { ButtonDirective } from 'primeng/button'; import { Skeleton } from 'primeng/skeleton'; import images from 'src/assets/images'; -import { PosLandingStore } from '../store/main.store'; +import { PosLandingStore } from '../../store/main.store'; import { FavoriteCTAComponent } from './favorite-CTA.component'; @Component({ diff --git a/src/app/domains/pos/modules/shop/views/root.component.html b/src/app/domains/pos/modules/shop/views/root.component.html index 1555aeb..cdc5606 100644 --- a/src/app/domains/pos/modules/shop/views/root.component.html +++ b/src/app/domains/pos/modules/shop/views/root.component.html @@ -1,13 +1,13 @@ @if (loading()) { } @else if (pos()) { -
-
-
- +
+
+
+
@if (!isMobile()) { -