mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-21 23:30:32 +00:00
wip
This commit is contained in:
@@ -17,7 +17,7 @@ export class BillBranchValidateSubscriber {
|
|||||||
* Validate branch existance on bill creating.
|
* Validate branch existance on bill creating.
|
||||||
* @param {IBillCreatingPayload} payload
|
* @param {IBillCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.bill.onCreating)
|
@OnEvent(events.bill.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnBillCreating({
|
async validateBranchExistanceOnBillCreating({
|
||||||
billDTO,
|
billDTO,
|
||||||
}: IBillCreatingPayload) {
|
}: IBillCreatingPayload) {
|
||||||
@@ -30,7 +30,7 @@ export class BillBranchValidateSubscriber {
|
|||||||
* Validate branch existance once bill editing.
|
* Validate branch existance once bill editing.
|
||||||
* @param {IBillEditingPayload} payload
|
* @param {IBillEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.bill.onEditing)
|
@OnEvent(events.bill.onEditing, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnBillEditing({ billDTO }: IBillEditingPayload) {
|
async validateBranchExistanceOnBillEditing({ billDTO }: IBillEditingPayload) {
|
||||||
await this.validateBranchExistance.validateTransactionBranchWhenActive(
|
await this.validateBranchExistance.validateTransactionBranchWhenActive(
|
||||||
billDTO.branchId,
|
billDTO.branchId,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export class CashflowBranchDTOValidatorSubscriber {
|
|||||||
* Validate branch existance once cashflow transaction creating.
|
* Validate branch existance once cashflow transaction creating.
|
||||||
* @param {ICommandCashflowCreatingPayload} payload
|
* @param {ICommandCashflowCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.cashflow.onTransactionCreating)
|
@OnEvent(events.cashflow.onTransactionCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnCashflowTransactionCreating({
|
async validateBranchExistanceOnCashflowTransactionCreating({
|
||||||
newTransactionDTO,
|
newTransactionDTO,
|
||||||
}: ICommandCashflowCreatingPayload) {
|
}: ICommandCashflowCreatingPayload) {
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ import {
|
|||||||
export class ContactBranchValidateSubscriber {
|
export class ContactBranchValidateSubscriber {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly validateBranchExistance: ValidateBranchExistance,
|
private readonly validateBranchExistance: ValidateBranchExistance,
|
||||||
) { }
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate branch existance on customer creating.
|
* Validate branch existance on customer creating.
|
||||||
* @param {ICustomerEventCreatingPayload} payload
|
* @param {ICustomerEventCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.customers.onCreating)
|
@OnEvent(events.customers.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnCustomerCreating({
|
async validateBranchExistanceOnCustomerCreating({
|
||||||
customerDTO,
|
customerDTO,
|
||||||
}: ICustomerEventCreatingPayload) {
|
}: ICustomerEventCreatingPayload) {
|
||||||
@@ -37,7 +37,7 @@ export class ContactBranchValidateSubscriber {
|
|||||||
* Validate branch existance once customer opening balance editing.
|
* Validate branch existance once customer opening balance editing.
|
||||||
* @param {ICustomerOpeningBalanceEditingPayload} payload
|
* @param {ICustomerOpeningBalanceEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.customers.onOpeningBalanceChanging)
|
@OnEvent(events.customers.onOpeningBalanceChanging, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnCustomerOpeningBalanceEditing({
|
async validateBranchExistanceOnCustomerOpeningBalanceEditing({
|
||||||
openingBalanceEditDTO,
|
openingBalanceEditDTO,
|
||||||
}: ICustomerOpeningBalanceEditingPayload) {
|
}: ICustomerOpeningBalanceEditingPayload) {
|
||||||
@@ -52,7 +52,7 @@ export class ContactBranchValidateSubscriber {
|
|||||||
* Validates the branch existance on vendor creating.
|
* Validates the branch existance on vendor creating.
|
||||||
* @param {IVendorEventCreatingPayload} payload
|
* @param {IVendorEventCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.vendors.onCreating)
|
@OnEvent(events.vendors.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceonVendorCreating({
|
async validateBranchExistanceonVendorCreating({
|
||||||
vendorDTO,
|
vendorDTO,
|
||||||
}: IVendorEventCreatingPayload) {
|
}: IVendorEventCreatingPayload) {
|
||||||
@@ -68,7 +68,7 @@ export class ContactBranchValidateSubscriber {
|
|||||||
* Validate branch existance once the vendor opening balance editing.
|
* Validate branch existance once the vendor opening balance editing.
|
||||||
* @param {IVendorOpeningBalanceEditingPayload} payload
|
* @param {IVendorOpeningBalanceEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.vendors.onOpeningBalanceChanging)
|
@OnEvent(events.vendors.onOpeningBalanceChanging, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnVendorOpeningBalanceEditing({
|
async validateBranchExistanceOnVendorOpeningBalanceEditing({
|
||||||
openingBalanceEditDTO,
|
openingBalanceEditDTO,
|
||||||
}: IVendorOpeningBalanceEditingPayload) {
|
}: IVendorOpeningBalanceEditingPayload) {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export class CreditNoteBranchValidateSubscriber {
|
|||||||
* Validate branch existance on credit note creating.
|
* Validate branch existance on credit note creating.
|
||||||
* @param {ICreditNoteCreatingPayload} payload
|
* @param {ICreditNoteCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.creditNote.onCreating)
|
@OnEvent(events.creditNote.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnCreditCreating({
|
async validateBranchExistanceOnCreditCreating({
|
||||||
creditNoteDTO,
|
creditNoteDTO,
|
||||||
}: ICreditNoteCreatingPayload) {
|
}: ICreditNoteCreatingPayload) {
|
||||||
@@ -28,7 +28,7 @@ export class CreditNoteBranchValidateSubscriber {
|
|||||||
* Validate branch existance once credit note editing.
|
* Validate branch existance once credit note editing.
|
||||||
* @param {ICreditNoteEditingPayload} payload
|
* @param {ICreditNoteEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.creditNote.onEditing)
|
@OnEvent(events.creditNote.onEditing, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnCreditEditing({
|
async validateBranchExistanceOnCreditEditing({
|
||||||
creditNoteEditDTO,
|
creditNoteEditDTO,
|
||||||
}: ICreditNoteEditingPayload) {
|
}: ICreditNoteEditingPayload) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export class CreditNoteRefundBranchValidateSubscriber {
|
|||||||
* Validate branch existance on refund credit note creating.
|
* Validate branch existance on refund credit note creating.
|
||||||
* @param {IRefundCreditNoteCreatingPayload} payload
|
* @param {IRefundCreditNoteCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.creditNote.onRefundCreating)
|
@OnEvent(events.creditNote.onRefundCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnCreditRefundCreating({
|
async validateBranchExistanceOnCreditRefundCreating({
|
||||||
newCreditNoteDTO,
|
newCreditNoteDTO,
|
||||||
}: IRefundCreditNoteCreatingPayload) {
|
}: IRefundCreditNoteCreatingPayload) {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export class ExpenseBranchValidateSubscriber {
|
|||||||
* Validate branch existance once expense transaction creating.
|
* Validate branch existance once expense transaction creating.
|
||||||
* @param {IExpenseCreatingPayload} payload
|
* @param {IExpenseCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.expenses.onCreating)
|
@OnEvent(events.expenses.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnExpenseCreating({
|
async validateBranchExistanceOnExpenseCreating({
|
||||||
expenseDTO,
|
expenseDTO,
|
||||||
}: IExpenseCreatingPayload) {
|
}: IExpenseCreatingPayload) {
|
||||||
@@ -29,7 +29,7 @@ export class ExpenseBranchValidateSubscriber {
|
|||||||
* Validate branch existance once expense transaction editing.
|
* Validate branch existance once expense transaction editing.
|
||||||
* @param {IExpenseEventEditingPayload} payload
|
* @param {IExpenseEventEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.expenses.onEditing)
|
@OnEvent(events.expenses.onEditing, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnExpenseEditing({
|
async validateBranchExistanceOnExpenseEditing({
|
||||||
expenseDTO,
|
expenseDTO,
|
||||||
}: IExpenseEventEditingPayload) {
|
}: IExpenseEventEditingPayload) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export class InventoryAdjustmentBranchValidateSubscriber {
|
|||||||
* Validate branch existance on inventory adjustment creating.
|
* Validate branch existance on inventory adjustment creating.
|
||||||
* @param {IInventoryAdjustmentCreatingPayload} payload
|
* @param {IInventoryAdjustmentCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.inventoryAdjustment.onQuickCreating)
|
@OnEvent(events.inventoryAdjustment.onQuickCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnInventoryCreating({
|
async validateBranchExistanceOnInventoryCreating({
|
||||||
quickAdjustmentDTO,
|
quickAdjustmentDTO,
|
||||||
}: IInventoryAdjustmentCreatingPayload) {
|
}: IInventoryAdjustmentCreatingPayload) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class InvoiceBranchValidateSubscriber {
|
|||||||
* Validate branch existance on invoice creating.
|
* Validate branch existance on invoice creating.
|
||||||
* @param {ISaleInvoiceCreatingPayload} payload
|
* @param {ISaleInvoiceCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.saleInvoice.onCreating)
|
@OnEvent(events.saleInvoice.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnInvoiceCreating({
|
async validateBranchExistanceOnInvoiceCreating({
|
||||||
saleInvoiceDTO,
|
saleInvoiceDTO,
|
||||||
}: ISaleInvoiceCreatingPaylaod) {
|
}: ISaleInvoiceCreatingPaylaod) {
|
||||||
@@ -30,7 +30,7 @@ export class InvoiceBranchValidateSubscriber {
|
|||||||
* Validate branch existance once invoice editing.
|
* Validate branch existance once invoice editing.
|
||||||
* @param {ISaleInvoiceEditingPayload} payload
|
* @param {ISaleInvoiceEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.saleInvoice.onEditing)
|
@OnEvent(events.saleInvoice.onEditing, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnInvoiceEditing({
|
async validateBranchExistanceOnInvoiceEditing({
|
||||||
saleInvoiceDTO,
|
saleInvoiceDTO,
|
||||||
}: ISaleInvoiceEditingPayload) {
|
}: ISaleInvoiceEditingPayload) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class PaymentMadeBranchValidateSubscriber {
|
|||||||
* Validate branch existance on estimate creating.
|
* Validate branch existance on estimate creating.
|
||||||
* @param {ISaleEstimateCreatedPayload} payload
|
* @param {ISaleEstimateCreatedPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.billPayment.onCreating)
|
@OnEvent(events.billPayment.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnPaymentCreating({
|
async validateBranchExistanceOnPaymentCreating({
|
||||||
billPaymentDTO,
|
billPaymentDTO,
|
||||||
}: IBillPaymentCreatingPayload) {
|
}: IBillPaymentCreatingPayload) {
|
||||||
@@ -30,7 +30,7 @@ export class PaymentMadeBranchValidateSubscriber {
|
|||||||
* Validate branch existance once estimate editing.
|
* Validate branch existance once estimate editing.
|
||||||
* @param {ISaleEstimateEditingPayload} payload
|
* @param {ISaleEstimateEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.billPayment.onEditing)
|
@OnEvent(events.billPayment.onEditing, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnPaymentEditing({
|
async validateBranchExistanceOnPaymentEditing({
|
||||||
billPaymentDTO,
|
billPaymentDTO,
|
||||||
}: IBillPaymentEditingPayload) {
|
}: IBillPaymentEditingPayload) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class PaymentReceiveBranchValidateSubscriber {
|
|||||||
* Validate branch existance on estimate creating.
|
* Validate branch existance on estimate creating.
|
||||||
* @param {IPaymentReceivedCreatingPayload} payload
|
* @param {IPaymentReceivedCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.paymentReceive.onCreating)
|
@OnEvent(events.paymentReceive.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnPaymentCreating({
|
async validateBranchExistanceOnPaymentCreating({
|
||||||
paymentReceiveDTO,
|
paymentReceiveDTO,
|
||||||
}: IPaymentReceivedCreatingPayload) {
|
}: IPaymentReceivedCreatingPayload) {
|
||||||
@@ -30,7 +30,7 @@ export class PaymentReceiveBranchValidateSubscriber {
|
|||||||
* Validate branch existance once estimate editing.
|
* Validate branch existance once estimate editing.
|
||||||
* @param {IPaymentReceivedEditingPayload} payload
|
* @param {IPaymentReceivedEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.paymentReceive.onEditing)
|
@OnEvent(events.paymentReceive.onEditing, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnPaymentEditing({
|
async validateBranchExistanceOnPaymentEditing({
|
||||||
paymentReceiveDTO,
|
paymentReceiveDTO,
|
||||||
}: IPaymentReceivedEditingPayload) {
|
}: IPaymentReceivedEditingPayload) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class SaleEstimateBranchValidateSubscriber {
|
|||||||
* Validate branch existance on estimate creating.
|
* Validate branch existance on estimate creating.
|
||||||
* @param {ISaleEstimateCreatedPayload} payload
|
* @param {ISaleEstimateCreatedPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.saleEstimate.onCreating)
|
@OnEvent(events.saleEstimate.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnEstimateCreating({
|
async validateBranchExistanceOnEstimateCreating({
|
||||||
estimateDTO,
|
estimateDTO,
|
||||||
}: ISaleEstimateCreatingPayload) {
|
}: ISaleEstimateCreatingPayload) {
|
||||||
@@ -30,7 +30,7 @@ export class SaleEstimateBranchValidateSubscriber {
|
|||||||
* Validate branch existance once estimate editing.
|
* Validate branch existance once estimate editing.
|
||||||
* @param {ISaleEstimateEditingPayload} payload
|
* @param {ISaleEstimateEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.saleEstimate.onEditing)
|
@OnEvent(events.saleEstimate.onEditing, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnEstimateEditing({
|
async validateBranchExistanceOnEstimateEditing({
|
||||||
estimateDTO,
|
estimateDTO,
|
||||||
}: ISaleEstimateEditingPayload) {
|
}: ISaleEstimateEditingPayload) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class SaleReceiptBranchValidateSubscriber {
|
|||||||
* Validate branch existance on estimate creating.
|
* Validate branch existance on estimate creating.
|
||||||
* @param {ISaleReceiptCreatingPayload} payload
|
* @param {ISaleReceiptCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.saleReceipt.onCreating)
|
@OnEvent(events.saleReceipt.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnInvoiceCreating({
|
async validateBranchExistanceOnInvoiceCreating({
|
||||||
saleReceiptDTO,
|
saleReceiptDTO,
|
||||||
}: ISaleReceiptCreatingPayload) {
|
}: ISaleReceiptCreatingPayload) {
|
||||||
@@ -30,7 +30,7 @@ export class SaleReceiptBranchValidateSubscriber {
|
|||||||
* Validate branch existance once estimate editing.
|
* Validate branch existance once estimate editing.
|
||||||
* @param {ISaleReceiptEditingPayload} payload
|
* @param {ISaleReceiptEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.saleReceipt.onEditing)
|
@OnEvent(events.saleReceipt.onEditing, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnInvoiceEditing({
|
async validateBranchExistanceOnInvoiceEditing({
|
||||||
saleReceiptDTO,
|
saleReceiptDTO,
|
||||||
}: ISaleReceiptEditingPayload) {
|
}: ISaleReceiptEditingPayload) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class VendorCreditBranchValidateSubscriber {
|
|||||||
* Validate branch existance on estimate creating.
|
* Validate branch existance on estimate creating.
|
||||||
* @param {ISaleEstimateCreatedPayload} payload
|
* @param {ISaleEstimateCreatedPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.vendorCredit.onCreating)
|
@OnEvent(events.vendorCredit.onCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnCreditCreating({
|
async validateBranchExistanceOnCreditCreating({
|
||||||
vendorCreditCreateDTO,
|
vendorCreditCreateDTO,
|
||||||
}: IVendorCreditCreatingPayload) {
|
}: IVendorCreditCreatingPayload) {
|
||||||
@@ -30,7 +30,7 @@ export class VendorCreditBranchValidateSubscriber {
|
|||||||
* Validate branch existance once estimate editing.
|
* Validate branch existance once estimate editing.
|
||||||
* @param {ISaleEstimateEditingPayload} payload
|
* @param {ISaleEstimateEditingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.vendorCredit.onEditing)
|
@OnEvent(events.vendorCredit.onEditing, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnCreditEditing({
|
async validateBranchExistanceOnCreditEditing({
|
||||||
vendorCreditDTO,
|
vendorCreditDTO,
|
||||||
}: IVendorCreditEditingPayload) {
|
}: IVendorCreditEditingPayload) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export class VendorCreditRefundBranchValidateSubscriber {
|
|||||||
* Validate branch existance on refund credit note creating.
|
* Validate branch existance on refund credit note creating.
|
||||||
* @param {IRefundVendorCreditCreatingPayload} payload
|
* @param {IRefundVendorCreditCreatingPayload} payload
|
||||||
*/
|
*/
|
||||||
@OnEvent(events.vendorCredit.onRefundCreating)
|
@OnEvent(events.vendorCredit.onRefundCreating, { suppressErrors: false })
|
||||||
async validateBranchExistanceOnCreditRefundCreating({
|
async validateBranchExistanceOnCreditRefundCreating({
|
||||||
refundVendorCreditDTO,
|
refundVendorCreditDTO,
|
||||||
}: IRefundVendorCreditCreatingPayload) {
|
}: IRefundVendorCreditCreatingPayload) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { AccountRepository } from '@/modules/Accounts/repositories/Account.repos
|
|||||||
import { CustomerGLEntries } from './CustomerGLEntries';
|
import { CustomerGLEntries } from './CustomerGLEntries';
|
||||||
import { Customer } from './models/Customer';
|
import { Customer } from './models/Customer';
|
||||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||||
|
import { Account } from '../Accounts/models/Account.model';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class CustomerGLEntriesStorage {
|
export class CustomerGLEntriesStorage {
|
||||||
@@ -13,6 +14,9 @@ export class CustomerGLEntriesStorage {
|
|||||||
private readonly accountRepository: AccountRepository,
|
private readonly accountRepository: AccountRepository,
|
||||||
private readonly customerGLEntries: CustomerGLEntries,
|
private readonly customerGLEntries: CustomerGLEntries,
|
||||||
|
|
||||||
|
@Inject(Account.name)
|
||||||
|
private readonly accountModel: TenantModelProxy<typeof Account>,
|
||||||
|
|
||||||
@Inject(Customer.name)
|
@Inject(Customer.name)
|
||||||
private readonly customerModel: TenantModelProxy<typeof Customer>,
|
private readonly customerModel: TenantModelProxy<typeof Customer>,
|
||||||
) { }
|
) { }
|
||||||
@@ -29,9 +33,10 @@ export class CustomerGLEntriesStorage {
|
|||||||
.findById(customerId);
|
.findById(customerId);
|
||||||
|
|
||||||
// Finds the income account.
|
// Finds the income account.
|
||||||
const incomeAccount = await this.accountRepository.findOne({
|
const incomeAccount = await this.accountModel()
|
||||||
slug: 'other-income',
|
.query(trx)
|
||||||
});
|
.findOne({ slug: 'other-income' });
|
||||||
|
|
||||||
// Find or create the A/R account.
|
// Find or create the A/R account.
|
||||||
const ARAccount =
|
const ARAccount =
|
||||||
await this.accountRepository.findOrCreateAccountReceivable(
|
await this.accountRepository.findOrCreateAccountReceivable(
|
||||||
|
|||||||
@@ -9,10 +9,7 @@ import {
|
|||||||
Query,
|
Query,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { CustomersApplication } from './CustomersApplication.service';
|
import { CustomersApplication } from './CustomersApplication.service';
|
||||||
import {
|
import { CustomerOpeningBalanceEditDto } from './dtos/CustomerOpeningBalanceEdit.dto';
|
||||||
ICustomerOpeningBalanceEditDTO,
|
|
||||||
ICustomersFilter,
|
|
||||||
} from './types/Customers.types';
|
|
||||||
import {
|
import {
|
||||||
ApiOperation,
|
ApiOperation,
|
||||||
ApiResponse,
|
ApiResponse,
|
||||||
@@ -106,7 +103,7 @@ export class CustomersController {
|
|||||||
})
|
})
|
||||||
editOpeningBalance(
|
editOpeningBalance(
|
||||||
@Param('id') customerId: number,
|
@Param('id') customerId: number,
|
||||||
@Body() openingBalanceDTO: ICustomerOpeningBalanceEditDTO,
|
@Body() openingBalanceDTO: CustomerOpeningBalanceEditDto,
|
||||||
) {
|
) {
|
||||||
return this.customersApplication.editOpeningBalance(
|
return this.customersApplication.editOpeningBalance(
|
||||||
customerId,
|
customerId,
|
||||||
|
|||||||
@@ -25,7 +25,12 @@ import { CustomerGLEntriesStorage } from './CustomerGLEntriesStorage';
|
|||||||
import { CustomerWriteGLOpeningBalanceSubscriber } from './subscribers/CustomerGLEntriesSubscriber';
|
import { CustomerWriteGLOpeningBalanceSubscriber } from './subscribers/CustomerGLEntriesSubscriber';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [TenancyDatabaseModule, DynamicListModule, LedgerModule, AccountsModule],
|
imports: [
|
||||||
|
TenancyDatabaseModule,
|
||||||
|
DynamicListModule,
|
||||||
|
LedgerModule,
|
||||||
|
AccountsModule,
|
||||||
|
],
|
||||||
controllers: [CustomersController],
|
controllers: [CustomersController],
|
||||||
providers: [
|
providers: [
|
||||||
ActivateCustomer,
|
ActivateCustomer,
|
||||||
@@ -51,4 +56,4 @@ import { CustomerWriteGLOpeningBalanceSubscriber } from './subscribers/CustomerG
|
|||||||
CustomerWriteGLOpeningBalanceSubscriber,
|
CustomerWriteGLOpeningBalanceSubscriber,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class CustomersModule { }
|
export class CustomersModule {}
|
||||||
|
|||||||
@@ -4,10 +4,7 @@ import { CreateCustomer } from './commands/CreateCustomer.service';
|
|||||||
import { EditCustomer } from './commands/EditCustomer.service';
|
import { EditCustomer } from './commands/EditCustomer.service';
|
||||||
import { DeleteCustomer } from './commands/DeleteCustomer.service';
|
import { DeleteCustomer } from './commands/DeleteCustomer.service';
|
||||||
import { EditOpeningBalanceCustomer } from './commands/EditOpeningBalanceCustomer.service';
|
import { EditOpeningBalanceCustomer } from './commands/EditOpeningBalanceCustomer.service';
|
||||||
import {
|
import { CustomerOpeningBalanceEditDto } from './dtos/CustomerOpeningBalanceEdit.dto';
|
||||||
ICustomerOpeningBalanceEditDTO,
|
|
||||||
ICustomersFilter,
|
|
||||||
} from './types/Customers.types';
|
|
||||||
import { CreateCustomerDto } from './dtos/CreateCustomer.dto';
|
import { CreateCustomerDto } from './dtos/CreateCustomer.dto';
|
||||||
import { EditCustomerDto } from './dtos/EditCustomer.dto';
|
import { EditCustomerDto } from './dtos/EditCustomer.dto';
|
||||||
import { GetCustomers } from './queries/GetCustomers.service';
|
import { GetCustomers } from './queries/GetCustomers.service';
|
||||||
@@ -18,12 +15,12 @@ import { ValidateBulkDeleteCustomersService } from './ValidateBulkDeleteCustomer
|
|||||||
@Injectable()
|
@Injectable()
|
||||||
export class CustomersApplication {
|
export class CustomersApplication {
|
||||||
constructor(
|
constructor(
|
||||||
private getCustomerService: GetCustomerService,
|
private readonly getCustomerService: GetCustomerService,
|
||||||
private createCustomerService: CreateCustomer,
|
private readonly createCustomerService: CreateCustomer,
|
||||||
private editCustomerService: EditCustomer,
|
private readonly editCustomerService: EditCustomer,
|
||||||
private deleteCustomerService: DeleteCustomer,
|
private readonly deleteCustomerService: DeleteCustomer,
|
||||||
private editOpeningBalanceService: EditOpeningBalanceCustomer,
|
private readonly editOpeningBalanceService: EditOpeningBalanceCustomer,
|
||||||
private getCustomersService: GetCustomers,
|
private readonly getCustomersService: GetCustomers,
|
||||||
private readonly bulkDeleteCustomersService: BulkDeleteCustomersService,
|
private readonly bulkDeleteCustomersService: BulkDeleteCustomersService,
|
||||||
private readonly validateBulkDeleteCustomersService: ValidateBulkDeleteCustomersService,
|
private readonly validateBulkDeleteCustomersService: ValidateBulkDeleteCustomersService,
|
||||||
) {}
|
) {}
|
||||||
@@ -72,7 +69,7 @@ export class CustomersApplication {
|
|||||||
*/
|
*/
|
||||||
public editOpeningBalance = (
|
public editOpeningBalance = (
|
||||||
customerId: number,
|
customerId: number,
|
||||||
openingBalanceEditDTO: ICustomerOpeningBalanceEditDTO,
|
openingBalanceEditDTO: CustomerOpeningBalanceEditDto,
|
||||||
) => {
|
) => {
|
||||||
return this.editOpeningBalanceService.changeOpeningBalance(
|
return this.editOpeningBalanceService.changeOpeningBalance(
|
||||||
customerId,
|
customerId,
|
||||||
@@ -82,7 +79,7 @@ export class CustomersApplication {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve customers paginated list.
|
* Retrieve customers paginated list.
|
||||||
* @param {ICustomersFilter} filter - Cusotmers filter.
|
* @param {GetCustomersQueryDto} filter - Cusotmers filter.
|
||||||
*/
|
*/
|
||||||
public getCustomers = (filterDTO: GetCustomersQueryDto) => {
|
public getCustomers = (filterDTO: GetCustomersQueryDto) => {
|
||||||
return this.getCustomersService.getCustomersList(filterDTO);
|
return this.getCustomersService.getCustomersList(filterDTO);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export class CreateCustomer {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new customer.
|
* Creates a new customer.
|
||||||
* @param {ICustomerNewDTO} customerDTO
|
* @param {CreateCustomerDto} customerDTO
|
||||||
* @return {Promise<ICustomer>}
|
* @return {Promise<ICustomer>}
|
||||||
*/
|
*/
|
||||||
public async createCustomer(
|
public async createCustomer(
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
import { Knex } from 'knex';
|
import { Knex } from 'knex';
|
||||||
import {
|
import {
|
||||||
ICustomerOpeningBalanceEditDTO,
|
|
||||||
ICustomerOpeningBalanceEditedPayload,
|
ICustomerOpeningBalanceEditedPayload,
|
||||||
ICustomerOpeningBalanceEditingPayload,
|
ICustomerOpeningBalanceEditingPayload,
|
||||||
} from '../types/Customers.types';
|
} from '../types/Customers.types';
|
||||||
|
import { CustomerOpeningBalanceEditDto } from '../dtos/CustomerOpeningBalanceEdit.dto';
|
||||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||||
import { UnitOfWork } from '@/modules/Tenancy/TenancyDB/UnitOfWork.service';
|
import { UnitOfWork } from '@/modules/Tenancy/TenancyDB/UnitOfWork.service';
|
||||||
import { Customer } from '../models/Customer';
|
import { Customer } from '../models/Customer';
|
||||||
@@ -29,11 +29,11 @@ export class EditOpeningBalanceCustomer {
|
|||||||
/**
|
/**
|
||||||
* Changes the opening balance of the given customer.
|
* Changes the opening balance of the given customer.
|
||||||
* @param {number} customerId - Customer ID.
|
* @param {number} customerId - Customer ID.
|
||||||
* @param {ICustomerOpeningBalanceEditDTO} openingBalanceEditDTO
|
* @param {CustomerOpeningBalanceEditDto} openingBalanceEditDTO
|
||||||
*/
|
*/
|
||||||
public async changeOpeningBalance(
|
public async changeOpeningBalance(
|
||||||
customerId: number,
|
customerId: number,
|
||||||
openingBalanceEditDTO: ICustomerOpeningBalanceEditDTO,
|
openingBalanceEditDTO: CustomerOpeningBalanceEditDto,
|
||||||
): Promise<Customer> {
|
): Promise<Customer> {
|
||||||
// Retrieves the old customer or throw not found error.
|
// Retrieves the old customer or throw not found error.
|
||||||
const oldCustomer = await this.customerModel()
|
const oldCustomer = await this.customerModel()
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import {
|
|||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsNumber,
|
IsNumber,
|
||||||
IsString,
|
IsString,
|
||||||
|
ValidateIf,
|
||||||
} from 'class-validator';
|
} from 'class-validator';
|
||||||
import { ApiProperty } from '@nestjs/swagger';
|
import { ApiProperty } from '@nestjs/swagger';
|
||||||
import { IsOptional, ToNumber } from '@/common/decorators/Validators';
|
import { IsOptional, ToNumber } from '@/common/decorators/Validators';
|
||||||
@@ -40,10 +41,11 @@ export class CreateCustomerDto extends ContactAddressDto {
|
|||||||
|
|
||||||
@ApiProperty({
|
@ApiProperty({
|
||||||
required: false,
|
required: false,
|
||||||
description: 'Opening balance date',
|
description: 'Opening balance date (required when openingBalance is provided)',
|
||||||
example: '2024-01-01',
|
example: '2024-01-01',
|
||||||
})
|
})
|
||||||
@IsOptional()
|
@ValidateIf((o) => o.openingBalance != null)
|
||||||
|
@IsNotEmpty({ message: 'openingBalanceAt is required when openingBalance is provided' })
|
||||||
@IsString()
|
@IsString()
|
||||||
openingBalanceAt?: string;
|
openingBalanceAt?: string;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import { IsNotEmpty, IsNumber, IsString } from 'class-validator';
|
||||||
|
import { ApiProperty } from '@nestjs/swagger';
|
||||||
|
import { IsOptional, ToNumber } from '@/common/decorators/Validators';
|
||||||
|
|
||||||
|
export class CustomerOpeningBalanceEditDto {
|
||||||
|
@ApiProperty({
|
||||||
|
required: true,
|
||||||
|
description: 'Opening balance',
|
||||||
|
example: 5000.0,
|
||||||
|
})
|
||||||
|
@IsNumber()
|
||||||
|
@IsNotEmpty()
|
||||||
|
@ToNumber()
|
||||||
|
openingBalance: number;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
required: false,
|
||||||
|
description: 'Opening balance date',
|
||||||
|
example: '2024-01-01',
|
||||||
|
})
|
||||||
|
@IsOptional()
|
||||||
|
@IsString()
|
||||||
|
openingBalanceAt?: string;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
required: false,
|
||||||
|
description: 'Opening balance exchange rate',
|
||||||
|
example: 1.0,
|
||||||
|
})
|
||||||
|
@IsOptional()
|
||||||
|
@IsNumber()
|
||||||
|
@ToNumber()
|
||||||
|
openingBalanceExchangeRate?: number;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
required: false,
|
||||||
|
description: 'Opening balance branch ID',
|
||||||
|
example: 101,
|
||||||
|
})
|
||||||
|
@IsOptional()
|
||||||
|
@IsNumber()
|
||||||
|
@ToNumber()
|
||||||
|
openingBalanceBranchId?: number;
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import { IContactAddressDTO } from '@/modules/Contacts/types/Contacts.types';
|
|||||||
import { IDynamicListFilter } from '@/modules/DynamicListing/DynamicFilter/DynamicFilter.types';
|
import { IDynamicListFilter } from '@/modules/DynamicListing/DynamicFilter/DynamicFilter.types';
|
||||||
import { IFilterMeta, IPaginationMeta } from '@/interfaces/Model';
|
import { IFilterMeta, IPaginationMeta } from '@/interfaces/Model';
|
||||||
import { CreateCustomerDto } from '../dtos/CreateCustomer.dto';
|
import { CreateCustomerDto } from '../dtos/CreateCustomer.dto';
|
||||||
|
import { CustomerOpeningBalanceEditDto } from '../dtos/CustomerOpeningBalanceEdit.dto';
|
||||||
import { EditCustomerDto } from '../dtos/EditCustomer.dto';
|
import { EditCustomerDto } from '../dtos/EditCustomer.dto';
|
||||||
|
|
||||||
// Customer Interfaces.
|
// Customer Interfaces.
|
||||||
@@ -113,23 +114,16 @@ export enum VendorAction {
|
|||||||
View = 'View',
|
View = 'View',
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ICustomerOpeningBalanceEditDTO {
|
|
||||||
openingBalance: number;
|
|
||||||
openingBalanceAt: Date | string;
|
|
||||||
openingBalanceExchangeRate: number;
|
|
||||||
openingBalanceBranchId?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ICustomerOpeningBalanceEditingPayload {
|
export interface ICustomerOpeningBalanceEditingPayload {
|
||||||
oldCustomer: Customer;
|
oldCustomer: Customer;
|
||||||
openingBalanceEditDTO: ICustomerOpeningBalanceEditDTO;
|
openingBalanceEditDTO: CustomerOpeningBalanceEditDto;
|
||||||
trx?: Knex.Transaction;
|
trx?: Knex.Transaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ICustomerOpeningBalanceEditedPayload {
|
export interface ICustomerOpeningBalanceEditedPayload {
|
||||||
customer: Customer;
|
customer: Customer;
|
||||||
oldCustomer: Customer;
|
oldCustomer: Customer;
|
||||||
openingBalanceEditDTO: ICustomerOpeningBalanceEditDTO;
|
openingBalanceEditDTO: CustomerOpeningBalanceEditDto;
|
||||||
trx: Knex.Transaction;
|
trx: Knex.Transaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,10 +9,7 @@ import {
|
|||||||
Query,
|
Query,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { VendorsApplication } from './VendorsApplication.service';
|
import { VendorsApplication } from './VendorsApplication.service';
|
||||||
import {
|
import { VendorOpeningBalanceEditDto } from './dtos/VendorOpeningBalanceEdit.dto';
|
||||||
IVendorOpeningBalanceEditDTO,
|
|
||||||
IVendorsFilter,
|
|
||||||
} from './types/Vendors.types';
|
|
||||||
import {
|
import {
|
||||||
ApiOperation,
|
ApiOperation,
|
||||||
ApiResponse,
|
ApiResponse,
|
||||||
@@ -68,7 +65,7 @@ export class VendorsController {
|
|||||||
@ApiOperation({ summary: 'Edit the given vendor opening balance.' })
|
@ApiOperation({ summary: 'Edit the given vendor opening balance.' })
|
||||||
editOpeningBalance(
|
editOpeningBalance(
|
||||||
@Param('id') vendorId: number,
|
@Param('id') vendorId: number,
|
||||||
@Body() openingBalanceDTO: IVendorOpeningBalanceEditDTO,
|
@Body() openingBalanceDTO: VendorOpeningBalanceEditDto,
|
||||||
) {
|
) {
|
||||||
return this.vendorsApplication.editOpeningBalance(
|
return this.vendorsApplication.editOpeningBalance(
|
||||||
vendorId,
|
vendorId,
|
||||||
|
|||||||
@@ -5,10 +5,7 @@ import { EditVendorService } from './commands/EditVendor.service';
|
|||||||
import { DeleteVendorService } from './commands/DeleteVendor.service';
|
import { DeleteVendorService } from './commands/DeleteVendor.service';
|
||||||
import { EditOpeningBalanceVendorService } from './commands/EditOpeningBalanceVendor.service';
|
import { EditOpeningBalanceVendorService } from './commands/EditOpeningBalanceVendor.service';
|
||||||
import { GetVendorService } from './queries/GetVendor';
|
import { GetVendorService } from './queries/GetVendor';
|
||||||
import {
|
import { VendorOpeningBalanceEditDto } from './dtos/VendorOpeningBalanceEdit.dto';
|
||||||
IVendorOpeningBalanceEditDTO,
|
|
||||||
IVendorsFilter,
|
|
||||||
} from './types/Vendors.types';
|
|
||||||
import { GetVendorsService } from './queries/GetVendors.service';
|
import { GetVendorsService } from './queries/GetVendors.service';
|
||||||
import { CreateVendorDto } from './dtos/CreateVendor.dto';
|
import { CreateVendorDto } from './dtos/CreateVendor.dto';
|
||||||
import { EditVendorDto } from './dtos/EditVendor.dto';
|
import { EditVendorDto } from './dtos/EditVendor.dto';
|
||||||
@@ -58,14 +55,14 @@ export class VendorsApplication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Changes the opening balance of the given customer.
|
* Changes the opening balance of the given vendor.
|
||||||
* @param {number} vendorId
|
* @param {number} vendorId
|
||||||
* @param {IVendorOpeningBalanceEditDTO} openingBalanceEditDTO
|
* @param {VendorOpeningBalanceEditDto} openingBalanceEditDTO
|
||||||
* @returns {Promise<IVendor>}
|
* @returns {Promise<IVendor>}
|
||||||
*/
|
*/
|
||||||
public editOpeningBalance(
|
public editOpeningBalance(
|
||||||
vendorId: number,
|
vendorId: number,
|
||||||
openingBalanceEditDTO: IVendorOpeningBalanceEditDTO,
|
openingBalanceEditDTO: VendorOpeningBalanceEditDto,
|
||||||
) {
|
) {
|
||||||
return this.editOpeningBalanceService.editOpeningBalance(
|
return this.editOpeningBalanceService.editOpeningBalance(
|
||||||
vendorId,
|
vendorId,
|
||||||
@@ -95,10 +92,7 @@ export class VendorsApplication {
|
|||||||
vendorIds: number[],
|
vendorIds: number[],
|
||||||
options?: { skipUndeletable?: boolean },
|
options?: { skipUndeletable?: boolean },
|
||||||
) {
|
) {
|
||||||
return this.bulkDeleteVendorsService.bulkDeleteVendors(
|
return this.bulkDeleteVendorsService.bulkDeleteVendors(vendorIds, options);
|
||||||
vendorIds,
|
|
||||||
options,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public validateBulkDeleteVendors(vendorIds: number[]) {
|
public validateBulkDeleteVendors(vendorIds: number[]) {
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import { Knex } from 'knex';
|
|||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||||
import {
|
import {
|
||||||
IVendorOpeningBalanceEditDTO,
|
|
||||||
IVendorOpeningBalanceEditedPayload,
|
IVendorOpeningBalanceEditedPayload,
|
||||||
IVendorOpeningBalanceEditingPayload,
|
IVendorOpeningBalanceEditingPayload,
|
||||||
} from '../types/Vendors.types';
|
} from '../types/Vendors.types';
|
||||||
|
import { VendorOpeningBalanceEditDto } from '../dtos/VendorOpeningBalanceEdit.dto';
|
||||||
import { UnitOfWork } from '@/modules/Tenancy/TenancyDB/UnitOfWork.service';
|
import { UnitOfWork } from '@/modules/Tenancy/TenancyDB/UnitOfWork.service';
|
||||||
import { Vendor } from '../models/Vendor';
|
import { Vendor } from '../models/Vendor';
|
||||||
import { events } from '@/common/events/events';
|
import { events } from '@/common/events/events';
|
||||||
@@ -29,12 +29,12 @@ export class EditOpeningBalanceVendorService {
|
|||||||
/**
|
/**
|
||||||
* Changes the opening balance of the given customer.
|
* Changes the opening balance of the given customer.
|
||||||
* @param {number} vendorId
|
* @param {number} vendorId
|
||||||
* @param {IVendorOpeningBalanceEditDTO} openingBalanceEditDTO
|
* @param {VendorOpeningBalanceEditDto} openingBalanceEditDTO
|
||||||
* @returns {Promise<IVendor>}
|
* @returns {Promise<IVendor>}
|
||||||
*/
|
*/
|
||||||
public async editOpeningBalance(
|
public async editOpeningBalance(
|
||||||
vendorId: number,
|
vendorId: number,
|
||||||
openingBalanceEditDTO: IVendorOpeningBalanceEditDTO,
|
openingBalanceEditDTO: VendorOpeningBalanceEditDto,
|
||||||
) {
|
) {
|
||||||
// Retrieves the old vendor or throw not found error.
|
// Retrieves the old vendor or throw not found error.
|
||||||
const oldVendor = await this.vendorModel()
|
const oldVendor = await this.vendorModel()
|
||||||
|
|||||||
@@ -2,11 +2,13 @@ import { ApiProperty } from '@nestjs/swagger';
|
|||||||
import {
|
import {
|
||||||
IsISO8601,
|
IsISO8601,
|
||||||
IsInt,
|
IsInt,
|
||||||
|
IsNotEmpty,
|
||||||
IsNumber,
|
IsNumber,
|
||||||
Min,
|
Min,
|
||||||
IsBoolean,
|
IsBoolean,
|
||||||
IsEmail,
|
IsEmail,
|
||||||
IsString,
|
IsString,
|
||||||
|
ValidateIf,
|
||||||
} from 'class-validator';
|
} from 'class-validator';
|
||||||
import { ContactAddressDto } from '@/modules/Customers/dtos/ContactAddress.dto';
|
import { ContactAddressDto } from '@/modules/Customers/dtos/ContactAddress.dto';
|
||||||
import { IsOptional, ToNumber } from '@/common/decorators/Validators';
|
import { IsOptional, ToNumber } from '@/common/decorators/Validators';
|
||||||
@@ -30,8 +32,12 @@ export class CreateVendorDto extends ContactAddressDto {
|
|||||||
@ToNumber()
|
@ToNumber()
|
||||||
openingBalanceExchangeRate?: number;
|
openingBalanceExchangeRate?: number;
|
||||||
|
|
||||||
@ApiProperty({ required: false, description: 'Date of the opening balance' })
|
@ApiProperty({
|
||||||
@IsOptional()
|
required: false,
|
||||||
|
description: 'Date of the opening balance (required when openingBalance is provided)',
|
||||||
|
})
|
||||||
|
@ValidateIf((o) => o.openingBalance != null)
|
||||||
|
@IsNotEmpty({ message: 'openingBalanceAt is required when openingBalance is provided' })
|
||||||
@IsISO8601()
|
@IsISO8601()
|
||||||
openingBalanceAt?: Date;
|
openingBalanceAt?: Date;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import { IsNotEmpty, IsNumber, IsString } from 'class-validator';
|
||||||
|
import { ApiProperty } from '@nestjs/swagger';
|
||||||
|
import { IsOptional, ToNumber } from '@/common/decorators/Validators';
|
||||||
|
|
||||||
|
export class VendorOpeningBalanceEditDto {
|
||||||
|
@ApiProperty({
|
||||||
|
required: true,
|
||||||
|
description: 'Opening balance',
|
||||||
|
example: 5000.0,
|
||||||
|
})
|
||||||
|
@IsNumber()
|
||||||
|
@IsNotEmpty()
|
||||||
|
@ToNumber()
|
||||||
|
openingBalance: number;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
required: false,
|
||||||
|
description: 'Opening balance date',
|
||||||
|
example: '2024-01-01',
|
||||||
|
})
|
||||||
|
@IsOptional()
|
||||||
|
@IsString()
|
||||||
|
openingBalanceAt?: string;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
required: false,
|
||||||
|
description: 'Opening balance exchange rate',
|
||||||
|
example: 1.0,
|
||||||
|
})
|
||||||
|
@IsOptional()
|
||||||
|
@IsNumber()
|
||||||
|
@ToNumber()
|
||||||
|
openingBalanceExchangeRate?: number;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
required: false,
|
||||||
|
description: 'Opening balance branch ID',
|
||||||
|
example: 101,
|
||||||
|
})
|
||||||
|
@IsOptional()
|
||||||
|
@IsNumber()
|
||||||
|
@ToNumber()
|
||||||
|
openingBalanceBranchId?: number;
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ import { IDynamicListFilter } from '@/modules/DynamicListing/DynamicFilter/Dynam
|
|||||||
import { IFilterMeta, IPaginationMeta } from '@/interfaces/Model';
|
import { IFilterMeta, IPaginationMeta } from '@/interfaces/Model';
|
||||||
import { CreateVendorDto } from '../dtos/CreateVendor.dto';
|
import { CreateVendorDto } from '../dtos/CreateVendor.dto';
|
||||||
import { EditVendorDto } from '../dtos/EditVendor.dto';
|
import { EditVendorDto } from '../dtos/EditVendor.dto';
|
||||||
|
import { VendorOpeningBalanceEditDto } from '../dtos/VendorOpeningBalanceEdit.dto';
|
||||||
|
|
||||||
// ----------------------------------
|
// ----------------------------------
|
||||||
export interface IVendorNewDTO extends IContactAddressDTO {
|
export interface IVendorNewDTO extends IContactAddressDTO {
|
||||||
@@ -92,23 +93,16 @@ export interface IVendorEventEditedPayload {
|
|||||||
trx?: Knex.Transaction;
|
trx?: Knex.Transaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IVendorOpeningBalanceEditDTO {
|
|
||||||
openingBalance: number;
|
|
||||||
openingBalanceAt: Date | string;
|
|
||||||
openingBalanceExchangeRate: number;
|
|
||||||
openingBalanceBranchId?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IVendorOpeningBalanceEditingPayload {
|
export interface IVendorOpeningBalanceEditingPayload {
|
||||||
oldVendor: Vendor;
|
oldVendor: Vendor;
|
||||||
openingBalanceEditDTO: IVendorOpeningBalanceEditDTO;
|
openingBalanceEditDTO: VendorOpeningBalanceEditDto;
|
||||||
trx?: Knex.Transaction;
|
trx?: Knex.Transaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IVendorOpeningBalanceEditedPayload {
|
export interface IVendorOpeningBalanceEditedPayload {
|
||||||
vendor: Vendor;
|
vendor: Vendor;
|
||||||
oldVendor: Vendor;
|
oldVendor: Vendor;
|
||||||
openingBalanceEditDTO: IVendorOpeningBalanceEditDTO;
|
openingBalanceEditDTO: VendorOpeningBalanceEditDto;
|
||||||
trx: Knex.Transaction;
|
trx: Knex.Transaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user