diff --git a/packages/server/src/loaders/eventEmitter.ts b/packages/server/src/loaders/eventEmitter.ts index 12efacc1e..726dde8e3 100644 --- a/packages/server/src/loaders/eventEmitter.ts +++ b/packages/server/src/loaders/eventEmitter.ts @@ -276,9 +276,5 @@ export const susbcribers = () => { // Plaid RecognizeSyncedBankTranasctions, - - // Advanced Payments - AutoApplyUnearnedRevenueOnInvoiceCreated, - AutoApplyPrepardExpensesOnBillCreated ]; }; diff --git a/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveValidators.ts b/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveValidators.ts index 35899e057..5ec2dc9c7 100644 --- a/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveValidators.ts +++ b/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveValidators.ts @@ -107,7 +107,6 @@ export class PaymentReceiveValidators { const invoicesIds = paymentReceiveEntries.map( (e: IPaymentReceiveEntryDTO) => e.invoiceId ); - const storedInvoices = await SaleInvoice.query().whereIn('id', invoicesIds); const storedInvoicesMap = new Map( diff --git a/packages/server/src/subscribers/PaymentReceive/WriteGLEntries.ts b/packages/server/src/subscribers/PaymentReceive/WriteGLEntries.ts index e81aefc16..a058b74e4 100644 --- a/packages/server/src/subscribers/PaymentReceive/WriteGLEntries.ts +++ b/packages/server/src/subscribers/PaymentReceive/WriteGLEntries.ts @@ -25,14 +25,6 @@ export default class PaymentReceivesWriteGLEntriesSubscriber { events.paymentReceive.onCreated, this.handleWriteJournalEntriesOnceCreated ); - bus.subscribe( - events.paymentReceive.onCreated, - this.handleWriteUnearnedRevenueGLEntriesOnCreated.bind(this) - ); - bus.subscribe( - events.paymentReceive.onUnearnedRevenueApplied, - this.handleRewriteUnearnedRevenueGLEntriesOnApply - ); bus.subscribe( events.paymentReceive.onEdited, this.handleOverwriteJournalEntriesOnceEdited @@ -57,17 +49,6 @@ export default class PaymentReceivesWriteGLEntriesSubscriber { paymentReceiveId, trx ); - }; - - /** - * Handles rewrite payment GL entries on unearned revenue payload. - * @param {PaymentReceiveUnearnedRevenueAppliedEventPayload} payload - - */ - private handleWriteUnearnedRevenueGLEntriesOnCreated = async ({ - tenantId, - paymentReceiveId, - trx, - }: IPaymentReceiveCreatedPayload) => { await this.paymentReceivedUnearnedGLEntries.writePaymentGLEntries( tenantId, paymentReceiveId, @@ -75,22 +56,6 @@ export default class PaymentReceivesWriteGLEntriesSubscriber { ); }; - /** - * Handles rewrite unearned revenue GL entries on payment received applied. - * @param {PaymentReceiveUnearnedRevenueAppliedEventPayload} payload - - */ - private handleRewriteUnearnedRevenueGLEntriesOnApply = async ({ - tenantId, - paymentReceiveId, - trx, - }: PaymentReceiveUnearnedRevenueAppliedEventPayload) => { - await this.paymentReceivedUnearnedGLEntries.rewritePaymentGLEntries( - tenantId, - paymentReceiveId, - trx - ); - }; - /** * Handle journal entries writing once the payment receive edited. * @param {IPaymentReceiveEditedPayload} payload - @@ -98,6 +63,7 @@ export default class PaymentReceivesWriteGLEntriesSubscriber { private handleOverwriteJournalEntriesOnceEdited = async ({ tenantId, paymentReceive, + paymentReceiveId, trx, }: IPaymentReceiveEditedPayload) => { await this.paymentReceiveGLEntries.rewritePaymentGLEntries( @@ -105,6 +71,11 @@ export default class PaymentReceivesWriteGLEntriesSubscriber { paymentReceive.id, trx ); + await this.paymentReceivedUnearnedGLEntries.rewritePaymentGLEntries( + tenantId, + paymentReceiveId, + trx + ); }; /** diff --git a/packages/webapp/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.tsx b/packages/webapp/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.tsx index a683ae81d..a82091896 100644 --- a/packages/webapp/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.tsx +++ b/packages/webapp/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.tsx @@ -29,6 +29,7 @@ function PaymentMadeFormHeader() { +

diff --git a/packages/webapp/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.tsx b/packages/webapp/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.tsx index caf9561c3..c6b01ae9b 100644 --- a/packages/webapp/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.tsx +++ b/packages/webapp/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.tsx @@ -2,6 +2,7 @@ import React, { useMemo } from 'react'; import styled from 'styled-components'; import classNames from 'classnames'; +import { isEmpty, toSafeInteger } from 'lodash'; import { FormGroup, InputGroup, @@ -13,7 +14,6 @@ import { import { DateInput } from '@blueprintjs/datetime'; import { FastField, Field, useFormikContext, ErrorMessage } from 'formik'; import { FormattedMessage as T, VendorsSelect } from '@/components'; -import { toSafeInteger } from 'lodash'; import { CLASSES } from '@/constants/classes'; import { @@ -115,10 +115,10 @@ function PaymentMadeFormHeaderFields({ organization: { base_currency } }) { {/* ------------ Full amount ------------ */} - + {({ form: { - values: { currency_code }, + values: { currency_code, entries }, }, field: { value }, meta: { error, touched }, @@ -142,15 +142,17 @@ function PaymentMadeFormHeaderFields({ organization: { base_currency } }) { /> - + {!isEmpty(entries) && ( + + )} )} diff --git a/packages/webapp/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.tsx b/packages/webapp/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.tsx index 6f57e8666..be69cee4d 100644 --- a/packages/webapp/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.tsx +++ b/packages/webapp/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.tsx @@ -108,6 +108,15 @@ function PaymentReceiveForm({ setSubmitting(true); const exceededAmount = getExceededAmountFromValues(values); + // Validates the amount should be bigger than zero. + if (values.amount <= 0) { + AppToaster.show({ + message: intl.get('you_cannot_make_payment_with_zero_total_amount'), + intent: Intent.DANGER, + }); + setSubmitting(false); + return; + } // Show the confirm popup if the excessed amount bigger than zero and // excess confirmation has not been confirmed yet. if (exceededAmount > 0 && !isExcessConfirmed) { diff --git a/packages/webapp/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.tsx b/packages/webapp/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.tsx index c94623a5c..98b9fe4e2 100644 --- a/packages/webapp/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.tsx +++ b/packages/webapp/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.tsx @@ -11,7 +11,7 @@ import { Button, } from '@blueprintjs/core'; import { DateInput } from '@blueprintjs/datetime'; -import { toSafeInteger } from 'lodash'; +import { isEmpty, toSafeInteger } from 'lodash'; import { FastField, Field, useFormikContext, ErrorMessage } from 'formik'; import { @@ -128,7 +128,7 @@ export default function PaymentReceiveHeaderFields() { {({ form: { setFieldValue, - values: { currency_code }, + values: { currency_code, entries }, }, field: { value, onChange }, meta: { error, touched }, @@ -152,15 +152,17 @@ export default function PaymentReceiveHeaderFields() { /> - + {!isEmpty(entries) && ( + + )} )}