diff --git a/packages/server/src/modules/Bills/commands/EditBill.service.ts b/packages/server/src/modules/Bills/commands/EditBill.service.ts index 7456c250c..1e445d79b 100644 --- a/packages/server/src/modules/Bills/commands/EditBill.service.ts +++ b/packages/server/src/modules/Bills/commands/EditBill.service.ts @@ -28,8 +28,9 @@ export class EditBillService { private transformerDTO: BillDTOTransformer, @Inject(Bill.name) private billModel: TenantModelProxy, - @Inject(Vendor.name) private contactModel: TenantModelProxy, - ) {} + @Inject(Vendor.name) private vendorModel: TenantModelProxy, + + ) { } /** * Edits details of the given bill id with associated entries. @@ -58,10 +59,9 @@ export class EditBillService { this.validators.validateBillExistance(oldBill); // Retrieve vendor details or throw not found service error. - const vendor = await this.contactModel() + const vendor = await this.vendorModel() .query() .findById(billDTO.vendorId) - .modify('vendor') .throwIfNotFound(); // Validate bill number uniqiness on the storage. diff --git a/packages/server/src/modules/Bills/dtos/Bill.dto.ts b/packages/server/src/modules/Bills/dtos/Bill.dto.ts index f0dc2bc1e..99d3fb6d7 100644 --- a/packages/server/src/modules/Bills/dtos/Bill.dto.ts +++ b/packages/server/src/modules/Bills/dtos/Bill.dto.ts @@ -1,6 +1,7 @@ import { ToNumber } from '@/common/decorators/Validators'; import { ItemEntryDto } from '@/modules/TransactionItemEntry/dto/ItemEntry.dto'; -import { Type } from 'class-transformer'; +import { Type, Transform } from 'class-transformer'; +import { parseBoolean } from '@/utils/parse-boolean'; import { ApiProperty } from '@nestjs/swagger'; import { ArrayMinSize, @@ -31,6 +32,7 @@ export class BillEntryDto extends ItemEntryDto { }) @IsOptional() @IsBoolean() + @Transform(({ value }) => parseBoolean(value, false)) landedCost?: boolean; } @@ -211,5 +213,5 @@ export class CommandBillDto { adjustment?: number; } -export class CreateBillDto extends CommandBillDto {} -export class EditBillDto extends CommandBillDto {} +export class CreateBillDto extends CommandBillDto { } +export class EditBillDto extends CommandBillDto { } diff --git a/packages/server/src/modules/CreditNotes/commands/CommandCreditNoteDTOTransform.service.ts b/packages/server/src/modules/CreditNotes/commands/CommandCreditNoteDTOTransform.service.ts index 967d10f79..7e82500fc 100644 --- a/packages/server/src/modules/CreditNotes/commands/CommandCreditNoteDTOTransform.service.ts +++ b/packages/server/src/modules/CreditNotes/commands/CommandCreditNoteDTOTransform.service.ts @@ -10,6 +10,7 @@ import { BranchTransactionDTOTransformer } from '@/modules/Branches/integrations import { WarehouseTransactionDTOTransform } from '@/modules/Warehouses/Integrations/WarehouseTransactionDTOTransform'; import { BrandingTemplateDTOTransformer } from '../../PdfTemplate/BrandingTemplateDTOTransformer'; import { assocItemEntriesDefaultIndex } from '@/utils/associate-item-entries-index'; +import { formatDateFields } from '@/utils/format-date-fields'; import { CreditNoteAutoIncrementService } from './CreditNoteAutoIncrement.service'; import { CreditNote } from '../models/CreditNote'; import { @@ -33,7 +34,7 @@ export class CommandCreditNoteDTOTransform { private readonly warehouseDTOTransform: WarehouseTransactionDTOTransform, private readonly brandingTemplatesTransformer: BrandingTemplateDTOTransformer, private readonly creditNoteAutoIncrement: CreditNoteAutoIncrementService, - ) {} + ) { } /** * Transforms the credit/edit DTO to model. @@ -70,7 +71,10 @@ export class CommandCreditNoteDTOTransform { autoNextNumber; const initialDTO = { - ...omit(creditNoteDTO, ['open', 'attachments']), + ...formatDateFields( + omit(creditNoteDTO, ['open', 'attachments']), + ['creditNoteDate'], + ), creditNoteNumber, amount, currencyCode: customerCurrencyCode, @@ -78,8 +82,8 @@ export class CommandCreditNoteDTOTransform { entries, ...(creditNoteDTO.open && !oldCreditNote?.openedAt && { - openedAt: moment().toMySqlDateTime(), - }), + openedAt: moment().toMySqlDateTime(), + }), refundedAmount: 0, invoicesAmount: 0, }; diff --git a/packages/server/src/modules/Expenses/dtos/Expense.dto.ts b/packages/server/src/modules/Expenses/dtos/Expense.dto.ts index e1f536003..1d822f2e9 100644 --- a/packages/server/src/modules/Expenses/dtos/Expense.dto.ts +++ b/packages/server/src/modules/Expenses/dtos/Expense.dto.ts @@ -185,5 +185,5 @@ export class CommandExpenseDto { attachments?: AttachmentDto[]; } -export class CreateExpenseDto extends CommandExpenseDto {} -export class EditExpenseDto extends CommandExpenseDto {} +export class CreateExpenseDto extends CommandExpenseDto { } +export class EditExpenseDto extends CommandExpenseDto { } diff --git a/packages/server/src/modules/SaleEstimates/dtos/SaleEstimate.dto.ts b/packages/server/src/modules/SaleEstimates/dtos/SaleEstimate.dto.ts index e05f29d9b..544ca2260 100644 --- a/packages/server/src/modules/SaleEstimates/dtos/SaleEstimate.dto.ts +++ b/packages/server/src/modules/SaleEstimates/dtos/SaleEstimate.dto.ts @@ -21,7 +21,7 @@ enum DiscountType { Amount = 'amount', } -class SaleEstimateEntryDto extends ItemEntryDto {} +class SaleEstimateEntryDto extends ItemEntryDto { } class AttachmentDto { @IsString() @@ -140,6 +140,7 @@ export class CommandSaleEstimateDto { }, ], }) + attachments?: AttachmentDto[]; @IsOptional() @ToNumber() @@ -177,5 +178,5 @@ export class CommandSaleEstimateDto { adjustment?: number; } -export class CreateSaleEstimateDto extends CommandSaleEstimateDto {} -export class EditSaleEstimateDto extends CommandSaleEstimateDto {} +export class CreateSaleEstimateDto extends CommandSaleEstimateDto { } +export class EditSaleEstimateDto extends CommandSaleEstimateDto { } diff --git a/packages/server/src/modules/TaxRates/TaxRate.controller.ts b/packages/server/src/modules/TaxRates/TaxRate.controller.ts index b8263696d..476ac4e32 100644 --- a/packages/server/src/modules/TaxRates/TaxRate.controller.ts +++ b/packages/server/src/modules/TaxRates/TaxRate.controller.ts @@ -24,7 +24,7 @@ import { ApiCommonHeaders } from '@/common/decorators/ApiCommonHeaders'; @ApiExtraModels(TaxRateResponseDto) @ApiCommonHeaders() export class TaxRatesController { - constructor(private readonly taxRatesApplication: TaxRatesApplication) {} + constructor(private readonly taxRatesApplication: TaxRatesApplication) { } @Post() @ApiOperation({ summary: 'Create a new tax rate.' }) diff --git a/packages/server/src/modules/VendorCredit/commands/VendorCreditDTOTransform.service.ts b/packages/server/src/modules/VendorCredit/commands/VendorCreditDTOTransform.service.ts index 930704b57..8c2c05016 100644 --- a/packages/server/src/modules/VendorCredit/commands/VendorCreditDTOTransform.service.ts +++ b/packages/server/src/modules/VendorCredit/commands/VendorCreditDTOTransform.service.ts @@ -8,6 +8,7 @@ import { BranchTransactionDTOTransformer } from '@/modules/Branches/integrations import { WarehouseTransactionDTOTransform } from '@/modules/Warehouses/Integrations/WarehouseTransactionDTOTransform'; import { VendorCredit } from '../models/VendorCredit'; import { assocItemEntriesDefaultIndex } from '@/utils/associate-item-entries-index'; +import { formatDateFields } from '@/utils/format-date-fields'; import { VendorCreditAutoIncrementService } from './VendorCreditAutoIncrement.service'; import { ServiceError } from '@/modules/Items/ServiceError'; import { Injectable } from '@nestjs/common'; @@ -30,7 +31,7 @@ export class VendorCreditDTOTransformService { private branchDTOTransform: BranchTransactionDTOTransformer, private warehouseDTOTransform: WarehouseTransactionDTOTransform, private vendorCreditAutoIncrement: VendorCreditAutoIncrementService, - ) {} + ) { } /** * Transforms the credit/edit vendor credit DTO to model. @@ -70,7 +71,10 @@ export class VendorCreditDTOTransformService { autoNextNumber; const initialDTO = { - ...omit(vendorCreditDTO, ['open', 'attachments']), + ...formatDateFields( + omit(vendorCreditDTO, ['open', 'attachments']), + ['vendorCreditDate'], + ), amount, currencyCode: vendorCurrencyCode, exchangeRate: vendorCreditDTO.exchangeRate || 1, @@ -78,8 +82,8 @@ export class VendorCreditDTOTransformService { entries, ...(vendorCreditDTO.open && !oldVendorCredit?.openedAt && { - openedAt: moment().toMySqlDateTime(), - }), + openedAt: moment().toMySqlDateTime(), + }), }; return composeAsync( this.branchDTOTransform.transformDTO, diff --git a/packages/webapp/src/containers/Projects/hooks/projectTimeEntry.tsx b/packages/webapp/src/containers/Projects/hooks/projectTimeEntry.tsx index d864093d7..5a510d8a8 100644 --- a/packages/webapp/src/containers/Projects/hooks/projectTimeEntry.tsx +++ b/packages/webapp/src/containers/Projects/hooks/projectTimeEntry.tsx @@ -43,7 +43,7 @@ export function useEditProjectTimeEntry(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`projects/times/${id}`, values), + ([id, values]) => apiRequest.put(`projects/times/${id}`, values), { onSuccess: (res, [id, values]) => { // Invalidate specific project time entry. diff --git a/packages/webapp/src/containers/Projects/hooks/projects.ts b/packages/webapp/src/containers/Projects/hooks/projects.ts index b256ed7b8..2ec8b9970 100644 --- a/packages/webapp/src/containers/Projects/hooks/projects.ts +++ b/packages/webapp/src/containers/Projects/hooks/projects.ts @@ -39,7 +39,7 @@ export function useEditProject(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`/projects/${id}`, values), + ([id, values]) => apiRequest.put(`/projects/${id}`, values), { onSuccess: (res, [id, values]) => { // Invalidate specific project. diff --git a/packages/webapp/src/containers/Projects/hooks/projectsTask.tsx b/packages/webapp/src/containers/Projects/hooks/projectsTask.tsx index b5f6316f4..fcf4c2b57 100644 --- a/packages/webapp/src/containers/Projects/hooks/projectsTask.tsx +++ b/packages/webapp/src/containers/Projects/hooks/projectsTask.tsx @@ -41,7 +41,7 @@ export function useEditProjectTask(props) { const queryClient = useQueryClient(); const apiRequest = useApiRequest(); - return useMutation(([id, values]) => apiRequest.post(`tasks/${id}`, values), { + return useMutation(([id, values]) => apiRequest.put(`tasks/${id}`, values), { onSuccess: (res, [id, values]) => { // Common invalidate queries. commonInvalidateQueries(queryClient); diff --git a/packages/webapp/src/hooks/query/accounts.tsx b/packages/webapp/src/hooks/query/accounts.tsx index 544062bce..21172f3ca 100644 --- a/packages/webapp/src/hooks/query/accounts.tsx +++ b/packages/webapp/src/hooks/query/accounts.tsx @@ -91,7 +91,7 @@ export function useEditAccount(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`accounts/${id}`, values), + ([id, values]) => apiRequest.put(`accounts/${id}`, values), { onSuccess: () => { // Common invalidate queries. diff --git a/packages/webapp/src/hooks/query/bills.tsx b/packages/webapp/src/hooks/query/bills.tsx index 20a852904..b155270f0 100644 --- a/packages/webapp/src/hooks/query/bills.tsx +++ b/packages/webapp/src/hooks/query/bills.tsx @@ -69,7 +69,7 @@ export function useEditBill(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`bills/${id}`, values), + ([id, values]) => apiRequest.put(`bills/${id}`, values), { onSuccess: (res, [id, values]) => { // Common invalidate queries. diff --git a/packages/webapp/src/hooks/query/creditNote.tsx b/packages/webapp/src/hooks/query/creditNote.tsx index 19fa99c06..5ab42f1b8 100644 --- a/packages/webapp/src/hooks/query/creditNote.tsx +++ b/packages/webapp/src/hooks/query/creditNote.tsx @@ -78,7 +78,7 @@ export function useEditCreditNote(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`credit-notes/${id}`, values), + ([id, values]) => apiRequest.put(`credit-notes/${id}`, values), { onSuccess: (res, [id, values]) => { // Common invalidate queries. diff --git a/packages/webapp/src/hooks/query/estimates.tsx b/packages/webapp/src/hooks/query/estimates.tsx index 5102a8dcd..e9095e7fc 100644 --- a/packages/webapp/src/hooks/query/estimates.tsx +++ b/packages/webapp/src/hooks/query/estimates.tsx @@ -47,7 +47,7 @@ export function useEditEstimate(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`sale-estimates/${id}`, values), + ([id, values]) => apiRequest.put(`sale-estimates/${id}`, values), { onSuccess: (res, [id, values]) => { // Common invalidate queries. diff --git a/packages/webapp/src/hooks/query/invoices.tsx b/packages/webapp/src/hooks/query/invoices.tsx index cbb465fa3..de460a09f 100644 --- a/packages/webapp/src/hooks/query/invoices.tsx +++ b/packages/webapp/src/hooks/query/invoices.tsx @@ -85,7 +85,7 @@ export function useEditInvoice(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`sale-invoices/${id}`, values), + ([id, values]) => apiRequest.put(`sale-invoices/${id}`, values), { onSuccess: (res, [id, values]) => { // Invalidate specific sale invoice. diff --git a/packages/webapp/src/hooks/query/paymentMades.tsx b/packages/webapp/src/hooks/query/paymentMades.tsx index 1e568df76..9f17a4a05 100644 --- a/packages/webapp/src/hooks/query/paymentMades.tsx +++ b/packages/webapp/src/hooks/query/paymentMades.tsx @@ -86,7 +86,7 @@ export function useEditPaymentMade(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`bill-payments/${id}`, values), + ([id, values]) => apiRequest.put(`bill-payments/${id}`, values), { onSuccess: (res, [id, values]) => { // Common invalidation queries. diff --git a/packages/webapp/src/hooks/query/paymentReceives.tsx b/packages/webapp/src/hooks/query/paymentReceives.tsx index a36295189..3bc316c4c 100644 --- a/packages/webapp/src/hooks/query/paymentReceives.tsx +++ b/packages/webapp/src/hooks/query/paymentReceives.tsx @@ -111,7 +111,7 @@ export function useEditPaymentReceive(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`payments-received/${id}`, values), + ([id, values]) => apiRequest.put(`payments-received/${id}`, values), { onSuccess: (data, [id, values]) => { // Invalidate specific payment receive. diff --git a/packages/webapp/src/hooks/query/receipts.tsx b/packages/webapp/src/hooks/query/receipts.tsx index 53d13ead9..7781b12ec 100644 --- a/packages/webapp/src/hooks/query/receipts.tsx +++ b/packages/webapp/src/hooks/query/receipts.tsx @@ -71,7 +71,7 @@ export function useEditReceipt(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`sale-receipts/${id}`, values), + ([id, values]) => apiRequest.put(`sale-receipts/${id}`, values), { onSuccess: (res, [id, values]) => { // Invalidate specific receipt. diff --git a/packages/webapp/src/hooks/query/roles.tsx b/packages/webapp/src/hooks/query/roles.tsx index 164d7adcd..07573ffc6 100644 --- a/packages/webapp/src/hooks/query/roles.tsx +++ b/packages/webapp/src/hooks/query/roles.tsx @@ -18,7 +18,7 @@ export function useEditRolePermissionSchema(props) { const queryClient = useQueryClient(); const apiRequest = useApiRequest(); - return useMutation(([id, values]) => apiRequest.post(`roles/${id}`, values), { + return useMutation(([id, values]) => apiRequest.put(`roles/${id}`, values), { onSuccess: () => { // Common invalidate queries. commonInvalidateQueries(queryClient); diff --git a/packages/webapp/src/hooks/query/taxRates.ts b/packages/webapp/src/hooks/query/taxRates.ts index 8b4dc1f47..a026d4387 100644 --- a/packages/webapp/src/hooks/query/taxRates.ts +++ b/packages/webapp/src/hooks/query/taxRates.ts @@ -54,7 +54,7 @@ export function useEditTaxRate(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`tax-rates/${id}`, values), + ([id, values]) => apiRequest.put(`tax-rates/${id}`, values), { onSuccess: (res, id) => { commonInvalidateQueries(queryClient); diff --git a/packages/webapp/src/hooks/query/users.tsx b/packages/webapp/src/hooks/query/users.tsx index 58cc093c1..8880fd862 100644 --- a/packages/webapp/src/hooks/query/users.tsx +++ b/packages/webapp/src/hooks/query/users.tsx @@ -35,7 +35,7 @@ export function useEditUser(props) { const queryClient = useQueryClient(); const apiRequest = useApiRequest(); - return useMutation(([id, values]) => apiRequest.post(`users/${id}`, values), { + return useMutation(([id, values]) => apiRequest.put(`users/${id}`, values), { onSuccess: (res, [id, values]) => { queryClient.invalidateQueries([t.USER, id]); diff --git a/packages/webapp/src/hooks/query/vendorCredit.tsx b/packages/webapp/src/hooks/query/vendorCredit.tsx index fead76a26..149cdcf23 100644 --- a/packages/webapp/src/hooks/query/vendorCredit.tsx +++ b/packages/webapp/src/hooks/query/vendorCredit.tsx @@ -77,7 +77,7 @@ export function useEditVendorCredit(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`vendor-credits/${id}`, values), + ([id, values]) => apiRequest.put(`vendor-credits/${id}`, values), { onSuccess: (res, [id, values]) => { // Common invalidate queries. diff --git a/packages/webapp/src/hooks/query/warehousesTransfers.tsx b/packages/webapp/src/hooks/query/warehousesTransfers.tsx index a2e0a84e6..103c815a6 100644 --- a/packages/webapp/src/hooks/query/warehousesTransfers.tsx +++ b/packages/webapp/src/hooks/query/warehousesTransfers.tsx @@ -45,7 +45,7 @@ export function useEditWarehouseTransfer(props) { const apiRequest = useApiRequest(); return useMutation( - ([id, values]) => apiRequest.post(`warehouse-transfers/${id}`, values), + ([id, values]) => apiRequest.put(`warehouse-transfers/${id}`, values), { onSuccess: (res, [id, values]) => { // Invalidate specific sale invoice.