mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 14:50:32 +00:00
Merge pull request #894 from bigcapitalhq/fix-refund-credit-notes
fix(server): refund credit note gl entries
This commit is contained in:
@@ -16,8 +16,6 @@ export class BillPaymentsExportable extends Exportable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the accounts data to exportable sheet.
|
* Retrieves the accounts data to exportable sheet.
|
||||||
* @param {number} tenantId
|
|
||||||
* @returns
|
|
||||||
*/
|
*/
|
||||||
public async exportable(query: any) {
|
public async exportable(query: any) {
|
||||||
const filterQuery = (builder) => {
|
const filterQuery = (builder) => {
|
||||||
|
|||||||
@@ -7,9 +7,13 @@ import { CreditNotesRefundsApplication } from './CreditNotesRefundsApplication.s
|
|||||||
import { CreditNoteRefundsController } from './CreditNoteRefunds.controller';
|
import { CreditNoteRefundsController } from './CreditNoteRefunds.controller';
|
||||||
import { CreditNotesModule } from '../CreditNotes/CreditNotes.module';
|
import { CreditNotesModule } from '../CreditNotes/CreditNotes.module';
|
||||||
import { GetCreditNoteRefundsService } from './queries/GetCreditNoteRefunds.service';
|
import { GetCreditNoteRefundsService } from './queries/GetCreditNoteRefunds.service';
|
||||||
|
import { RefundCreditNoteGLEntries } from './commands/RefundCreditNoteGLEntries';
|
||||||
|
import { RefundCreditNoteGLEntriesSubscriber } from '../CreditNotes/subscribers/RefundCreditNoteGLEntriesSubscriber';
|
||||||
|
import { LedgerModule } from '../Ledger/Ledger.module';
|
||||||
|
import { AccountsModule } from '../Accounts/Accounts.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [forwardRef(() => CreditNotesModule)],
|
imports: [forwardRef(() => CreditNotesModule), LedgerModule, AccountsModule],
|
||||||
providers: [
|
providers: [
|
||||||
CreateRefundCreditNoteService,
|
CreateRefundCreditNoteService,
|
||||||
DeleteRefundCreditNoteService,
|
DeleteRefundCreditNoteService,
|
||||||
@@ -17,8 +21,10 @@ import { GetCreditNoteRefundsService } from './queries/GetCreditNoteRefunds.serv
|
|||||||
RefundSyncCreditNoteBalanceService,
|
RefundSyncCreditNoteBalanceService,
|
||||||
CreditNotesRefundsApplication,
|
CreditNotesRefundsApplication,
|
||||||
GetCreditNoteRefundsService,
|
GetCreditNoteRefundsService,
|
||||||
|
RefundCreditNoteGLEntries,
|
||||||
|
RefundCreditNoteGLEntriesSubscriber,
|
||||||
],
|
],
|
||||||
exports: [RefundSyncCreditNoteBalanceService],
|
exports: [RefundSyncCreditNoteBalanceService],
|
||||||
controllers: [CreditNoteRefundsController],
|
controllers: [CreditNoteRefundsController],
|
||||||
})
|
})
|
||||||
export class CreditNoteRefundsModule {}
|
export class CreditNoteRefundsModule { }
|
||||||
|
|||||||
@@ -6,15 +6,21 @@ import { VendorCreditsRefundApplication } from './VendorCreditsRefund.applicatio
|
|||||||
import { CreateRefundVendorCredit } from './commands/CreateRefundVendorCredit.service';
|
import { CreateRefundVendorCredit } from './commands/CreateRefundVendorCredit.service';
|
||||||
import { WarehousesModule } from '../Warehouses/Warehouses.module';
|
import { WarehousesModule } from '../Warehouses/Warehouses.module';
|
||||||
import { BranchesModule } from '../Branches/Branches.module';
|
import { BranchesModule } from '../Branches/Branches.module';
|
||||||
|
import { RefundVendorCreditGLEntries } from './commands/RefundVendorCreditGLEntries';
|
||||||
|
import { RefundVendorCreditGLEntriesSubscriber } from './subscribers/RefundVendorCreditGLEntriesSubscriber';
|
||||||
|
import { LedgerModule } from '../Ledger/Ledger.module';
|
||||||
|
import { AccountsModule } from '../Accounts/Accounts.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [WarehousesModule, BranchesModule],
|
imports: [WarehousesModule, BranchesModule, LedgerModule, AccountsModule],
|
||||||
providers: [
|
providers: [
|
||||||
GetRefundVendorCreditsService,
|
GetRefundVendorCreditsService,
|
||||||
DeleteRefundVendorCreditService,
|
DeleteRefundVendorCreditService,
|
||||||
CreateRefundVendorCredit,
|
CreateRefundVendorCredit,
|
||||||
VendorCreditsRefundApplication
|
VendorCreditsRefundApplication,
|
||||||
|
RefundVendorCreditGLEntries,
|
||||||
|
RefundVendorCreditGLEntriesSubscriber,
|
||||||
],
|
],
|
||||||
controllers: [VendorCreditsRefundController],
|
controllers: [VendorCreditsRefundController],
|
||||||
})
|
})
|
||||||
export class VendorCreditsRefundModule {}
|
export class VendorCreditsRefundModule { }
|
||||||
|
|||||||
@@ -1,159 +1,172 @@
|
|||||||
// import { Inject, Service } from 'typedi';
|
import { LedgerStorageService } from '@/modules/Ledger/LedgerStorage.service';
|
||||||
// import { Knex } from 'knex';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
// import { AccountNormal, ILedgerEntry } from '@/interfaces';
|
import { RefundVendorCredit } from '../models/RefundVendorCredit';
|
||||||
// import { IRefundVendorCredit } from '@/interfaces';
|
import { Ledger } from '@/modules/Ledger/Ledger';
|
||||||
// import JournalPosterService from '@/services/Sales/JournalPosterService';
|
import { Knex } from 'knex';
|
||||||
// import LedgerRepository from '@/services/Ledger/LedgerRepository';
|
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||||
// import HasTenancyService from '@/services/Tenancy/TenancyService';
|
import { Account } from '@/modules/Accounts/models/Account.model';
|
||||||
|
import { ILedgerEntry } from '@/modules/Ledger/types/Ledger.types';
|
||||||
|
import { AccountNormal } from '@/interfaces/Account';
|
||||||
|
import { AccountRepository } from '@/modules/Accounts/repositories/Account.repository';
|
||||||
|
|
||||||
// @Service()
|
@Injectable()
|
||||||
// export default class RefundVendorCreditGLEntries {
|
export class RefundVendorCreditGLEntries {
|
||||||
// @Inject()
|
constructor(
|
||||||
// private journalService: JournalPosterService;
|
private readonly ledgerStorage: LedgerStorageService,
|
||||||
|
private readonly accountRepository: AccountRepository,
|
||||||
|
|
||||||
// @Inject()
|
@Inject(Account.name)
|
||||||
// private ledgerRepository: LedgerRepository;
|
private readonly accountModel: TenantModelProxy<typeof Account>,
|
||||||
|
|
||||||
// @Inject()
|
@Inject(RefundVendorCredit.name)
|
||||||
// private tenancy: HasTenancyService;
|
private readonly refundVendorCreditModel: TenantModelProxy<
|
||||||
|
typeof RefundVendorCredit
|
||||||
|
>,
|
||||||
|
) { }
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * Retrieves the refund credit common GL entry.
|
* Retrieves the refund vendor credit common GL entry.
|
||||||
// * @param {IRefundVendorCredit} refundCredit
|
* @param {RefundVendorCredit} refundVendorCredit
|
||||||
// */
|
* @returns
|
||||||
// private getRefundCreditGLCommonEntry = (
|
*/
|
||||||
// refundCredit: IRefundVendorCredit
|
private getRefundVendorCreditCommonGLEntry = (
|
||||||
// ) => {
|
refundVendorCredit: RefundVendorCredit,
|
||||||
// return {
|
) => {
|
||||||
// exchangeRate: refundCredit.exchangeRate,
|
const model = refundVendorCredit as any;
|
||||||
// currencyCode: refundCredit.currencyCode,
|
return {
|
||||||
|
currencyCode: refundVendorCredit.currencyCode,
|
||||||
|
exchangeRate: refundVendorCredit.exchangeRate,
|
||||||
|
|
||||||
// transactionType: 'RefundVendorCredit',
|
transactionType: 'RefundVendorCredit',
|
||||||
// transactionId: refundCredit.id,
|
transactionId: refundVendorCredit.id,
|
||||||
|
date: refundVendorCredit.date,
|
||||||
|
userId: refundVendorCredit.vendorCredit?.userId,
|
||||||
|
|
||||||
// date: refundCredit.date,
|
referenceNumber: refundVendorCredit.referenceNo,
|
||||||
// userId: refundCredit.userId,
|
|
||||||
// referenceNumber: refundCredit.referenceNo,
|
|
||||||
// createdAt: refundCredit.createdAt,
|
|
||||||
// indexGroup: 10,
|
|
||||||
|
|
||||||
// credit: 0,
|
createdAt: model.createdAt,
|
||||||
// debit: 0,
|
indexGroup: 10,
|
||||||
|
|
||||||
// note: refundCredit.description,
|
credit: 0,
|
||||||
// branchId: refundCredit.branchId,
|
debit: 0,
|
||||||
// };
|
|
||||||
// };
|
|
||||||
|
|
||||||
// /**
|
note: refundVendorCredit.description,
|
||||||
// * Retrieves the refund credit payable GL entry.
|
branchId: refundVendorCredit.branchId,
|
||||||
// * @param {IRefundVendorCredit} refundCredit
|
};
|
||||||
// * @param {number} APAccountId
|
};
|
||||||
// * @returns {ILedgerEntry}
|
|
||||||
// */
|
|
||||||
// private getRefundCreditGLPayableEntry = (
|
|
||||||
// refundCredit: IRefundVendorCredit,
|
|
||||||
// APAccountId: number
|
|
||||||
// ): ILedgerEntry => {
|
|
||||||
// const commonEntry = this.getRefundCreditGLCommonEntry(refundCredit);
|
|
||||||
|
|
||||||
// return {
|
/**
|
||||||
// ...commonEntry,
|
* Retrieves the refund vendor credit payable GL entry.
|
||||||
// credit: refundCredit.amount,
|
* @param {RefundVendorCredit} refundVendorCredit
|
||||||
// accountId: APAccountId,
|
* @param {number} APAccountId
|
||||||
// contactId: refundCredit.vendorCredit.vendorId,
|
* @returns {ILedgerEntry}
|
||||||
// index: 1,
|
*/
|
||||||
// accountNormal: AccountNormal.CREDIT,
|
private getRefundVendorCreditGLPayableEntry = (
|
||||||
// };
|
refundVendorCredit: RefundVendorCredit,
|
||||||
// };
|
APAccountId: number,
|
||||||
|
): ILedgerEntry => {
|
||||||
|
const commonEntry = this.getRefundVendorCreditCommonGLEntry(
|
||||||
|
refundVendorCredit,
|
||||||
|
);
|
||||||
|
|
||||||
// /**
|
return {
|
||||||
// * Retrieves the refund credit deposit GL entry.
|
...commonEntry,
|
||||||
// * @param {IRefundVendorCredit} refundCredit
|
credit: refundVendorCredit.amount,
|
||||||
// * @returns {ILedgerEntry}
|
accountId: APAccountId,
|
||||||
// */
|
contactId: refundVendorCredit.vendorCredit.vendorId,
|
||||||
// private getRefundCreditGLDepositEntry = (
|
index: 1,
|
||||||
// refundCredit: IRefundVendorCredit
|
accountNormal: AccountNormal.CREDIT,
|
||||||
// ): ILedgerEntry => {
|
};
|
||||||
// const commonEntry = this.getRefundCreditGLCommonEntry(refundCredit);
|
};
|
||||||
|
|
||||||
// return {
|
/**
|
||||||
// ...commonEntry,
|
* Retrieves the refund vendor credit deposit GL entry.
|
||||||
// debit: refundCredit.amount,
|
* @param {RefundVendorCredit} refundVendorCredit
|
||||||
// accountId: refundCredit.depositAccountId,
|
* @returns {ILedgerEntry}
|
||||||
// index: 2,
|
*/
|
||||||
// accountNormal: AccountNormal.DEBIT,
|
private getRefundVendorCreditGLDepositEntry = (
|
||||||
// };
|
refundVendorCredit: RefundVendorCredit,
|
||||||
// };
|
): ILedgerEntry => {
|
||||||
|
const commonEntry = this.getRefundVendorCreditCommonGLEntry(
|
||||||
|
refundVendorCredit,
|
||||||
|
);
|
||||||
|
|
||||||
// /**
|
return {
|
||||||
// * Retrieve refund vendor credit GL entries.
|
...commonEntry,
|
||||||
// * @param {IRefundVendorCredit} refundCredit
|
debit: refundVendorCredit.amount,
|
||||||
// * @param {number} APAccountId
|
accountId: refundVendorCredit.depositAccountId,
|
||||||
// * @returns {ILedgerEntry[]}
|
index: 2,
|
||||||
// */
|
accountNormal: AccountNormal.DEBIT,
|
||||||
// public getRefundCreditGLEntries = (
|
};
|
||||||
// refundCredit: IRefundVendorCredit,
|
};
|
||||||
// APAccountId: number
|
|
||||||
// ): ILedgerEntry[] => {
|
|
||||||
// const payableEntry = this.getRefundCreditGLPayableEntry(
|
|
||||||
// refundCredit,
|
|
||||||
// APAccountId
|
|
||||||
// );
|
|
||||||
// const depositEntry = this.getRefundCreditGLDepositEntry(refundCredit);
|
|
||||||
|
|
||||||
// return [payableEntry, depositEntry];
|
/**
|
||||||
// };
|
* Retrieve refund vendor credit GL entries.
|
||||||
|
* @param {RefundVendorCredit} refundVendorCredit
|
||||||
|
* @param {number} APAccountId
|
||||||
|
* @returns {ILedgerEntry[]}
|
||||||
|
*/
|
||||||
|
public getRefundVendorCreditGLEntries(
|
||||||
|
refundVendorCredit: RefundVendorCredit,
|
||||||
|
APAccountId: number,
|
||||||
|
): ILedgerEntry[] {
|
||||||
|
const payableEntry = this.getRefundVendorCreditGLPayableEntry(
|
||||||
|
refundVendorCredit,
|
||||||
|
APAccountId,
|
||||||
|
);
|
||||||
|
const depositEntry = this.getRefundVendorCreditGLDepositEntry(
|
||||||
|
refundVendorCredit,
|
||||||
|
);
|
||||||
|
|
||||||
// /**
|
return [payableEntry, depositEntry];
|
||||||
// * Saves refund credit note GL entries.
|
}
|
||||||
// * @param {number} tenantId
|
|
||||||
// * @param {IRefundVendorCredit} refundCredit -
|
|
||||||
// * @param {Knex.Transaction} trx -
|
|
||||||
// * @return {Promise<void>}
|
|
||||||
// */
|
|
||||||
// public saveRefundCreditGLEntries = async (
|
|
||||||
// tenantId: number,
|
|
||||||
// refundCreditId: number,
|
|
||||||
// trx?: Knex.Transaction
|
|
||||||
// ): Promise<void> => {
|
|
||||||
// const { Account, RefundVendorCredit } = this.tenancy.models(tenantId);
|
|
||||||
|
|
||||||
// // Retireve refund with associated vendor credit entity.
|
/**
|
||||||
// const refundCredit = await RefundVendorCredit.query()
|
* Creates refund vendor credit GL entries.
|
||||||
// .findById(refundCreditId)
|
* @param {number} refundVendorCreditId
|
||||||
// .withGraphFetched('vendorCredit');
|
* @param {Knex.Transaction} trx
|
||||||
|
*/
|
||||||
|
public createRefundVendorCreditGLEntries = async (
|
||||||
|
refundVendorCreditId: number,
|
||||||
|
trx?: Knex.Transaction,
|
||||||
|
) => {
|
||||||
|
// Retrieve the refund with associated vendor credit.
|
||||||
|
const refundVendorCredit = await this.refundVendorCreditModel()
|
||||||
|
.query(trx)
|
||||||
|
.findById(refundVendorCreditId)
|
||||||
|
.withGraphFetched('vendorCredit');
|
||||||
|
|
||||||
// const payableAccount = await Account.query().findOne(
|
// Retrieve the payable account (A/P) account based on the given currency.
|
||||||
// 'slug',
|
const APAccount = await this.accountRepository.findOrCreateAccountsPayable(
|
||||||
// 'accounts-payable'
|
refundVendorCredit.currencyCode,
|
||||||
// );
|
{},
|
||||||
// // Generates the GL entries of the given refund credit.
|
trx,
|
||||||
// const entries = this.getRefundCreditGLEntries(
|
);
|
||||||
// refundCredit,
|
|
||||||
// payableAccount.id
|
|
||||||
// );
|
|
||||||
// // Saves the ledegr to the storage.
|
|
||||||
// await this.ledgerRepository.saveLedgerEntries(tenantId, entries, trx);
|
|
||||||
// };
|
|
||||||
|
|
||||||
// /**
|
// Retrieve refund vendor credit GL entries.
|
||||||
// * Reverts refund credit note GL entries.
|
const refundGLEntries = this.getRefundVendorCreditGLEntries(
|
||||||
// * @param {number} tenantId
|
refundVendorCredit,
|
||||||
// * @param {number} refundCreditId
|
APAccount.id,
|
||||||
// * @param {Knex.Transaction} trx
|
);
|
||||||
// * @return {Promise<void>}
|
const ledger = new Ledger(refundGLEntries);
|
||||||
// */
|
|
||||||
// public revertRefundCreditGLEntries = async (
|
// Saves refund ledger entries.
|
||||||
// tenantId: number,
|
await this.ledgerStorage.commit(ledger, trx);
|
||||||
// refundCreditId: number,
|
};
|
||||||
// trx?: Knex.Transaction
|
|
||||||
// ) => {
|
/**
|
||||||
// await this.journalService.revertJournalTransactions(
|
* Reverts refund vendor credit GL entries.
|
||||||
// tenantId,
|
* @param {number} refundVendorCreditId
|
||||||
// refundCreditId,
|
* @param {Knex.Transaction} trx
|
||||||
// 'RefundVendorCredit',
|
*/
|
||||||
// trx
|
public revertRefundVendorCreditGLEntries = async (
|
||||||
// );
|
refundVendorCreditId: number,
|
||||||
// };
|
trx?: Knex.Transaction,
|
||||||
// }
|
) => {
|
||||||
|
await this.ledgerStorage.deleteByReference(
|
||||||
|
refundVendorCreditId,
|
||||||
|
'RefundVendorCredit',
|
||||||
|
trx,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
import { events } from '@/common/events/events';
|
||||||
|
import { RefundVendorCreditGLEntries } from '../commands/RefundVendorCreditGLEntries';
|
||||||
|
import {
|
||||||
|
IRefundVendorCreditCreatedPayload,
|
||||||
|
IRefundVendorCreditDeletedPayload,
|
||||||
|
} from '../types/VendorCreditRefund.types';
|
||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { OnEvent } from '@nestjs/event-emitter';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class RefundVendorCreditGLEntriesSubscriber {
|
||||||
|
constructor(
|
||||||
|
private readonly refundVendorCreditGLEntries: RefundVendorCreditGLEntries,
|
||||||
|
) { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes refund vendor credit GL entries once the transaction created.
|
||||||
|
* @param {IRefundVendorCreditCreatedPayload} payload -
|
||||||
|
*/
|
||||||
|
@OnEvent(events.vendorCredit.onRefundCreated)
|
||||||
|
async writeRefundVendorCreditGLEntriesOnceCreated({
|
||||||
|
trx,
|
||||||
|
refundVendorCredit,
|
||||||
|
vendorCredit,
|
||||||
|
}: IRefundVendorCreditCreatedPayload) {
|
||||||
|
await this.refundVendorCreditGLEntries.createRefundVendorCreditGLEntries(
|
||||||
|
refundVendorCredit.id,
|
||||||
|
trx,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverts refund vendor credit GL entries once the transaction deleted.
|
||||||
|
* @param {IRefundVendorCreditDeletedPayload} payload -
|
||||||
|
*/
|
||||||
|
@OnEvent(events.vendorCredit.onRefundDeleted)
|
||||||
|
async revertRefundVendorCreditGLEntriesOnceDeleted({
|
||||||
|
trx,
|
||||||
|
refundCreditId,
|
||||||
|
oldRefundCredit,
|
||||||
|
}: IRefundVendorCreditDeletedPayload) {
|
||||||
|
await this.refundVendorCreditGLEntries.revertRefundVendorCreditGLEntries(
|
||||||
|
refundCreditId,
|
||||||
|
trx,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@ import { Intent, Alert } from '@blueprintjs/core';
|
|||||||
import { queryCache } from 'react-query';
|
import { queryCache } from 'react-query';
|
||||||
import { AppToaster } from '@/components';
|
import { AppToaster } from '@/components';
|
||||||
|
|
||||||
import { withAccountsActions } from '@/containers/Accounts/withAccountsTableActions';
|
// import { withAccountsActions } from '@/containers/Accounts/withAccountsTableActions';
|
||||||
import { withAlertStoreConnect } from '@/containers/Alert/withAlertStoreConnect';
|
import { withAlertStoreConnect } from '@/containers/Alert/withAlertStoreConnect';
|
||||||
import { withAlertActions } from '@/containers/Alert/withAlertActions';
|
import { withAlertActions } from '@/containers/Alert/withAlertActions';
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ function AccountBulkInactivateAlert({
|
|||||||
|
|
||||||
closeAlert,
|
closeAlert,
|
||||||
}) {
|
}) {
|
||||||
|
|
||||||
const [isLoading, setLoading] = useState(false);
|
const [isLoading, setLoading] = useState(false);
|
||||||
const selectedRowsCount = 0;
|
const selectedRowsCount = 0;
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ function AccountBulkInactivateAlert({
|
|||||||
});
|
});
|
||||||
queryCache.invalidateQueries('accounts-table');
|
queryCache.invalidateQueries('accounts-table');
|
||||||
})
|
})
|
||||||
.catch((errors) => {})
|
.catch((errors) => { })
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
closeAlert(name);
|
closeAlert(name);
|
||||||
@@ -68,5 +68,5 @@ function AccountBulkInactivateAlert({
|
|||||||
export default compose(
|
export default compose(
|
||||||
withAlertStoreConnect(),
|
withAlertStoreConnect(),
|
||||||
withAlertActions,
|
withAlertActions,
|
||||||
withAccountsActions,
|
// withAccountsActions,
|
||||||
)(AccountBulkInactivateAlert);
|
)(AccountBulkInactivateAlert);
|
||||||
|
|||||||
@@ -70,16 +70,16 @@ function VendorCreditNoteForm({
|
|||||||
() => ({
|
() => ({
|
||||||
...(!isEmpty(vendorCredit)
|
...(!isEmpty(vendorCredit)
|
||||||
? {
|
? {
|
||||||
...transformToEditForm(vendorCredit),
|
...transformToEditForm(vendorCredit),
|
||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
...defaultVendorsCreditNote,
|
...defaultVendorsCreditNote,
|
||||||
...(vendorcreditAutoIncrement && {
|
...(vendorcreditAutoIncrement && {
|
||||||
vendor_credit_number: vendorCreditNumber,
|
vendor_credit_number: vendorCreditNumber,
|
||||||
}),
|
|
||||||
currency_code: base_currency,
|
|
||||||
...newVendorCredit,
|
|
||||||
}),
|
}),
|
||||||
|
currency_code: base_currency,
|
||||||
|
...newVendorCredit,
|
||||||
|
}),
|
||||||
}),
|
}),
|
||||||
[vendorCredit, base_currency],
|
[vendorCredit, base_currency],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import {
|
|||||||
VendorsSelect,
|
VendorsSelect,
|
||||||
Stack,
|
Stack,
|
||||||
FDateInput,
|
FDateInput,
|
||||||
|
FInputGroup,
|
||||||
} from '@/components';
|
} from '@/components';
|
||||||
import {
|
import {
|
||||||
vendorsFieldShouldUpdate,
|
vendorsFieldShouldUpdate,
|
||||||
@@ -74,6 +75,7 @@ function VendorCreditNoteFormHeaderFields({
|
|||||||
}) {
|
}) {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const fieldsClassName = getFieldsStyle(theme);
|
const fieldsClassName = getFieldsStyle(theme);
|
||||||
|
const { values } = useFormikContext();
|
||||||
|
|
||||||
// Handle vendor credit number changing.
|
// Handle vendor credit number changing.
|
||||||
const handleVendorCreditNumberChange = () => {
|
const handleVendorCreditNumberChange = () => {
|
||||||
@@ -81,10 +83,11 @@ function VendorCreditNoteFormHeaderFields({
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Handle vendor credit no. field blur.
|
// Handle vendor credit no. field blur.
|
||||||
const handleVendorCreditNoBlur = (form, field) => (event) => {
|
const handleVendorCreditNoBlur = (event) => {
|
||||||
const newValue = event.target.value;
|
const newValue = event.target.value;
|
||||||
|
const oldValue = values.vendor_credit_number;
|
||||||
|
|
||||||
if (field.value !== newValue && vendorcreditAutoIncrement) {
|
if (oldValue !== newValue && vendorcreditAutoIncrement) {
|
||||||
openDialog('vendor-credit-form', {
|
openDialog('vendor-credit-form', {
|
||||||
initialFormValues: {
|
initialFormValues: {
|
||||||
manualTransactionNo: newValue,
|
manualTransactionNo: newValue,
|
||||||
@@ -109,7 +112,6 @@ function VendorCreditNoteFormHeaderFields({
|
|||||||
name={'exchange_rate'}
|
name={'exchange_rate'}
|
||||||
formGroupProps={{ label: ' ', inline: true }}
|
formGroupProps={{ label: ' ', inline: true }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* ------- Vendor Credit date ------- */}
|
{/* ------- Vendor Credit date ------- */}
|
||||||
<FFormGroup
|
<FFormGroup
|
||||||
name={'vendor_credit_date'}
|
name={'vendor_credit_date'}
|
||||||
@@ -130,7 +132,6 @@ function VendorCreditNoteFormHeaderFields({
|
|||||||
</FFormGroup>
|
</FFormGroup>
|
||||||
|
|
||||||
{/* ----------- Vendor Credit No # ----------- */}
|
{/* ----------- Vendor Credit No # ----------- */}
|
||||||
|
|
||||||
<FFormGroup
|
<FFormGroup
|
||||||
name={'vendor_credit_number'}
|
name={'vendor_credit_number'}
|
||||||
label={<T id={'credit_note.label_credit_note'} />}
|
label={<T id={'credit_note.label_credit_note'} />}
|
||||||
@@ -163,7 +164,7 @@ function VendorCreditNoteFormHeaderFields({
|
|||||||
</FFormGroup>
|
</FFormGroup>
|
||||||
|
|
||||||
{/* ----------- Reference ----------- */}
|
{/* ----------- Reference ----------- */}
|
||||||
<FFormGroup label={<T id={'reference_no'} />} inline={true} fastField>
|
<FFormGroup name={'reference_no'} label={<T id={'reference_no'} />} inline={true} fastField>
|
||||||
<FInputGroup name={'reference_no'} minimal={true} fastField />
|
<FInputGroup name={'reference_no'} minimal={true} fastField />
|
||||||
</FFormGroup>
|
</FFormGroup>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|||||||
Reference in New Issue
Block a user