-
Notifications
You must be signed in to change notification settings - Fork 19
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
[TRA 14646] - Ajout de courtier/négociant sur BSVHU #3645
base: dev
Are you sure you want to change the base?
Changes from all commits
0beceda
4156258
82f010e
ddf542d
bc63fdb
502b345
68d52a3
df5f3d2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
import { getTransporterCompanyOrgId } from "@td/constants"; | ||
import { getSealedFields } from "./rules"; | ||
import { ParsedZodBsda } from "./schema"; | ||
import { BsdaValidationContext, ZodBsdaTransformer } from "./types"; | ||
import { CompanyRole } from "../../common/validation/zod/schema"; | ||
import { buildRecipify, RecipifyInputAccessor } from "../../companies/recipify"; | ||
|
||
const recipifyBsdaAccessors = ( | ||
bsd: ParsedZodBsda, | ||
// Tranformations should not be run on sealed fields | ||
sealedFields: string[] | ||
): RecipifyInputAccessor<ParsedZodBsda>[] => [ | ||
...(bsd.transporters ?? []).map( | ||
(_, idx) => | ||
({ | ||
role: CompanyRole.Transporter, | ||
skip: !!bsd.transporters![idx].transporterTransportSignatureDate, | ||
orgIdGetter: () => { | ||
const orgId = getTransporterCompanyOrgId({ | ||
transporterCompanySiret: | ||
bsd.transporters![idx].transporterCompanySiret ?? null, | ||
transporterCompanyVatNumber: | ||
bsd.transporters![idx].transporterCompanyVatNumber ?? null | ||
}); | ||
return orgId ?? null; | ||
Comment on lines
+18
to
+25
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. petite différence avec les accesseurs sirenify, on a une fonction pour récup l'orgId au lieu de juste un champ "siret" pour gérer les récupérations d'orgId qui sont soit vat soit siret comme ici |
||
}, | ||
setter: async (bsda: ParsedZodBsda, receipt) => { | ||
const transporter = bsda.transporters![idx]; | ||
if (transporter.transporterRecepisseIsExempted) { | ||
transporter.transporterRecepisseNumber = null; | ||
transporter.transporterRecepisseValidityLimit = null; | ||
transporter.transporterRecepisseDepartment = null; | ||
} else { | ||
transporter.transporterRecepisseNumber = | ||
receipt?.receiptNumber ?? null; | ||
transporter.transporterRecepisseValidityLimit = | ||
receipt?.validityLimit ?? null; | ||
transporter.transporterRecepisseDepartment = | ||
receipt?.department ?? null; | ||
} | ||
} | ||
} as RecipifyInputAccessor<ParsedZodBsda>) | ||
), | ||
{ | ||
role: CompanyRole.Broker, | ||
skip: sealedFields.includes("brokerRecepisseNumber"), | ||
orgIdGetter: () => { | ||
return bsd.brokerCompanySiret ?? null; | ||
}, | ||
setter: async (bsda: ParsedZodBsda, receipt) => { | ||
if (!bsda.brokerRecepisseNumber && receipt?.receiptNumber) { | ||
bsda.brokerRecepisseNumber = receipt.receiptNumber; | ||
} | ||
if (!bsda.brokerRecepisseValidityLimit && receipt?.validityLimit) { | ||
bsda.brokerRecepisseValidityLimit = receipt.validityLimit; | ||
} | ||
if (!bsda.brokerRecepisseDepartment && receipt?.department) { | ||
bsda.brokerRecepisseDepartment = receipt.department; | ||
} | ||
} | ||
} | ||
]; | ||
|
||
export const recipifyBsda: ( | ||
context: BsdaValidationContext | ||
) => ZodBsdaTransformer = context => { | ||
return async bsda => { | ||
const sealedFields = await getSealedFields(bsda, context); | ||
const accessors = recipifyBsdaAccessors(bsda, sealedFields); | ||
return buildRecipify(accessors, bsda); | ||
}; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -725,8 +725,7 @@ export const bsdaEditionRules: BsdaEditionRules = { | |
sealed: { from: "OPERATION" } | ||
}, | ||
brokerRecepisseValidityLimit: { | ||
readableFieldName: | ||
"la date de validité de la certification de l'entreprise de travaux", | ||
readableFieldName: "la date de validité du récépissé du courtier", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. wording qui n'était pas le bon, remarqué en regardant ce qui était fait côté BSDA |
||
sealed: { from: "OPERATION" } | ||
}, | ||
wasteCode: { | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,13 +35,13 @@ import { | |
updateTransporterRecepisse | ||
} from "./transformers"; | ||
import { sirenifyBsda, sirenifyBsdaTransporter } from "./sirenify"; | ||
import { updateTransportersRecepisse } from "../../common/validation/zod/transformers"; | ||
import { | ||
CompanyRole, | ||
foreignVatNumberSchema, | ||
rawTransporterSchema, | ||
siretSchema | ||
} from "../../common/validation/zod/schema"; | ||
import { recipifyBsda } from "./recipify"; | ||
|
||
const ZodBsdaPackagingEnum = z.enum([ | ||
"BIG_BAG", | ||
|
@@ -292,7 +292,7 @@ export const contextualSchemaAsync = (context: BsdaValidationContext) => { | |
// `enableCompletionTransformers=false`; | ||
transformedSyncSchema | ||
.transform(sirenifyBsda(context)) | ||
.transform(updateTransportersRecepisse) | ||
.transform(recipifyBsda(context)) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. utilisation du nouveau recipify |
||
.transform(fillWasteConsistenceWhenForwarding) | ||
: transformedSyncSchema; | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -92,6 +92,9 @@ describe("Query.bsds.vhus base workflow", () => { | |
destination = await userWithCompanyFactory(UserRole.ADMIN, { | ||
companyTypes: { | ||
set: ["WASTE_VEHICLES"] | ||
}, | ||
wasteVehiclesTypes: { | ||
set: ["BROYEUR", "DEMOLISSEUR"] | ||
Comment on lines
+95
to
+97
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. En raison de l'ajout de la validation du sous profil qui n'était pas faite alors que ça devrait être le cas, j'ai dû ajouter la définition de sous profil dans plein de tests |
||
} | ||
}); | ||
}); | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
import { getTransporterCompanyOrgId } from "@td/constants"; | ||
import { ParsedZodBsff } from "./schema"; | ||
import { BsffValidationContext, ZodBsffTransformer } from "./types"; | ||
import { CompanyRole } from "../../../common/validation/zod/schema"; | ||
import { | ||
buildRecipify, | ||
RecipifyInputAccessor | ||
} from "../../../companies/recipify"; | ||
|
||
const recipifyBsffAccessors = ( | ||
bsd: ParsedZodBsff | ||
): RecipifyInputAccessor<ParsedZodBsff>[] => [ | ||
...(bsd.transporters ?? []).map( | ||
(_, idx) => | ||
({ | ||
role: CompanyRole.Transporter, | ||
skip: !!bsd.transporters![idx].transporterTransportSignatureDate, | ||
orgIdGetter: () => { | ||
const orgId = getTransporterCompanyOrgId({ | ||
transporterCompanySiret: | ||
bsd.transporters![idx].transporterCompanySiret ?? null, | ||
transporterCompanyVatNumber: | ||
bsd.transporters![idx].transporterCompanyVatNumber ?? null | ||
}); | ||
return orgId ?? null; | ||
}, | ||
setter: async (bsff: ParsedZodBsff, receipt) => { | ||
const transporter = bsff.transporters![idx]; | ||
if (transporter.transporterRecepisseIsExempted) { | ||
transporter.transporterRecepisseNumber = null; | ||
transporter.transporterRecepisseValidityLimit = null; | ||
transporter.transporterRecepisseDepartment = null; | ||
} else { | ||
transporter.transporterRecepisseNumber = | ||
receipt?.receiptNumber ?? null; | ||
transporter.transporterRecepisseValidityLimit = | ||
receipt?.validityLimit ?? null; | ||
transporter.transporterRecepisseDepartment = | ||
receipt?.department ?? null; | ||
} | ||
} | ||
} as RecipifyInputAccessor<ParsedZodBsff>) | ||
) | ||
]; | ||
|
||
export const recipifyBsff: ( | ||
context: BsffValidationContext | ||
) => ZodBsffTransformer = () => { | ||
return async bsff => { | ||
// const sealedFields = await getSealedFields(bsda, context); | ||
const accessors = recipifyBsffAccessors(bsff); | ||
return buildRecipify(accessors, bsff); | ||
}; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,7 +22,14 @@ export const bsvhuFactory = async ({ | |
companyTypes: ["TRANSPORTER"] | ||
}); | ||
const destinationCompany = await companyFactory({ | ||
companyTypes: ["WASTE_VEHICLES"] | ||
companyTypes: ["WASTE_VEHICLES"], | ||
wasteVehiclesTypes: ["BROYEUR", "DEMOLISSEUR"] | ||
}); | ||
const brokerCompany = await companyFactory({ | ||
companyTypes: ["BROKER"] | ||
}); | ||
const traderCompany = await companyFactory({ | ||
companyTypes: ["TRADER"] | ||
}); | ||
const ecoOrganisme = await ecoOrganismeFactory({ | ||
handle: { handleBsvhu: true }, | ||
|
@@ -34,6 +41,8 @@ export const bsvhuFactory = async ({ | |
transporterCompanySiret: transporterCompany.siret, | ||
destinationCompanySiret: destinationCompany.siret, | ||
ecoOrganismeSiret: ecoOrganisme.siret, | ||
brokerCompanySiret: brokerCompany.siret, | ||
traderCompanySiret: traderCompany.siret, | ||
...opt | ||
}, | ||
include: { | ||
|
@@ -97,7 +106,26 @@ const getVhuFormdata = (): Prisma.BsvhuCreateInput => ({ | |
destinationOperationCode: null, | ||
|
||
ecoOrganismeSiret: siretify(4), | ||
ecoOrganismeName: "Eco-Organisme" | ||
ecoOrganismeName: "Eco-Organisme", | ||
|
||
brokerCompanyName: "Courtier efficace", | ||
brokerCompanySiret: siretify(5), | ||
brokerCompanyAddress: "15 Rue des Lilas, 33000 Lille", | ||
brokerCompanyContact: "Anton Spencer", | ||
brokerCompanyPhone: "06 67 78 89 91", | ||
brokerCompanyMail: "[email protected]", | ||
brokerRecepisseNumber: "receipt number", | ||
brokerRecepisseDepartment: "33", | ||
brokerRecepisseValidityLimit: "2026-11-27T00:00:00.000Z", | ||
traderCompanyName: "Le Négoce QVB", | ||
traderCompanySiret: siretify(6), | ||
traderCompanyAddress: "32 Avenue des Azalées, 33700 Mérignac", | ||
traderCompanyContact: "Benjamin Turner", | ||
traderCompanyPhone: "06 68 35 64 34", | ||
traderCompanyMail: "[email protected]", | ||
traderRecepisseNumber: "receipt of the firm", | ||
traderRecepisseDepartment: "33", | ||
traderRecepisseValidityLimit: "2026-11-28T00:00:00.000Z" | ||
}); | ||
|
||
export const toIntermediaryCompany = (company: Company, contact = "toto") => ({ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ajout de valeur manquante, je m'en suis rendu compte en regardnt ce qui était fait côté BSDA