fix: issues related to PUT operations

This commit is contained in:
Ahmed Bouhuolia
2025-10-28 18:12:08 +02:00
parent 368c85a01a
commit f736c3f9eb
23 changed files with 48 additions and 37 deletions

View File

@@ -28,7 +28,8 @@ export class EditBillService {
private transformerDTO: BillDTOTransformer,
@Inject(Bill.name) private billModel: TenantModelProxy<typeof Bill>,
@Inject(Vendor.name) private contactModel: TenantModelProxy<typeof Vendor>,
@Inject(Vendor.name) private vendorModel: TenantModelProxy<typeof Vendor>,
) { }
/**
@@ -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.

View File

@@ -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;
}

View File

@@ -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 {
@@ -70,7 +71,10 @@ export class CommandCreditNoteDTOTransform {
autoNextNumber;
const initialDTO = {
...omit(creditNoteDTO, ['open', 'attachments']),
...formatDateFields(
omit(creditNoteDTO, ['open', 'attachments']),
['creditNoteDate'],
),
creditNoteNumber,
amount,
currencyCode: customerCurrencyCode,

View File

@@ -140,6 +140,7 @@ export class CommandSaleEstimateDto {
},
],
})
attachments?: AttachmentDto[];
@IsOptional()
@ToNumber()

View File

@@ -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';
@@ -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,

View File

@@ -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.

View File

@@ -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.

View File

@@ -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);

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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);

View File

@@ -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);

View File

@@ -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]);

View File

@@ -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.

View File

@@ -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.