Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: upload and attach documents #461

Merged
merged 11 commits into from
May 30, 2024
Prev Previous commit
Next Next commit
feat: wip upload attachmentsx
  • Loading branch information
abouolia committed May 29, 2024
commit e7871e34a997310255e13542b025005edfbdf73b
Original file line number Diff line number Diff line change
Expand Up @@ -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)
);
}
Expand Down
3 changes: 2 additions & 1 deletion packages/server/src/services/CreditNotes/GetCreditNote.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export default class PaymentReceivesPages {
*/
public async getPaymentReceiveEditPage(
tenantId: number,
paymentReceiveId: number,
paymentReceiveId: number
): Promise<{
paymentReceive: Omit<IPaymentReceive, 'entries'>;
entries: IPaymentReceivePageEntry[];
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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;

Expand Down Expand Up @@ -63,6 +67,7 @@ export const defaultInvoice = {
warehouse_id: '',
project_id: '',
entries: [...repeatValue(defaultInvoiceEntry, MIN_LINES_NUMBER)],
attachments: [],
};

/**
Expand All @@ -89,6 +94,7 @@ export function transformToEditForm(invoice) {
? TaxType.Inclusive
: TaxType.Exclusive,
entries,
attachments: transformAttachmentsToForm(invoice),
};
}

Expand Down Expand Up @@ -192,6 +198,7 @@ export function transformValueToRequest(values) {
...omit(entry, ['amount', 'tax_amount', 'tax_rate']),
})),
delivered: false,
attachments: transformAttachmentsToRequest(values),
};
}

Expand Down Expand Up @@ -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];
}
Loading