diff --git a/packages/server/src/services/Attachments/events/AttachmentsOnVendorCredits.ts b/packages/server/src/services/Attachments/events/AttachmentsOnVendorCredits.ts index 1295baa6b..acc9dd6de 100644 --- a/packages/server/src/services/Attachments/events/AttachmentsOnVendorCredits.ts +++ b/packages/server/src/services/Attachments/events/AttachmentsOnVendorCredits.ts @@ -27,23 +27,23 @@ export class AttachmentsOnVendorCredits { */ public attach(bus) { bus.subscribe( - events.saleInvoice.onCreating, + events.vendorCredit.onCreating, this.validateAttachmentsOnVendorCreditCreate.bind(this) ); bus.subscribe( - events.saleInvoice.onCreated, + events.vendorCredit.onCreated, this.handleAttachmentsOnVendorCreditCreated.bind(this) ); bus.subscribe( - events.saleInvoice.onEdited, + events.vendorCredit.onEdited, this.handleUnlinkUnpresentedKeysOnVendorCreditEdited.bind(this) ); bus.subscribe( - events.saleInvoice.onEdited, + events.vendorCredit.onEdited, this.handleLinkPresentedKeysOnVendorCreditEdited.bind(this) ); bus.subscribe( - events.saleInvoice.onDeleting, + events.vendorCredit.onDeleting, this.handleUnlinkAttachmentsOnVendorCreditDeleted.bind(this) ); } diff --git a/packages/server/src/services/CreditNotes/GetCreditNote.ts b/packages/server/src/services/CreditNotes/GetCreditNote.ts index 95dd044fd..8f9484b8f 100644 --- a/packages/server/src/services/CreditNotes/GetCreditNote.ts +++ b/packages/server/src/services/CreditNotes/GetCreditNote.ts @@ -28,7 +28,8 @@ export default class GetCreditNote extends BaseCreditNotes { .findById(creditNoteId) .withGraphFetched('entries.item') .withGraphFetched('customer') - .withGraphFetched('branch'); + .withGraphFetched('branch') + .withGraphFetched('attachments'); if (!creditNote) { throw new ServiceError(ERRORS.CREDIT_NOTE_NOT_FOUND); diff --git a/packages/server/src/services/Purchases/BillPayments/BillPaymentsPages.ts b/packages/server/src/services/Purchases/BillPayments/BillPaymentsPages.ts index 0eb20b856..a23d0c472 100644 --- a/packages/server/src/services/Purchases/BillPayments/BillPaymentsPages.ts +++ b/packages/server/src/services/Purchases/BillPayments/BillPaymentsPages.ts @@ -25,7 +25,8 @@ export default class BillPaymentsPages { const { BillPayment, Bill } = this.tenancy.models(tenantId); const billPayment = await BillPayment.query() .findById(billPaymentId) - .withGraphFetched('entries.bill'); + .withGraphFetched('entries.bill') + .withGraphFetched('attachments'); // Throw not found the bill payment. if (!billPayment) { diff --git a/packages/server/src/services/Purchases/BillPayments/CreateBillPayment.ts b/packages/server/src/services/Purchases/BillPayments/CreateBillPayment.ts index 057b330ed..ed16e0715 100644 --- a/packages/server/src/services/Purchases/BillPayments/CreateBillPayment.ts +++ b/packages/server/src/services/Purchases/BillPayments/CreateBillPayment.ts @@ -112,7 +112,6 @@ export class CreateBillPayment { const billPayment = await BillPayment.query(trx).insertGraphAndFetch({ ...billPaymentObj, }); - // Triggers `onBillPaymentCreated` event. await this.eventPublisher.emitAsync(events.billPayment.onCreated, { tenantId, diff --git a/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveDTOTransformer.ts b/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveDTOTransformer.ts index a1eab9814..8d0357e04 100644 --- a/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveDTOTransformer.ts +++ b/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveDTOTransformer.ts @@ -51,7 +51,7 @@ export class PaymentReceiveDTOTransformer { this.validators.validatePaymentNoRequire(paymentReceiveNo); const initialDTO = { - ...formatDateFields(omit(paymentReceiveDTO, ['entries']), [ + ...formatDateFields(omit(paymentReceiveDTO, ['entries', 'attachments']), [ 'paymentDate', ]), amount: paymentAmount, diff --git a/packages/server/src/services/Sales/PaymentReceives/PaymentReceivesPages.ts b/packages/server/src/services/Sales/PaymentReceives/PaymentReceivesPages.ts index b08f2ac71..72068225c 100644 --- a/packages/server/src/services/Sales/PaymentReceives/PaymentReceivesPages.ts +++ b/packages/server/src/services/Sales/PaymentReceives/PaymentReceivesPages.ts @@ -66,7 +66,7 @@ export default class PaymentReceivesPages { */ public async getPaymentReceiveEditPage( tenantId: number, - paymentReceiveId: number, + paymentReceiveId: number ): Promise<{ paymentReceive: Omit; entries: IPaymentReceivePageEntry[]; @@ -76,7 +76,8 @@ export default class PaymentReceivesPages { // Retrieve payment receive. const paymentReceive = await PaymentReceive.query() .findById(paymentReceiveId) - .withGraphFetched('entries.invoice'); + .withGraphFetched('entries.invoice') + .withGraphFetched('attachments'); // Throw not found the payment receive. if (!paymentReceive) { diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx index a2ff9988a..62377a21a 100644 --- a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx +++ b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx @@ -5,7 +5,7 @@ import intl from 'react-intl-universal'; import moment from 'moment'; import * as R from 'ramda'; import { Intent } from '@blueprintjs/core'; -import { omit, first, sumBy, round } from 'lodash'; +import { omit, first, sumBy } from 'lodash'; import { compose, transformToForm, @@ -27,6 +27,10 @@ import { ensureEntriesHaveEmptyLine, } from '@/containers/Entries/utils'; import { TaxType } from '@/interfaces/TaxRates'; +import { + transformAttachmentsToForm, + transformAttachmentsToRequest, +} from '@/containers/Attachments/utils'; export const MIN_LINES_NUMBER = 1; @@ -63,6 +67,7 @@ export const defaultInvoice = { warehouse_id: '', project_id: '', entries: [...repeatValue(defaultInvoiceEntry, MIN_LINES_NUMBER)], + attachments: [], }; /** @@ -89,6 +94,7 @@ export function transformToEditForm(invoice) { ? TaxType.Inclusive : TaxType.Exclusive, entries, + attachments: transformAttachmentsToForm(invoice), }; } @@ -192,6 +198,7 @@ export function transformValueToRequest(values) { ...omit(entry, ['amount', 'tax_amount', 'tax_rate']), })), delivered: false, + attachments: transformAttachmentsToRequest(values), }; } @@ -408,3 +415,15 @@ export const useIsInvoiceTaxExclusive = () => { return values.inclusive_exclusive_tax === TaxType.Exclusive; }; + +export function formatBytes(bytes, decimals = 2) { + if (bytes === 0) return '0 Bytes'; + + const k = 1024; + const dm = decimals < 0 ? 0 : decimals; + const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + + const i = Math.floor(Math.log(bytes) / Math.log(k)); + + return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; +}