{"ScriptPreparationCode":"function isInvoiceValid(quotation) {\r\n const {\r\n invoice\r\n } = quotation;\r\n\r\n return !!invoice \u0026\u0026 !!invoice.fileDownloadUrl;\r\n}\r\n\r\nfunction v2(quotation) {\r\n const fileDownloadUrl = _.get(quotation, \u0027invoice.fileDownloadUrl\u0027);\r\n return !!fileDownloadUrl;\r\n}","TestCases":[{"Name":"vanilla","Code":"const quotation ={\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575371\u0022},\u0022status\u0022:\u0022CREATED\u0022,\u0022withoutPersonalizedText\u0022:false,\u0022customer\u0022:{\u0022blockValidity\u0022:{\u0022valid\u0022:false,\u0022errorMessages\u0022:[\u0022Veuillez s\u00E9lectionner un client pour ce devis\u0022],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575378\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246469\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d57536b\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022address\u0022:{\u0022isBuildingOld\u0022:true,\u0022householdIncomeBonification\u0022:{\u0022enabled\u0022:true,\u0022valid\u0022:false,\u0022housings\u0022:[],\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022qpvBonification\u0022:{\u0022enabled\u0022:true,\u0022valid\u0022:false,\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022socialLandlordBonification\u0022:{\u0022enabled\u0022:true,\u0022valid\u0022:false,\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022blockValidity\u0022:{\u0022valid\u0022:false,\u0022errorMessages\u0022:[\u0022Veuillez s\u00E9lectionner une adresse de travaux pour ce devis\u0022],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575379\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d57536d\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022contract\u0022:{\u0022blockValidity\u0022:{\u0022valid\u0022:false,\u0022errorMessages\u0022:[\u0022Veuillez s\u00E9lectionner un contrat pour ce devis\u0022],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d57537a\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d57536f\u0022},\u0022prices\u0022:[],\u0022contractAmendments\u0022:[],\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022requestedAmountToPayByBeneficiary\u0022:{\u0022$numberInt\u0022:\u00220\u0022},\u0022totalPriceToPay\u0022:{\u0022$numberInt\u0022:\u00220\u0022},\u0022energySavingCertificatePremium\u0022:{\u0022$numberInt\u0022:\u00220\u0022},\u0022blockValidity\u0022:{\u0022valid\u0022:false,\u0022errorMessages\u0022:[\u0022Veuillez s\u00E9lectionner un client pour ce devis\u0022],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575376\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022deleted\u0022:true,\u0022organization\u0022:{\u0022blockValidity\u0022:{\u0022valid\u0022:true,\u0022errorMessages\u0022:[],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575377\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575373\u0022},\u0022name\u0022:\u0022ALLIANCE BAT\u0022,\u0022siren\u0022:{\u0022$numberInt\u0022:\u0022481199438\u0022},\u0022siret\u0022:{\u0022$numberDouble\u0022:\u002248119943800021\u0022},\u0022type\u0022:\u0022Soci\u00E9t\u00E9 \u00E0 responsabilit\u00E9 limit\u00E9e\u0022,\u0022naf\u0022:\u00224399C\u0022,\u0022ape\u0022:\u0022Travaux de ma\u00E7onnerie g\u00E9n\u00E9rale et gros \u0153uvre de b\u00E2timent\u0022,\u0022vat\u0022:\u0022FR94481199438\u0022,\u0022capital\u0022:{\u0022$numberInt\u0022:\u00224000\u0022},\u0022streetNumber\u0022:\u002222\u0022,\u0022streetName\u0022:\u0022Rue Condorcet\u0022,\u0022city\u0022:\u0022Paris\u0022,\u0022postalCode\u0022:\u002275009\u0022,\u0022country\u0022:\u0022France\u0022,\u0022email\u0022:\u0022metux@renolib.fr\u0022,\u0022phone\u0022:\u00220760765474\u0022,\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022billing\u0022:{\u0022blockValidity\u0022:{\u0022valid\u0022:true,\u0022errorMessages\u0022:[],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575374\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce63fc4c2c6e002f4a315f\u0022},\u0022validityDurationOfQuotations\u0022:{\u0022$numberInt\u0022:\u002230\u0022},\u0022orderBy\u0022:\u0022METUX\u0022,\u0022iban\u0022:\u00221234524R5935723724274\u0022,\u0022bic\u0022:\u002248723-472-81-4872-872\u0022,\u0022advancePayment\u0022:{\u0022$numberInt\u0022:\u002230\u0022},\u0022paymentDelay\u0022:{\u0022$numberInt\u0022:\u002210\u0022},\u0022latePenalties\u0022:{\u0022$numberInt\u0022:\u002210\u0022},\u0022recoveryFees\u0022:{\u0022$numberInt\u0022:\u002213\u0022},\u0022phone\u0022:\u00220760765474\u0022,\u0022email\u0022:\u0022metux@renolib.fr\u0022,\u0022termsOfSalesFileUrl\u0022:\u0022\u0022,\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607361532260\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022quotationExpirationDate\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221609955262387\u0022}},\u0022quotationNumber\u0022:\u0022R-DEV-00001\u0022,\u0022idOrganization\u0022:{\u0022$oid\u0022:\u00225fce56e84c2c6e002f4a3140\u0022},\u0022uuid\u0022:\u00224e4dc380-38b4-11eb-b861-27c6dd435b40\u0022,\u0022quotationIssueDate\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262392\u0022}},\u0022invoice\u0022: {\u0022fileDownloadUrl\u0022:\u0022somethinghttpy\u0022},\u0022operations\u0022:[],\u0022pricesPerVatRate\u0022:[],\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}},\u0022__v\u0022:{\u0022$numberInt\u0022:\u00220\u0022},\u0022deletedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246468\u0022}},\u0022deletedBy\u0022:{\u0022$oid\u0022:\u00225fae64204db0e0002dda1165\u0022}}\r\nisInvoiceValid(quotation);","IsDeferred":false},{"Name":"lodash","Code":"const quotation ={\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575371\u0022},\u0022status\u0022:\u0022CREATED\u0022,\u0022withoutPersonalizedText\u0022:false,\u0022customer\u0022:{\u0022blockValidity\u0022:{\u0022valid\u0022:false,\u0022errorMessages\u0022:[\u0022Veuillez s\u00E9lectionner un client pour ce devis\u0022],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575378\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246469\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d57536b\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022address\u0022:{\u0022isBuildingOld\u0022:true,\u0022householdIncomeBonification\u0022:{\u0022enabled\u0022:true,\u0022valid\u0022:false,\u0022housings\u0022:[],\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022qpvBonification\u0022:{\u0022enabled\u0022:true,\u0022valid\u0022:false,\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022socialLandlordBonification\u0022:{\u0022enabled\u0022:true,\u0022valid\u0022:false,\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022blockValidity\u0022:{\u0022valid\u0022:false,\u0022errorMessages\u0022:[\u0022Veuillez s\u00E9lectionner une adresse de travaux pour ce devis\u0022],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575379\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d57536d\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262399\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022contract\u0022:{\u0022blockValidity\u0022:{\u0022valid\u0022:false,\u0022errorMessages\u0022:[\u0022Veuillez s\u00E9lectionner un contrat pour ce devis\u0022],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d57537a\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d57536f\u0022},\u0022prices\u0022:[],\u0022contractAmendments\u0022:[],\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022requestedAmountToPayByBeneficiary\u0022:{\u0022$numberInt\u0022:\u00220\u0022},\u0022totalPriceToPay\u0022:{\u0022$numberInt\u0022:\u00220\u0022},\u0022energySavingCertificatePremium\u0022:{\u0022$numberInt\u0022:\u00220\u0022},\u0022blockValidity\u0022:{\u0022valid\u0022:false,\u0022errorMessages\u0022:[\u0022Veuillez s\u00E9lectionner un client pour ce devis\u0022],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575376\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022deleted\u0022:true,\u0022organization\u0022:{\u0022blockValidity\u0022:{\u0022valid\u0022:true,\u0022errorMessages\u0022:[],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575377\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575373\u0022},\u0022name\u0022:\u0022ALLIANCE BAT\u0022,\u0022siren\u0022:{\u0022$numberInt\u0022:\u0022481199438\u0022},\u0022siret\u0022:{\u0022$numberDouble\u0022:\u002248119943800021\u0022},\u0022type\u0022:\u0022Soci\u00E9t\u00E9 \u00E0 responsabilit\u00E9 limit\u00E9e\u0022,\u0022naf\u0022:\u00224399C\u0022,\u0022ape\u0022:\u0022Travaux de ma\u00E7onnerie g\u00E9n\u00E9rale et gros \u0153uvre de b\u00E2timent\u0022,\u0022vat\u0022:\u0022FR94481199438\u0022,\u0022capital\u0022:{\u0022$numberInt\u0022:\u00224000\u0022},\u0022streetNumber\u0022:\u002222\u0022,\u0022streetName\u0022:\u0022Rue Condorcet\u0022,\u0022city\u0022:\u0022Paris\u0022,\u0022postalCode\u0022:\u002275009\u0022,\u0022country\u0022:\u0022France\u0022,\u0022email\u0022:\u0022metux@renolib.fr\u0022,\u0022phone\u0022:\u00220760765474\u0022,\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022billing\u0022:{\u0022blockValidity\u0022:{\u0022valid\u0022:true,\u0022errorMessages\u0022:[],\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce6abe1f3ff4002d575374\u0022},\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022_id\u0022:{\u0022$oid\u0022:\u00225fce63fc4c2c6e002f4a315f\u0022},\u0022validityDurationOfQuotations\u0022:{\u0022$numberInt\u0022:\u002230\u0022},\u0022orderBy\u0022:\u0022METUX\u0022,\u0022iban\u0022:\u00221234524R5935723724274\u0022,\u0022bic\u0022:\u002248723-472-81-4872-872\u0022,\u0022advancePayment\u0022:{\u0022$numberInt\u0022:\u002230\u0022},\u0022paymentDelay\u0022:{\u0022$numberInt\u0022:\u002210\u0022},\u0022latePenalties\u0022:{\u0022$numberInt\u0022:\u002210\u0022},\u0022recoveryFees\u0022:{\u0022$numberInt\u0022:\u002213\u0022},\u0022phone\u0022:\u00220760765474\u0022,\u0022email\u0022:\u0022metux@renolib.fr\u0022,\u0022termsOfSalesFileUrl\u0022:\u0022\u0022,\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607361532260\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}}},\u0022quotationExpirationDate\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221609955262387\u0022}},\u0022quotationNumber\u0022:\u0022R-DEV-00001\u0022,\u0022idOrganization\u0022:{\u0022$oid\u0022:\u00225fce56e84c2c6e002f4a3140\u0022},\u0022uuid\u0022:\u00224e4dc380-38b4-11eb-b861-27c6dd435b40\u0022,\u0022quotationIssueDate\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262392\u0022}},\u0022invoice\u0022: {\u0022fileDownloadUrl\u0022:\u0022somethinghttpy\u0022},\u0022operations\u0022:[],\u0022pricesPerVatRate\u0022:[],\u0022createdAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607363262400\u0022}},\u0022updatedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246470\u0022}},\u0022__v\u0022:{\u0022$numberInt\u0022:\u00220\u0022},\u0022deletedAt\u0022:{\u0022$date\u0022:{\u0022$numberLong\u0022:\u00221607934246468\u0022}},\u0022deletedBy\u0022:{\u0022$oid\u0022:\u00225fae64204db0e0002dda1165\u0022}}\r\nv2(quotation)","IsDeferred":false}]}