@bisondesk/core-sdk 1.0.298 → 1.0.299

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FinanceDocumentActions = void 0;
4
+ var FinanceDocumentActions;
5
+ (function (FinanceDocumentActions) {
6
+ FinanceDocumentActions["CREATE_FINANCE_DOCUMENT"] = "create_finance_document";
7
+ FinanceDocumentActions["EDIT_FINANCE_DOCUMENT"] = "edit_existing_invoice";
8
+ FinanceDocumentActions["DELETE_FINANCE_DOCUMENT"] = "delete_existing_invoice";
9
+ })(FinanceDocumentActions = exports.FinanceDocumentActions || (exports.FinanceDocumentActions = {}));
3
10
  //# sourceMappingURL=documents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"documents.js","sourceRoot":"/","sources":["types/documents.ts"],"names":[],"mappings":"","sourcesContent":["import { AttachmentValue, SearchPermissions } from '@bisondesk/commons-sdk/types';\nimport { Organization } from './crm';\nimport { PublicSearchDefinition } from './definitions';\n\nexport type FinanceLine = {\n associations: {\n others: { vehicleId: string; label: string }[];\n sales: { id: string; vehicleId: string; label: string }[];\n purchases: { id: string; vehicleId: string; label: string }[];\n };\n description: string;\n id: string;\n lineCode: string;\n quantity: string;\n unitPriceExclusive: string;\n vatCode: string;\n vatCoefficient: string;\n};\n\nexport type FinanceDocument = {\n id: string;\n branchId: string;\n\n type: 'Sale Finance' | 'Purchase Finance';\n subtype: 'Invoice' | 'Credit Note' | 'Proforma' | 'Purchase Order';\n reference: string;\n\n attachment: AttachmentValue;\n lines: FinanceLine[];\n notes?: string;\n\n createdAt: string;\n createdBy: string;\n issueDate: string;\n\n organizationSummary?: {\n id: string;\n code: string;\n name: string;\n country: string;\n vatNumber?: string;\n\n addressLine1?: string;\n addressLine2?: string;\n addressLine3?: string;\n postcode?: string;\n city?: string;\n\n email?: string;\n phone?: string;\n fax?: string;\n };\n};\n\nexport type FinanceDocumentEvent = {\n id: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n type: 'Sale Finance' | 'Purchase Finance';\n subtype: string; // Invoice, Credit Note, etc.\n};\n\nexport type FinanceBookingEvent = {\n id: string;\n branchId: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n type: 'Sale Finance' | 'Purchase Finance';\n};\n\nexport type FinanceBooking = {\n branchId: string; // same tenantId can have different companies\n bookingNumber: string; // same booking number can and will exist across different \"branches\"\n documentId: string;\n\n booked: true;\n journal?: string;\n amount?: string;\n reportingPeriod?: number;\n reportingYear?: number;\n paid: boolean;\n\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n};\n\nexport type SearchDocumentVehicleRef = {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n};\n\nexport type SearchFinanceDocument = {\n org?: Organization;\n doc: FinanceDocument;\n booking?: FinanceBooking;\n vehicle?: SearchDocumentVehicleRef[];\n};\n\nexport type InputSearchFinanceDocument = SearchFinanceDocument & {\n permissions: SearchPermissions;\n};\n\nexport type DocsSearchDefinitions = {\n searchFinanceDoc: PublicSearchDefinition;\n};\n"]}
1
+ {"version":3,"file":"documents.js","sourceRoot":"/","sources":["types/documents.ts"],"names":[],"mappings":";;;AAIA,IAAY,sBAIX;AAJD,WAAY,sBAAsB;IAChC,6EAAmD,CAAA;IACnD,yEAA+C,CAAA;IAC/C,6EAAmD,CAAA;AACrD,CAAC,EAJW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAIjC","sourcesContent":["import { AttachmentValue, SearchPermissions } from '@bisondesk/commons-sdk/types';\nimport { Organization } from './crm';\nimport { PublicSearchDefinition } from './definitions';\n\nexport enum FinanceDocumentActions {\n CREATE_FINANCE_DOCUMENT = 'create_finance_document',\n EDIT_FINANCE_DOCUMENT = 'edit_existing_invoice',\n DELETE_FINANCE_DOCUMENT = 'delete_existing_invoice',\n}\n\nexport type FinanceLine = {\n associations: {\n others: { vehicleId: string; label: string }[];\n sales: { id: string; vehicleId: string; label: string }[];\n purchases: { id: string; vehicleId: string; label: string }[];\n };\n description: string;\n id: string;\n lineCode: string;\n quantity: string;\n unitPriceExclusive: string;\n vatCode: string;\n vatCoefficient: string;\n};\n\nexport type FinanceDocument = {\n id: string;\n branchId: string;\n\n type: 'Sale Finance' | 'Purchase Finance';\n subtype: 'Invoice' | 'Credit Note' | 'Proforma' | 'Purchase Order';\n reference: string;\n\n attachment: AttachmentValue;\n lines: FinanceLine[];\n notes?: string;\n\n createdAt: string;\n createdBy: string;\n issueDate: string;\n\n organizationSummary?: {\n id: string;\n code: string;\n name: string;\n country: string;\n vatNumber?: string;\n\n addressLine1?: string;\n addressLine2?: string;\n addressLine3?: string;\n postcode?: string;\n city?: string;\n\n email?: string;\n phone?: string;\n fax?: string;\n };\n};\n\nexport type FinanceDocumentEvent = {\n id: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n type: 'Sale Finance' | 'Purchase Finance';\n subtype: string; // Invoice, Credit Note, etc.\n};\n\nexport type FinanceBookingEvent = {\n id: string;\n branchId: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n type: 'Sale Finance' | 'Purchase Finance';\n};\n\nexport type FinanceBooking = {\n branchId: string; // same tenantId can have different companies\n bookingNumber: string; // same booking number can and will exist across different \"branches\"\n documentId: string;\n\n booked: true;\n journal?: string;\n amount?: string;\n reportingPeriod?: number;\n reportingYear?: number;\n paid: boolean;\n\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n};\n\nexport type SearchDocumentVehicleRef = {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n};\n\nexport type SearchFinanceDocument = {\n org?: Organization;\n doc: FinanceDocument;\n booking?: FinanceBooking;\n vehicle?: SearchDocumentVehicleRef[];\n};\n\nexport type InputSearchFinanceDocument = SearchFinanceDocument & {\n permissions: SearchPermissions;\n};\n\nexport type DocsSearchDefinitions = {\n searchFinanceDoc: PublicSearchDefinition;\n};\n"]}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LeasingRemindersSortableColumns = exports.LeasingContractStatus = exports.LeasingContractSource = void 0;
3
+ exports.LeasingRemindersSortableColumns = exports.LeasingContractStatus = exports.LeasingContractSource = exports.LeasingContractActions = void 0;
4
+ var LeasingContractActions;
5
+ (function (LeasingContractActions) {
6
+ LeasingContractActions["CREATE_FINANCE_DOCUMENT"] = "create_finance_document";
7
+ })(LeasingContractActions = exports.LeasingContractActions || (exports.LeasingContractActions = {}));
4
8
  var LeasingContractSource;
5
9
  (function (LeasingContractSource) {
6
10
  LeasingContractSource["HYPERPORTAL"] = "hyperportal";
@@ -1 +1 @@
1
- {"version":3,"file":"leasing.js","sourceRoot":"/","sources":["types/leasing.ts"],"names":[],"mappings":";;;AAyDA,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,oDAA2B,CAAA;IAC3B,gDAAuB,CAAA;AACzB,CAAC,EAHW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAGhC;AAED,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,wCAAe,CAAA;IACf,gDAAuB,CAAA;IACvB,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,wCAAe,CAAA;AACjB,CAAC,EANW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAMhC;AAkPD,IAAY,+BAKX;AALD,WAAY,+BAA+B;IACzC,kEAA+B,CAAA;IAC/B,yEAAsC,CAAA;IACtC,qEAAkC,CAAA;IAClC,oDAAiB,CAAA;AACnB,CAAC,EALW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAK1C","sourcesContent":["import { EmailMessage } from '@bisondesk/commons-sdk/messages';\nimport { AttachmentValue, Document, LinkValue, PaginatedList } from '@bisondesk/commons-sdk/types';\nimport { SortFilter } from './search';\nimport { ReferenceData } from './utils';\n\nexport type LeasingContractEvent = {\n id: string;\n action: 'create' | 'update' | 'delete';\n actionAt: string;\n userId: string;\n tenantId: string;\n contract: LeasingContract;\n};\n\nexport type LeasingContractImportEvent = {\n tenantId: string;\n};\n\nexport type LeasingConditionEvent = {\n id: string;\n action: 'create';\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type OverdueDossier = {\n id: string;\n organizationId: string;\n organizationName: string;\n status: 'ONGOING' | 'ERROR' | 'SUCCESS' | 'EXPIRED';\n emails: EmailMessage[];\n createdAt: string;\n modifiedAt: string;\n completedAt?: string;\n nextActionAt: string;\n riskLevel: number;\n};\n\nexport type LeasingContractClient = {\n organizationId: string;\n contactIds: string[];\n email?: string;\n since: string;\n takeoverId?: string;\n country: string;\n beEntityType?: 'Legal Person' | 'Natural Person';\n beForeignEntity?: boolean;\n\n /**\n * Used to overwrite the startDate in the context of a Becris declaration. This might be necessary\n * when due to some data-quality issue we do not report the contract at the right period and it is no\n * longer possible to resend the declaration for the corresponding month.\n */\n becrisStartDate?: string;\n};\n\nexport enum LeasingContractSource {\n HYPERPORTAL = 'hyperportal',\n BISONDESK = 'bisondesk',\n}\n\nexport enum LeasingContractStatus {\n DRAFT = 'draft',\n DISCARDED = 'discarded',\n PAUSED = 'paused',\n ACTIVE = 'active',\n ENDED = 'ended',\n}\n\nexport type LeasingContractHyperportal = {\n source: LeasingContractSource.HYPERPORTAL;\n /** oldest first **/\n conditions: ConditionsRef[];\n opportunities?: undefined;\n};\n\nexport type LeasingContractBisondesk = {\n source: LeasingContractSource.BISONDESK;\n conditions?: undefined;\n /** oldest first **/\n opportunities: OpportunityRef[];\n externalId?: string;\n};\n\ntype BaseLeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> = {\n id: string;\n createdAt: string;\n updatedAt: string;\n contractNumber?: string;\n startDate: string;\n deliveryDate?: string;\n endDate?: string;\n slbPartner?: string;\n links?: LinkValue[];\n accountManager?: string;\n clients: LeasingContractClient[];\n hasSlbPartnerAmortisationTable?: boolean;\n slbContractNumber?: string;\n vehicle: {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n };\n status: LeasingContractStatus;\n documents: Document[];\n} & T;\n\nexport type LeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> =\n BaseLeasingContract<T> & {\n readonly expectedEndDate: string;\n };\n\nexport type NewLeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> =\n BaseLeasingContract<T> & {\n readonly expectedEndDate?: undefined;\n };\n\nexport type NextLeasingRentRowRequest = {\n vehicleId: string;\n organizationId: string;\n issueDate: string;\n};\n\nexport type NextLeasingRentRowResponse = {\n capital: string;\n contract: string;\n insurance?: string;\n interest: string;\n other?: string; // insurance + taxes + others\n period: number;\n taxes?: string;\n total: string;\n};\n\ntype BaseRef = {\n id: string;\n depositAmount: string;\n durationInMonths: number;\n taxesAmount?: string;\n insuranceAmount?: string;\n saleAmount: string; // includes the extras\n interestRate: string; //TODO: In LC from BD value is percentage, in LC from HP value is decimal\n residualAmount: string;\n leasingMonthlyAmount: string; // excluding VAT\n otherMonthlyAmounts: string; // insurance + taxes + others (excluding VAT)\n totalMonthlyAmount: string; // excluding VAT\n};\n\nexport type ConditionsRef = BaseRef & {\n validSince: string;\n};\n\nexport type OpportunityRef = BaseRef & {\n createdAt: string;\n quoteId: string;\n //Since VAT is client specific and contracts can be transferred between clients, we always handle values without VAT\n};\n\nexport type ListOverdueRemindersResponse = PaginatedList<OverdueDossier, ReferenceData>;\nexport type ListOverdueRemindersRequest = {\n offset: number;\n limit: number;\n sortBy: SortFilter;\n};\n\nexport type NewLeasingConditions = {\n parameters: {\n yearlyRoadTax: string;\n civilLiability: string;\n oneTimeRoadTax: string;\n specialInsurance: string;\n allRisksPercentage: string;\n allRisksTaxPercentage: string;\n };\n\n inputs: {\n deposit: string;\n salesPrice: string;\n bankDeposit: string;\n purchasePrice: string;\n residualValue: string;\n insuranceAmount: string;\n durationInMonths: number;\n includesAllRisks: boolean;\n marginPercentage: string;\n bankResidualValue: string;\n bankDurationInMonths: number;\n startupFeePercentage: string;\n includesYearlyRoadTax: boolean;\n includesCivilLiability: boolean;\n includesOneTimeRoadTax: boolean;\n interestRatePercentage: string;\n includesSpecialInsurance: boolean;\n monthlyAdministrationFee: string;\n bankInterestRatePercentage: string;\n };\n\n outputs: {\n ROI: string;\n ROITarget: string;\n ROIPerYear: string;\n cashDeficit: string;\n totalProfit: string;\n ROIDifference: string;\n leasingAmount: string;\n leasingProfit: string;\n vehicleProfit: string;\n oneTimeTaxCost: string;\n financingAmount: string;\n bankContractValue: string;\n bankLeasingAmount: string;\n totalMonthlyPayment: string;\n leasingContractValue: string;\n monthlyTaxRetailPrice: string;\n allRisksInsuranceAmount: string;\n };\n\n cashIn: Array<{\n time: string;\n cashIn: string;\n deposit: string;\n startupFee: string;\n taxPayment: string;\n residualValue: string;\n cumulativeCash: string;\n insurancePayment: string;\n monthlyAdministrationFee: string;\n leasingAmountWithoutAdminFee: string;\n }>;\n\n cashOut: Array<{\n time: string;\n cashOut: string;\n deposit: string;\n taxPayment: string;\n leasingAmount: string;\n residualValue: string;\n cumulativeCash: string;\n insurancePayment: string;\n }>;\n};\n\nexport type LeasingConditions = NewLeasingConditions & {\n id: string;\n createdAt: string;\n createdBy: string;\n amortization: AmortizationTable;\n};\n\nexport type AmortizationRow = {\n period: number;\n /* An estimate of the date in which the period will happen\n based on the contract start date. Empty for period zero. */\n expectedPeriodDate?: string;\n buyOff: string;\n payment: string;\n capital: string;\n interest: string;\n totalInterest: string;\n balance: string;\n};\n\nexport type AmortizationTable = {\n annualInterestRate?: string;\n monthlyInterestRate?: string;\n rows: AmortizationRow[];\n};\n\nexport type AmortizationDocsEvent = {\n contractId: string;\n changedDocumentIds: string[];\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type AmortizationDocs = {\n contractId: string;\n period: number;\n documents: AmortizationDoc[];\n};\n\nexport type AmortizationDoc = {\n amount: string;\n bookingNumber: string;\n branchId: string;\n documentId: string;\n issueDate: string;\n subtype: 'Invoice' | 'Credit Note';\n clientExternalId: number;\n};\n\nexport type BecrisDeclaration = {\n createdAt: string;\n endDate: string;\n endingInstruments: number;\n existingInstruments: number;\n file: AttachmentValue;\n id: string;\n newInstruments: number;\n startDate: string;\n};\n\nexport type LeasingReportingSettings = {\n active: boolean;\n branchId: string;\n tenantId: string;\n};\n\nexport enum LeasingRemindersSortableColumns {\n NextActionAt = 'next_action_at',\n OrganizationName = 'organization_name',\n RemindersCount = 'reminders_count',\n Status = 'status',\n}\n\nexport type AmortizationTableRequest = {\n leasingAmount: string; // monthly amount\n deposit: string;\n salesPrice: string;\n duration: number; // in months\n residual: string;\n monthlyInterestRate: string; // the annual interest rate divided by 12\n startDate?: string; // should be filled in if you want an amortization table with expected period dates\n};\n\nexport type AmortizationTableTemplateData = {\n opportunity: {\n id: string;\n };\n v: {\n make: string;\n model: string;\n category: string;\n type?: string;\n vin: string;\n year?: string | number;\n stockNumber: string;\n };\n c: {\n clientNumber: number;\n company: string;\n fullName: string;\n vatNumber?: string;\n email?: string;\n phone?: string;\n address?: string;\n };\n leasing: {\n salesPrice: string;\n salesPriceVat: string;\n salesPriceExclVat: string;\n deposit: string;\n depositExclVat: string;\n depositVat: string;\n installment: string;\n installmentVat: string;\n installmentExclVat: string;\n duration: number;\n monthlyInsurance: string;\n monthlyTax: string;\n monthlyTaxesInsurance: string;\n residual: string;\n residualVat: string;\n residualExclVat: string;\n offerNumber: string;\n contractNumber: string;\n vatPercentage: string;\n };\n amortization: {\n period: number;\n periodStartDate: string;\n periodEndDate: string;\n deposit: string;\n startUpFee: string;\n monthlyAmount: string;\n insurance: string;\n expirationDate: string;\n total: string;\n }[];\n};\n"]}
1
+ {"version":3,"file":"leasing.js","sourceRoot":"/","sources":["types/leasing.ts"],"names":[],"mappings":";;;AAKA,IAAY,sBAEX;AAFD,WAAY,sBAAsB;IAChC,6EAAmD,CAAA;AACrD,CAAC,EAFW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAEjC;AAsDD,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,oDAA2B,CAAA;IAC3B,gDAAuB,CAAA;AACzB,CAAC,EAHW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAGhC;AAED,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,wCAAe,CAAA;IACf,gDAAuB,CAAA;IACvB,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,wCAAe,CAAA;AACjB,CAAC,EANW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAMhC;AAkPD,IAAY,+BAKX;AALD,WAAY,+BAA+B;IACzC,kEAA+B,CAAA;IAC/B,yEAAsC,CAAA;IACtC,qEAAkC,CAAA;IAClC,oDAAiB,CAAA;AACnB,CAAC,EALW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAK1C","sourcesContent":["import { EmailMessage } from '@bisondesk/commons-sdk/messages';\nimport { AttachmentValue, Document, LinkValue, PaginatedList } from '@bisondesk/commons-sdk/types';\nimport { SortFilter } from './search';\nimport { ReferenceData } from './utils';\n\nexport enum LeasingContractActions {\n CREATE_FINANCE_DOCUMENT = 'create_finance_document',\n}\n\nexport type LeasingContractEvent = {\n id: string;\n action: 'create' | 'update' | 'delete';\n actionAt: string;\n userId: string;\n tenantId: string;\n contract: LeasingContract;\n};\n\nexport type LeasingContractImportEvent = {\n tenantId: string;\n};\n\nexport type LeasingConditionEvent = {\n id: string;\n action: 'create';\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type OverdueDossier = {\n id: string;\n organizationId: string;\n organizationName: string;\n status: 'ONGOING' | 'ERROR' | 'SUCCESS' | 'EXPIRED';\n emails: EmailMessage[];\n createdAt: string;\n modifiedAt: string;\n completedAt?: string;\n nextActionAt: string;\n riskLevel: number;\n};\n\nexport type LeasingContractClient = {\n organizationId: string;\n contactIds: string[];\n email?: string;\n since: string;\n takeoverId?: string;\n country: string;\n beEntityType?: 'Legal Person' | 'Natural Person';\n beForeignEntity?: boolean;\n\n /**\n * Used to overwrite the startDate in the context of a Becris declaration. This might be necessary\n * when due to some data-quality issue we do not report the contract at the right period and it is no\n * longer possible to resend the declaration for the corresponding month.\n */\n becrisStartDate?: string;\n};\n\nexport enum LeasingContractSource {\n HYPERPORTAL = 'hyperportal',\n BISONDESK = 'bisondesk',\n}\n\nexport enum LeasingContractStatus {\n DRAFT = 'draft',\n DISCARDED = 'discarded',\n PAUSED = 'paused',\n ACTIVE = 'active',\n ENDED = 'ended',\n}\n\nexport type LeasingContractHyperportal = {\n source: LeasingContractSource.HYPERPORTAL;\n /** oldest first **/\n conditions: ConditionsRef[];\n opportunities?: undefined;\n};\n\nexport type LeasingContractBisondesk = {\n source: LeasingContractSource.BISONDESK;\n conditions?: undefined;\n /** oldest first **/\n opportunities: OpportunityRef[];\n externalId?: string;\n};\n\ntype BaseLeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> = {\n id: string;\n createdAt: string;\n updatedAt: string;\n contractNumber?: string;\n startDate: string;\n deliveryDate?: string;\n endDate?: string;\n slbPartner?: string;\n links?: LinkValue[];\n accountManager?: string;\n clients: LeasingContractClient[];\n hasSlbPartnerAmortisationTable?: boolean;\n slbContractNumber?: string;\n vehicle: {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n };\n status: LeasingContractStatus;\n documents: Document[];\n} & T;\n\nexport type LeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> =\n BaseLeasingContract<T> & {\n readonly expectedEndDate: string;\n };\n\nexport type NewLeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> =\n BaseLeasingContract<T> & {\n readonly expectedEndDate?: undefined;\n };\n\nexport type NextLeasingRentRowRequest = {\n vehicleId: string;\n organizationId: string;\n issueDate: string;\n};\n\nexport type NextLeasingRentRowResponse = {\n capital: string;\n contract: string;\n insurance?: string;\n interest: string;\n other?: string; // insurance + taxes + others\n period: number;\n taxes?: string;\n total: string;\n};\n\ntype BaseRef = {\n id: string;\n depositAmount: string;\n durationInMonths: number;\n taxesAmount?: string;\n insuranceAmount?: string;\n saleAmount: string; // includes the extras\n interestRate: string; //TODO: In LC from BD value is percentage, in LC from HP value is decimal\n residualAmount: string;\n leasingMonthlyAmount: string; // excluding VAT\n otherMonthlyAmounts: string; // insurance + taxes + others (excluding VAT)\n totalMonthlyAmount: string; // excluding VAT\n};\n\nexport type ConditionsRef = BaseRef & {\n validSince: string;\n};\n\nexport type OpportunityRef = BaseRef & {\n createdAt: string;\n quoteId: string;\n //Since VAT is client specific and contracts can be transferred between clients, we always handle values without VAT\n};\n\nexport type ListOverdueRemindersResponse = PaginatedList<OverdueDossier, ReferenceData>;\nexport type ListOverdueRemindersRequest = {\n offset: number;\n limit: number;\n sortBy: SortFilter;\n};\n\nexport type NewLeasingConditions = {\n parameters: {\n yearlyRoadTax: string;\n civilLiability: string;\n oneTimeRoadTax: string;\n specialInsurance: string;\n allRisksPercentage: string;\n allRisksTaxPercentage: string;\n };\n\n inputs: {\n deposit: string;\n salesPrice: string;\n bankDeposit: string;\n purchasePrice: string;\n residualValue: string;\n insuranceAmount: string;\n durationInMonths: number;\n includesAllRisks: boolean;\n marginPercentage: string;\n bankResidualValue: string;\n bankDurationInMonths: number;\n startupFeePercentage: string;\n includesYearlyRoadTax: boolean;\n includesCivilLiability: boolean;\n includesOneTimeRoadTax: boolean;\n interestRatePercentage: string;\n includesSpecialInsurance: boolean;\n monthlyAdministrationFee: string;\n bankInterestRatePercentage: string;\n };\n\n outputs: {\n ROI: string;\n ROITarget: string;\n ROIPerYear: string;\n cashDeficit: string;\n totalProfit: string;\n ROIDifference: string;\n leasingAmount: string;\n leasingProfit: string;\n vehicleProfit: string;\n oneTimeTaxCost: string;\n financingAmount: string;\n bankContractValue: string;\n bankLeasingAmount: string;\n totalMonthlyPayment: string;\n leasingContractValue: string;\n monthlyTaxRetailPrice: string;\n allRisksInsuranceAmount: string;\n };\n\n cashIn: Array<{\n time: string;\n cashIn: string;\n deposit: string;\n startupFee: string;\n taxPayment: string;\n residualValue: string;\n cumulativeCash: string;\n insurancePayment: string;\n monthlyAdministrationFee: string;\n leasingAmountWithoutAdminFee: string;\n }>;\n\n cashOut: Array<{\n time: string;\n cashOut: string;\n deposit: string;\n taxPayment: string;\n leasingAmount: string;\n residualValue: string;\n cumulativeCash: string;\n insurancePayment: string;\n }>;\n};\n\nexport type LeasingConditions = NewLeasingConditions & {\n id: string;\n createdAt: string;\n createdBy: string;\n amortization: AmortizationTable;\n};\n\nexport type AmortizationRow = {\n period: number;\n /* An estimate of the date in which the period will happen\n based on the contract start date. Empty for period zero. */\n expectedPeriodDate?: string;\n buyOff: string;\n payment: string;\n capital: string;\n interest: string;\n totalInterest: string;\n balance: string;\n};\n\nexport type AmortizationTable = {\n annualInterestRate?: string;\n monthlyInterestRate?: string;\n rows: AmortizationRow[];\n};\n\nexport type AmortizationDocsEvent = {\n contractId: string;\n changedDocumentIds: string[];\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type AmortizationDocs = {\n contractId: string;\n period: number;\n documents: AmortizationDoc[];\n};\n\nexport type AmortizationDoc = {\n amount: string;\n bookingNumber: string;\n branchId: string;\n documentId: string;\n issueDate: string;\n subtype: 'Invoice' | 'Credit Note';\n clientExternalId: number;\n};\n\nexport type BecrisDeclaration = {\n createdAt: string;\n endDate: string;\n endingInstruments: number;\n existingInstruments: number;\n file: AttachmentValue;\n id: string;\n newInstruments: number;\n startDate: string;\n};\n\nexport type LeasingReportingSettings = {\n active: boolean;\n branchId: string;\n tenantId: string;\n};\n\nexport enum LeasingRemindersSortableColumns {\n NextActionAt = 'next_action_at',\n OrganizationName = 'organization_name',\n RemindersCount = 'reminders_count',\n Status = 'status',\n}\n\nexport type AmortizationTableRequest = {\n leasingAmount: string; // monthly amount\n deposit: string;\n salesPrice: string;\n duration: number; // in months\n residual: string;\n monthlyInterestRate: string; // the annual interest rate divided by 12\n startDate?: string; // should be filled in if you want an amortization table with expected period dates\n};\n\nexport type AmortizationTableTemplateData = {\n opportunity: {\n id: string;\n };\n v: {\n make: string;\n model: string;\n category: string;\n type?: string;\n vin: string;\n year?: string | number;\n stockNumber: string;\n };\n c: {\n clientNumber: number;\n company: string;\n fullName: string;\n vatNumber?: string;\n email?: string;\n phone?: string;\n address?: string;\n };\n leasing: {\n salesPrice: string;\n salesPriceVat: string;\n salesPriceExclVat: string;\n deposit: string;\n depositExclVat: string;\n depositVat: string;\n installment: string;\n installmentVat: string;\n installmentExclVat: string;\n duration: number;\n monthlyInsurance: string;\n monthlyTax: string;\n monthlyTaxesInsurance: string;\n residual: string;\n residualVat: string;\n residualExclVat: string;\n offerNumber: string;\n contractNumber: string;\n vatPercentage: string;\n };\n amortization: {\n period: number;\n periodStartDate: string;\n periodEndDate: string;\n deposit: string;\n startUpFee: string;\n monthlyAmount: string;\n insurance: string;\n expirationDate: string;\n total: string;\n }[];\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"quotes.js","sourceRoot":"/","sources":["types/quotes.ts"],"names":[],"mappings":";;;AAcA,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,+CAA+B,CAAA;IAC/B,iCAAiB,CAAA;AACnB,CAAC,EALW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAKvB;AAED,IAAY,WASX;AATD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;IAC3B,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,mDAAoC,CAAA;IACpC,mDAAoC,CAAA;AACtC,CAAC,EATW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAStB;AAED,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;IACnB,kCAAa,CAAA;AACf,CAAC,EAJW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAI5B;AACD,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,mCAAkB,CAAA;IAClB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;AACf,CAAC,EAJW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAIxB;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,qCAAsB,CAAA;AACxB,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB;AAED,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,wCAAkB,CAAA;IAClB,6CAAuB,CAAA;AACzB,CAAC,EAHW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAG7B","sourcesContent":["import { AttachmentValue, LocationValue } from '@bisondesk/commons-sdk/types';\nimport { OpportunityType } from '../constants';\nimport { DeliveryParams } from './delivery-settings';\nimport {\n CustomLeasingQuoteExtraInput,\n CustomSalesQuoteExtraInput,\n LeasingDeliveryPackageInput,\n LeasingQuoteExtraInput,\n LeasingQuoteParams,\n SalesQuoteExtraInput,\n} from './leasing-settings';\nimport { MatchingRuleValue } from './roi-ratings';\nimport { PricePercentageMode } from './utils';\n\nexport enum QuoteActions {\n ACCEPT = 'accept',\n VALIDATE = 'validate',\n DONWLOAD_PDFS = 'download-pdfs',\n CANCEL = 'cancel',\n}\n\nexport enum QuoteStatus {\n CREATED = 'created',\n VALIDATED = 'validated',\n INVALIDATED = 'invalidated',\n ACCEPTED = 'accepted',\n REJECTED = 'rejected',\n CANCELLED = 'cancelled',\n MANAGER_REJECTED = 'managerRejected',\n MANAGER_ACCEPTED = 'managerAccepted',\n}\n\nexport enum QuoteMetricsScore {\n DANGER = 'danger',\n NEUTRAL = 'neutral',\n GOOD = 'good',\n}\nexport enum DeliveryTypes {\n PICK_UP = 'pickUp',\n ADDRESS = 'address',\n PORT = 'port',\n}\n\nexport enum SpoilerInfo {\n MOUNT = 'mount',\n UNMOUNT = 'unmount',\n NO_ACTION = 'noAction',\n}\n\nexport enum TransportationMode {\n BY_ROAD = 'byRoad',\n ON_LOW_BED = 'onLowBed',\n}\n\ntype BaseQuoteCalculatorInput = {\n branch: string;\n branchCountry: string;\n customerCountry: string;\n vehicleCategory: string;\n bodywork?: string;\n currency: string;\n};\n\n// Sent by the Frontend to bootstrap the calculator\nexport type LeasingCalculatorDefaultInput = BaseQuoteCalculatorInput & {\n salesPrice: string;\n purchasePrice: string;\n deliveryPackage?: LeasingQuoteExtraInput;\n};\n\nexport type LeasingCalculatorInput = BaseQuoteCalculatorInput & {\n localLicensePlate: boolean;\n vanCourier: boolean;\n leasing: {\n salesPrice: string;\n deposit: string;\n depositMode: PricePercentageMode;\n depositPercentage: string;\n residual: string;\n residualMode: PricePercentageMode;\n residualPercentage: string;\n startupFee: string;\n startupFeeMode: PricePercentageMode;\n startupFeePercentage: string;\n interestRate: string;\n purchasePrice: string;\n duration: number;\n };\n bank: {\n interestRate: string;\n deposit: string;\n depositMode: PricePercentageMode;\n depositPercentage: string;\n residual: string;\n residualMode: PricePercentageMode;\n residualPercentage: string;\n duration: number;\n salesPrice: string;\n };\n taxes: {\n yearlyRoadTax: boolean;\n oneTimeRoadTax: boolean;\n margin: string; //Non Editable, copies the value insurance > margin\n };\n insurance: {\n margin: string;\n civilLiabilities: boolean;\n allRisks: boolean;\n specialTechnicalInsurance: boolean;\n roadAssistance: boolean;\n };\n deliveryPackage?: LeasingDeliveryPackageInput;\n extras: LeasingQuoteExtraInput[];\n customRequests: CustomLeasingQuoteExtraInput[];\n};\n\ntype BaseDeliveryType = {\n agreedPrice: string;\n spoiler?: SpoilerInfo;\n stackingVehicleNeeded?: boolean;\n detailsStacking?: string;\n};\n\nexport type PickUpDeliveryType = BaseDeliveryType & {\n type: DeliveryTypes.PICK_UP;\n urgent: boolean;\n transportationMode?: TransportationMode;\n detailsBorderCrossing?: string;\n technicalControlNeeded: boolean;\n insuranceNeeded: boolean;\n transitPlateBelgiumNeeded: boolean;\n transitPlateAustriaNeeded: boolean;\n licensePlateNeeded: boolean;\n dateOfPickUpByCustomer?: string;\n};\n\nexport type AddressDeliveryType = BaseDeliveryType & {\n type: DeliveryTypes.ADDRESS;\n address: LocationValue;\n distanceKm: string;\n technicalControlNeeded: boolean;\n};\n\nexport type PortDeliverytype = BaseDeliveryType & {\n type: DeliveryTypes.PORT;\n portOriginId: string;\n portDestination?: string;\n shippingCompany?: string;\n portToPortCostPrice: string;\n portToPortMargin: string;\n};\n\n// Sent by the Frontend to bootstrap the calculator\nexport type SalesCalculatorDefaultInput = BaseQuoteCalculatorInput & {\n vehicle: {\n agreedPrice: string;\n comissionCost: string;\n id: string;\n };\n extras: SalesQuoteExtraInput[];\n customRequests: CustomSalesQuoteExtraInput[];\n};\n\nexport type SalesCalculatorInput = BaseQuoteCalculatorInput & {\n vehicle: {\n vatRate: string;\n agreedPrice: string;\n minimumPrice: string;\n purchasePrice: string; //TODO don't send to Frontend but store in DB\n comissionCost: string;\n id: string;\n };\n delivery?: PickUpDeliveryType | AddressDeliveryType | PortDeliverytype;\n extras: SalesQuoteExtraInput[];\n customRequests: CustomSalesQuoteExtraInput[];\n};\n\nexport type LeasingCalculatorOutput = {\n vatApplicable: boolean;\n installment: string;\n installmentPrintable: string;\n totalMonthlyAmount: string;\n monthlyTaxesInsurance: string;\n beforeDelivery: string;\n financingAmount: string;\n settingId: string;\n totalRetailAmount: string;\n finalSalesPrice: string;\n roi: {\n value: string;\n target: string;\n perYear: string;\n difference: string;\n score?: QuoteMetricsScore;\n };\n cashflow: {\n deficit: string;\n balanced: boolean;\n score: QuoteMetricsScore;\n };\n profitability: {\n leasing: string;\n vehicle: string;\n total: string;\n score: QuoteMetricsScore;\n };\n taxes: {\n yearlyRetailPrice: string;\n monthlyRetailPrice: string;\n yearlyRoadTax: string;\n oneTimeRoadTax: string;\n };\n insurance: {\n yearlyRetailPrice: string;\n monthlyRetailPrice: string;\n civilLiabilities: string;\n allRisks: string;\n specialTechnicalInsurance: string;\n roadAssistance: string;\n };\n costs: {\n financingAmount: string;\n finalCostPrice: string;\n monhtly: string;\n trackAndTrace: string;\n };\n};\n\nexport type SalesCalculatorOutput = {\n totalRetailAmount: string;\n totalRetailAmountExclVat: string;\n retailAmounts: {\n vehicle: string;\n delivery: string;\n extras: string;\n };\n roi: { value: string; score?: QuoteMetricsScore };\n profit: {\n value: string;\n score: QuoteMetricsScore;\n };\n profitOverMin: {\n value: string;\n percentage: string;\n score: QuoteMetricsScore;\n };\n delivery: {\n retailPrice?: string;\n costPrice?: string;\n cleaningNeeded: boolean;\n cleaningNeededRetailPrice: string;\n transportationToPortRetailPrice?: string;\n };\n costs: {\n finalCostPrice: string;\n extras: string;\n delivery: string;\n };\n};\n\ntype BaseQuote = {\n opportunityId: string;\n preferredLanguage: string;\n clientNotes?: string;\n publicNotes?: string;\n} & (\n | {\n type: OpportunityType.LEASING;\n calculatorInput: LeasingCalculatorInput;\n calculatorOutput: LeasingCalculatorOutput;\n rating?: MatchingRuleValue;\n }\n | {\n type: OpportunityType.SALES;\n calculatorInput: SalesCalculatorInput;\n calculatorOutput: SalesCalculatorOutput;\n rating?: MatchingRuleValue;\n }\n);\n\nexport type NewQuote = BaseQuote & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n modifiedAt?: undefined;\n modifiedBy?: undefined;\n active: true;\n};\n\nexport type Quote = BaseQuote & {\n id: string;\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n validationBy?: string;\n validationAt?: string;\n cancelledBy?: string;\n cancelledAt?: string;\n customerFeedbackAt?: string;\n customerFeedbackBy?: string;\n managerFeedbackAt?: string;\n managerFeedbackBy?: string;\n version: number;\n status: QuoteStatus;\n proformaPdf?: AttachmentValue;\n quotePdf?: AttachmentValue;\n salesAgreementPdf?: AttachmentValue;\n active: boolean;\n contactId: string;\n vehicleId: string;\n organizationId: string;\n};\n\nexport type QuoteUpdate = {\n status?: QuoteStatus;\n active?: boolean;\n};\n\nexport type CalculatorLeasingIO = {\n output: LeasingCalculatorOutput;\n input: LeasingCalculatorInput;\n rating?: MatchingRuleValue;\n};\nexport type CalculatorSalesIO = {\n output: SalesCalculatorOutput;\n input: SalesCalculatorInput;\n rating?: MatchingRuleValue;\n};\nexport type CalculatorQuoteIO = CalculatorLeasingIO | CalculatorSalesIO;\n\nexport type UsedVehiclesSalesParams = {\n id: string;\n modifiedAt: string;\n modifiedBy: string;\n countryCode: 'be';\n name: string;\n profitabilityDealGap: string;\n exaDocumentCosts: string;\n delivery?: DeliveryParams;\n};\n\nexport type QuoteSettings = LeasingQuoteParams | UsedVehiclesSalesParams;\n\nexport type DeliveryLocationValue = Omit<LocationValue, 'addressLine1' | 'city'> & {\n addressLine1: string;\n city: string;\n};\n\nexport type DeliveryRoutesRequest = {\n origin: DeliveryLocationValue;\n destination: DeliveryLocationValue;\n};\n\ntype BaseCommission = {\n opportunityId: string;\n\n estimatedAmount: string;\n estimatedPaidAt: string;\n paidAmount?: string;\n paidAt?: string;\n\n notes?: string;\n};\n\nexport type NewCommission = BaseCommission & {};\n\nexport type Commission = BaseCommission & {\n stockNumber: string;\n vehicleId: string;\n\n branchId: string;\n currency: string;\n\n modifiedAt: string;\n modifiedBy: string;\n};\n\nexport type NewQuoteValidator = {\n userId: string;\n countryCode: string;\n type: OpportunityType;\n canValidateOwn?: boolean;\n};\n\nexport type QuoteValidator = NewQuoteValidator & {\n createdAt: string;\n};\n\nexport type QuoteValidatorUpdate = {\n canValidateOwn: boolean;\n};\n"]}
1
+ {"version":3,"file":"quotes.js","sourceRoot":"/","sources":["types/quotes.ts"],"names":[],"mappings":";;;AAeA,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,+CAA+B,CAAA;IAC/B,iCAAiB,CAAA;AACnB,CAAC,EALW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAKvB;AAED,IAAY,WASX;AATD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;IAC3B,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,mDAAoC,CAAA;IACpC,mDAAoC,CAAA;AACtC,CAAC,EATW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAStB;AAED,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;IACnB,kCAAa,CAAA;AACf,CAAC,EAJW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAI5B;AACD,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,mCAAkB,CAAA;IAClB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;AACf,CAAC,EAJW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAIxB;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,qCAAsB,CAAA;AACxB,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB;AAED,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,wCAAkB,CAAA;IAClB,6CAAuB,CAAA;AACzB,CAAC,EAHW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAG7B","sourcesContent":["import { AttachmentValue, LocationValue } from '@bisondesk/commons-sdk/types';\nimport { OpportunityType } from '../constants';\nimport { DeliveryParams } from './delivery-settings';\nimport {\n CustomLeasingQuoteExtraInput,\n CustomSalesQuoteExtraInput,\n LeasingDeliveryPackageInput,\n LeasingQuoteExtraInput,\n LeasingQuoteParams,\n SalesQuoteExtraInput,\n} from './leasing-settings';\nimport { MatchingRuleValue } from './roi-ratings';\nimport { PricePercentageMode } from './utils';\nimport { Vehicle } from './vehicles';\n\nexport enum QuoteActions {\n ACCEPT = 'accept',\n VALIDATE = 'validate',\n DONWLOAD_PDFS = 'download-pdfs',\n CANCEL = 'cancel',\n}\n\nexport enum QuoteStatus {\n CREATED = 'created',\n VALIDATED = 'validated',\n INVALIDATED = 'invalidated',\n ACCEPTED = 'accepted',\n REJECTED = 'rejected',\n CANCELLED = 'cancelled',\n MANAGER_REJECTED = 'managerRejected',\n MANAGER_ACCEPTED = 'managerAccepted',\n}\n\nexport enum QuoteMetricsScore {\n DANGER = 'danger',\n NEUTRAL = 'neutral',\n GOOD = 'good',\n}\nexport enum DeliveryTypes {\n PICK_UP = 'pickUp',\n ADDRESS = 'address',\n PORT = 'port',\n}\n\nexport enum SpoilerInfo {\n MOUNT = 'mount',\n UNMOUNT = 'unmount',\n NO_ACTION = 'noAction',\n}\n\nexport enum TransportationMode {\n BY_ROAD = 'byRoad',\n ON_LOW_BED = 'onLowBed',\n}\n\ntype BaseQuoteCalculatorInput = {\n branch: string;\n branchCountry: string;\n customerCountry: string;\n customerVatNumber?: string;\n vehicleCategory: string;\n bodywork?: string;\n currency: string;\n};\n\n// Sent by the Frontend to bootstrap the calculator\nexport type LeasingCalculatorDefaultInput = BaseQuoteCalculatorInput & {\n salesPrice: string;\n purchasePrice: string;\n deliveryPackage?: LeasingQuoteExtraInput;\n};\n\nexport type LeasingCalculatorInput = BaseQuoteCalculatorInput & {\n localLicensePlate: boolean;\n vanCourier: boolean;\n leasing: {\n salesPrice: string;\n deposit: string;\n depositMode: PricePercentageMode;\n depositPercentage: string;\n residual: string;\n residualMode: PricePercentageMode;\n residualPercentage: string;\n startupFee: string;\n startupFeeMode: PricePercentageMode;\n startupFeePercentage: string;\n interestRate: string;\n purchasePrice: string;\n duration: number;\n contractStartDate: string;\n };\n bank: {\n interestRate: string;\n deposit: string;\n depositMode: PricePercentageMode;\n depositPercentage: string;\n residual: string;\n residualMode: PricePercentageMode;\n residualPercentage: string;\n duration: number;\n salesPrice: string;\n };\n taxes: {\n yearlyRoadTax: boolean;\n oneTimeRoadTax: boolean;\n margin: string; //Non Editable, copies the value insurance > margin\n };\n insurance: {\n margin: string;\n civilLiabilities: boolean;\n allRisks: boolean;\n specialTechnicalInsurance: boolean;\n roadAssistance: boolean;\n };\n deliveryPackage?: LeasingDeliveryPackageInput;\n extras: LeasingQuoteExtraInput[];\n customRequests: CustomLeasingQuoteExtraInput[];\n};\n\ntype BaseDeliveryType = {\n agreedPrice: string;\n spoiler?: SpoilerInfo;\n stackingVehicleNeeded?: boolean;\n detailsStacking?: string;\n};\n\nexport type PickUpDeliveryType = BaseDeliveryType & {\n type: DeliveryTypes.PICK_UP;\n urgent: boolean;\n transportationMode?: TransportationMode;\n detailsBorderCrossing?: string;\n technicalControlNeeded: boolean;\n insuranceNeeded: boolean;\n transitPlateBelgiumNeeded: boolean;\n transitPlateAustriaNeeded: boolean;\n licensePlateNeeded: boolean;\n dateOfPickUpByCustomer?: string;\n};\n\nexport type AddressDeliveryType = BaseDeliveryType & {\n type: DeliveryTypes.ADDRESS;\n address: LocationValue;\n distanceKm: string;\n technicalControlNeeded: boolean;\n};\n\nexport type PortDeliverytype = BaseDeliveryType & {\n type: DeliveryTypes.PORT;\n portOriginId: string;\n portDestination?: string;\n shippingCompany?: string;\n portToPortCostPrice: string;\n portToPortMargin: string;\n};\n\n// Sent by the Frontend to bootstrap the calculator\nexport type SalesCalculatorDefaultInput = BaseQuoteCalculatorInput & {\n vehicle: {\n agreedPrice: string;\n comissionCost: string;\n id: string;\n };\n extras: SalesQuoteExtraInput[];\n customRequests: CustomSalesQuoteExtraInput[];\n};\n\nexport type SalesCalculatorInput = BaseQuoteCalculatorInput & {\n vehicle: {\n vatRate: string;\n agreedPrice: string;\n minimumPrice: string;\n purchasePrice: string; //TODO don't send to Frontend but store in DB\n comissionCost: string;\n id: string;\n };\n delivery?: PickUpDeliveryType | AddressDeliveryType | PortDeliverytype;\n extras: SalesQuoteExtraInput[];\n customRequests: CustomSalesQuoteExtraInput[];\n};\n\nexport type SalesQuoteRuleInput = {\n input: SalesCalculatorInput;\n output: SalesCalculatorOutput;\n vehicle: Vehicle;\n stockAge: number;\n};\n\nexport type LeasingCalculatorOutput = {\n vatApplicable: boolean;\n installment: string;\n installmentPrintable: string;\n totalMonthlyAmount: string;\n monthlyTaxesInsurance: string;\n beforeDelivery: string;\n financingAmount: string;\n settingId: string;\n totalRetailAmount: string;\n finalSalesPrice: string;\n roi: {\n value: string;\n target: string;\n perYear: string;\n difference: string;\n score?: QuoteMetricsScore;\n };\n cashflow: {\n deficit: string;\n balanced: boolean;\n score: QuoteMetricsScore;\n };\n profitability: {\n leasing: string;\n vehicle: string;\n total: string;\n score: QuoteMetricsScore;\n };\n taxes: {\n yearlyRetailPrice: string;\n monthlyRetailPrice: string;\n yearlyRoadTax: string;\n oneTimeRoadTax: string;\n };\n insurance: {\n yearlyRetailPrice: string;\n monthlyRetailPrice: string;\n civilLiabilities: string;\n allRisks: string;\n specialTechnicalInsurance: string;\n roadAssistance: string;\n };\n costs: {\n financingAmount: string;\n finalCostPrice: string;\n monhtly: string;\n trackAndTrace: string;\n };\n};\n\nexport type SalesCalculatorOutput = {\n totalRetailAmount: string;\n totalRetailAmountExclVat: string;\n retailAmounts: {\n vehicle: string;\n delivery: string;\n extras: string;\n };\n roi: { value: string; score?: QuoteMetricsScore };\n profit: {\n value: string;\n score: QuoteMetricsScore;\n };\n profitOverMin: {\n value: string;\n percentage: string;\n score: QuoteMetricsScore;\n };\n delivery: {\n retailPrice?: string;\n costPrice?: string;\n cleaningNeeded: boolean;\n cleaningNeededRetailPrice: string;\n transportationToPortRetailPrice?: string;\n };\n costs: {\n finalCostPrice: string;\n extras: string;\n delivery: string;\n };\n};\n\ntype BaseQuote = {\n opportunityId: string;\n preferredLanguage: string;\n clientNotes?: string;\n publicNotes?: string;\n} & (\n | {\n type: OpportunityType.LEASING;\n calculatorInput: LeasingCalculatorInput;\n calculatorOutput: LeasingCalculatorOutput;\n rating?: MatchingRuleValue;\n }\n | {\n type: OpportunityType.SALES;\n calculatorInput: SalesCalculatorInput;\n calculatorOutput: SalesCalculatorOutput;\n rating?: MatchingRuleValue;\n }\n);\n\nexport type NewQuote = BaseQuote & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n modifiedAt?: undefined;\n modifiedBy?: undefined;\n active: true;\n};\n\nexport type Quote = BaseQuote & {\n id: string;\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n validationBy?: string;\n validationAt?: string;\n cancelledBy?: string;\n cancelledAt?: string;\n customerFeedbackAt?: string;\n customerFeedbackBy?: string;\n managerFeedbackAt?: string;\n managerFeedbackBy?: string;\n version: number;\n status: QuoteStatus;\n proformaPdf?: AttachmentValue;\n quotePdf?: AttachmentValue;\n salesAgreementPdf?: AttachmentValue;\n active: boolean;\n contactId: string;\n vehicleId: string;\n organizationId: string;\n};\n\nexport type QuoteUpdate = {\n status?: QuoteStatus;\n active?: boolean;\n};\n\nexport type CalculatorLeasingIO = {\n output: LeasingCalculatorOutput;\n input: LeasingCalculatorInput;\n rating?: MatchingRuleValue;\n};\nexport type CalculatorSalesIO = {\n output: SalesCalculatorOutput;\n input: SalesCalculatorInput;\n rating?: MatchingRuleValue;\n};\nexport type CalculatorQuoteIO = CalculatorLeasingIO | CalculatorSalesIO;\n\nexport type UsedVehiclesSalesParams = {\n id: string;\n modifiedAt: string;\n modifiedBy: string;\n countryCode: 'be';\n name: string;\n profitabilityDealGap: string;\n exaDocumentCosts: string;\n delivery?: DeliveryParams;\n};\n\nexport type QuoteSettings = LeasingQuoteParams | UsedVehiclesSalesParams;\n\nexport type DeliveryLocationValue = Omit<LocationValue, 'addressLine1' | 'city'> & {\n addressLine1: string;\n city: string;\n};\n\nexport type DeliveryRoutesRequest = {\n origin: DeliveryLocationValue;\n destination: DeliveryLocationValue;\n};\n\ntype BaseCommission = {\n opportunityId: string;\n\n estimatedAmount: string;\n estimatedPaidAt: string;\n paidAmount?: string;\n paidAt?: string;\n\n notes?: string;\n};\n\nexport type NewCommission = BaseCommission & {};\n\nexport type Commission = BaseCommission & {\n stockNumber: string;\n vehicleId: string;\n\n branchId: string;\n currency: string;\n\n modifiedAt: string;\n modifiedBy: string;\n};\n\nexport type NewQuoteValidator = {\n userId: string;\n countryCode: string;\n type: OpportunityType;\n canValidateOwn?: boolean;\n};\n\nexport type QuoteValidator = NewQuoteValidator & {\n createdAt: string;\n};\n\nexport type QuoteValidatorUpdate = {\n canValidateOwn: boolean;\n};\n"]}
@@ -1,2 +1,7 @@
1
- export {};
1
+ export var FinanceDocumentActions;
2
+ (function (FinanceDocumentActions) {
3
+ FinanceDocumentActions["CREATE_FINANCE_DOCUMENT"] = "create_finance_document";
4
+ FinanceDocumentActions["EDIT_FINANCE_DOCUMENT"] = "edit_existing_invoice";
5
+ FinanceDocumentActions["DELETE_FINANCE_DOCUMENT"] = "delete_existing_invoice";
6
+ })(FinanceDocumentActions || (FinanceDocumentActions = {}));
2
7
  //# sourceMappingURL=documents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"documents.js","sourceRoot":"/","sources":["types/documents.ts"],"names":[],"mappings":"","sourcesContent":["import { AttachmentValue, SearchPermissions } from '@bisondesk/commons-sdk/types';\nimport { Organization } from './crm';\nimport { PublicSearchDefinition } from './definitions';\n\nexport type FinanceLine = {\n associations: {\n others: { vehicleId: string; label: string }[];\n sales: { id: string; vehicleId: string; label: string }[];\n purchases: { id: string; vehicleId: string; label: string }[];\n };\n description: string;\n id: string;\n lineCode: string;\n quantity: string;\n unitPriceExclusive: string;\n vatCode: string;\n vatCoefficient: string;\n};\n\nexport type FinanceDocument = {\n id: string;\n branchId: string;\n\n type: 'Sale Finance' | 'Purchase Finance';\n subtype: 'Invoice' | 'Credit Note' | 'Proforma' | 'Purchase Order';\n reference: string;\n\n attachment: AttachmentValue;\n lines: FinanceLine[];\n notes?: string;\n\n createdAt: string;\n createdBy: string;\n issueDate: string;\n\n organizationSummary?: {\n id: string;\n code: string;\n name: string;\n country: string;\n vatNumber?: string;\n\n addressLine1?: string;\n addressLine2?: string;\n addressLine3?: string;\n postcode?: string;\n city?: string;\n\n email?: string;\n phone?: string;\n fax?: string;\n };\n};\n\nexport type FinanceDocumentEvent = {\n id: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n type: 'Sale Finance' | 'Purchase Finance';\n subtype: string; // Invoice, Credit Note, etc.\n};\n\nexport type FinanceBookingEvent = {\n id: string;\n branchId: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n type: 'Sale Finance' | 'Purchase Finance';\n};\n\nexport type FinanceBooking = {\n branchId: string; // same tenantId can have different companies\n bookingNumber: string; // same booking number can and will exist across different \"branches\"\n documentId: string;\n\n booked: true;\n journal?: string;\n amount?: string;\n reportingPeriod?: number;\n reportingYear?: number;\n paid: boolean;\n\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n};\n\nexport type SearchDocumentVehicleRef = {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n};\n\nexport type SearchFinanceDocument = {\n org?: Organization;\n doc: FinanceDocument;\n booking?: FinanceBooking;\n vehicle?: SearchDocumentVehicleRef[];\n};\n\nexport type InputSearchFinanceDocument = SearchFinanceDocument & {\n permissions: SearchPermissions;\n};\n\nexport type DocsSearchDefinitions = {\n searchFinanceDoc: PublicSearchDefinition;\n};\n"]}
1
+ {"version":3,"file":"documents.js","sourceRoot":"/","sources":["types/documents.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,sBAIX;AAJD,WAAY,sBAAsB;IAChC,6EAAmD,CAAA;IACnD,yEAA+C,CAAA;IAC/C,6EAAmD,CAAA;AACrD,CAAC,EAJW,sBAAsB,KAAtB,sBAAsB,QAIjC","sourcesContent":["import { AttachmentValue, SearchPermissions } from '@bisondesk/commons-sdk/types';\nimport { Organization } from './crm';\nimport { PublicSearchDefinition } from './definitions';\n\nexport enum FinanceDocumentActions {\n CREATE_FINANCE_DOCUMENT = 'create_finance_document',\n EDIT_FINANCE_DOCUMENT = 'edit_existing_invoice',\n DELETE_FINANCE_DOCUMENT = 'delete_existing_invoice',\n}\n\nexport type FinanceLine = {\n associations: {\n others: { vehicleId: string; label: string }[];\n sales: { id: string; vehicleId: string; label: string }[];\n purchases: { id: string; vehicleId: string; label: string }[];\n };\n description: string;\n id: string;\n lineCode: string;\n quantity: string;\n unitPriceExclusive: string;\n vatCode: string;\n vatCoefficient: string;\n};\n\nexport type FinanceDocument = {\n id: string;\n branchId: string;\n\n type: 'Sale Finance' | 'Purchase Finance';\n subtype: 'Invoice' | 'Credit Note' | 'Proforma' | 'Purchase Order';\n reference: string;\n\n attachment: AttachmentValue;\n lines: FinanceLine[];\n notes?: string;\n\n createdAt: string;\n createdBy: string;\n issueDate: string;\n\n organizationSummary?: {\n id: string;\n code: string;\n name: string;\n country: string;\n vatNumber?: string;\n\n addressLine1?: string;\n addressLine2?: string;\n addressLine3?: string;\n postcode?: string;\n city?: string;\n\n email?: string;\n phone?: string;\n fax?: string;\n };\n};\n\nexport type FinanceDocumentEvent = {\n id: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n type: 'Sale Finance' | 'Purchase Finance';\n subtype: string; // Invoice, Credit Note, etc.\n};\n\nexport type FinanceBookingEvent = {\n id: string;\n branchId: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n type: 'Sale Finance' | 'Purchase Finance';\n};\n\nexport type FinanceBooking = {\n branchId: string; // same tenantId can have different companies\n bookingNumber: string; // same booking number can and will exist across different \"branches\"\n documentId: string;\n\n booked: true;\n journal?: string;\n amount?: string;\n reportingPeriod?: number;\n reportingYear?: number;\n paid: boolean;\n\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n};\n\nexport type SearchDocumentVehicleRef = {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n};\n\nexport type SearchFinanceDocument = {\n org?: Organization;\n doc: FinanceDocument;\n booking?: FinanceBooking;\n vehicle?: SearchDocumentVehicleRef[];\n};\n\nexport type InputSearchFinanceDocument = SearchFinanceDocument & {\n permissions: SearchPermissions;\n};\n\nexport type DocsSearchDefinitions = {\n searchFinanceDoc: PublicSearchDefinition;\n};\n"]}
@@ -1,3 +1,7 @@
1
+ export var LeasingContractActions;
2
+ (function (LeasingContractActions) {
3
+ LeasingContractActions["CREATE_FINANCE_DOCUMENT"] = "create_finance_document";
4
+ })(LeasingContractActions || (LeasingContractActions = {}));
1
5
  export var LeasingContractSource;
2
6
  (function (LeasingContractSource) {
3
7
  LeasingContractSource["HYPERPORTAL"] = "hyperportal";
@@ -1 +1 @@
1
- {"version":3,"file":"leasing.js","sourceRoot":"/","sources":["types/leasing.ts"],"names":[],"mappings":"AAyDA,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,oDAA2B,CAAA;IAC3B,gDAAuB,CAAA;AACzB,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,MAAM,CAAN,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,wCAAe,CAAA;IACf,gDAAuB,CAAA;IACvB,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,wCAAe,CAAA;AACjB,CAAC,EANW,qBAAqB,KAArB,qBAAqB,QAMhC;AAkPD,MAAM,CAAN,IAAY,+BAKX;AALD,WAAY,+BAA+B;IACzC,kEAA+B,CAAA;IAC/B,yEAAsC,CAAA;IACtC,qEAAkC,CAAA;IAClC,oDAAiB,CAAA;AACnB,CAAC,EALW,+BAA+B,KAA/B,+BAA+B,QAK1C","sourcesContent":["import { EmailMessage } from '@bisondesk/commons-sdk/messages';\nimport { AttachmentValue, Document, LinkValue, PaginatedList } from '@bisondesk/commons-sdk/types';\nimport { SortFilter } from './search';\nimport { ReferenceData } from './utils';\n\nexport type LeasingContractEvent = {\n id: string;\n action: 'create' | 'update' | 'delete';\n actionAt: string;\n userId: string;\n tenantId: string;\n contract: LeasingContract;\n};\n\nexport type LeasingContractImportEvent = {\n tenantId: string;\n};\n\nexport type LeasingConditionEvent = {\n id: string;\n action: 'create';\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type OverdueDossier = {\n id: string;\n organizationId: string;\n organizationName: string;\n status: 'ONGOING' | 'ERROR' | 'SUCCESS' | 'EXPIRED';\n emails: EmailMessage[];\n createdAt: string;\n modifiedAt: string;\n completedAt?: string;\n nextActionAt: string;\n riskLevel: number;\n};\n\nexport type LeasingContractClient = {\n organizationId: string;\n contactIds: string[];\n email?: string;\n since: string;\n takeoverId?: string;\n country: string;\n beEntityType?: 'Legal Person' | 'Natural Person';\n beForeignEntity?: boolean;\n\n /**\n * Used to overwrite the startDate in the context of a Becris declaration. This might be necessary\n * when due to some data-quality issue we do not report the contract at the right period and it is no\n * longer possible to resend the declaration for the corresponding month.\n */\n becrisStartDate?: string;\n};\n\nexport enum LeasingContractSource {\n HYPERPORTAL = 'hyperportal',\n BISONDESK = 'bisondesk',\n}\n\nexport enum LeasingContractStatus {\n DRAFT = 'draft',\n DISCARDED = 'discarded',\n PAUSED = 'paused',\n ACTIVE = 'active',\n ENDED = 'ended',\n}\n\nexport type LeasingContractHyperportal = {\n source: LeasingContractSource.HYPERPORTAL;\n /** oldest first **/\n conditions: ConditionsRef[];\n opportunities?: undefined;\n};\n\nexport type LeasingContractBisondesk = {\n source: LeasingContractSource.BISONDESK;\n conditions?: undefined;\n /** oldest first **/\n opportunities: OpportunityRef[];\n externalId?: string;\n};\n\ntype BaseLeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> = {\n id: string;\n createdAt: string;\n updatedAt: string;\n contractNumber?: string;\n startDate: string;\n deliveryDate?: string;\n endDate?: string;\n slbPartner?: string;\n links?: LinkValue[];\n accountManager?: string;\n clients: LeasingContractClient[];\n hasSlbPartnerAmortisationTable?: boolean;\n slbContractNumber?: string;\n vehicle: {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n };\n status: LeasingContractStatus;\n documents: Document[];\n} & T;\n\nexport type LeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> =\n BaseLeasingContract<T> & {\n readonly expectedEndDate: string;\n };\n\nexport type NewLeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> =\n BaseLeasingContract<T> & {\n readonly expectedEndDate?: undefined;\n };\n\nexport type NextLeasingRentRowRequest = {\n vehicleId: string;\n organizationId: string;\n issueDate: string;\n};\n\nexport type NextLeasingRentRowResponse = {\n capital: string;\n contract: string;\n insurance?: string;\n interest: string;\n other?: string; // insurance + taxes + others\n period: number;\n taxes?: string;\n total: string;\n};\n\ntype BaseRef = {\n id: string;\n depositAmount: string;\n durationInMonths: number;\n taxesAmount?: string;\n insuranceAmount?: string;\n saleAmount: string; // includes the extras\n interestRate: string; //TODO: In LC from BD value is percentage, in LC from HP value is decimal\n residualAmount: string;\n leasingMonthlyAmount: string; // excluding VAT\n otherMonthlyAmounts: string; // insurance + taxes + others (excluding VAT)\n totalMonthlyAmount: string; // excluding VAT\n};\n\nexport type ConditionsRef = BaseRef & {\n validSince: string;\n};\n\nexport type OpportunityRef = BaseRef & {\n createdAt: string;\n quoteId: string;\n //Since VAT is client specific and contracts can be transferred between clients, we always handle values without VAT\n};\n\nexport type ListOverdueRemindersResponse = PaginatedList<OverdueDossier, ReferenceData>;\nexport type ListOverdueRemindersRequest = {\n offset: number;\n limit: number;\n sortBy: SortFilter;\n};\n\nexport type NewLeasingConditions = {\n parameters: {\n yearlyRoadTax: string;\n civilLiability: string;\n oneTimeRoadTax: string;\n specialInsurance: string;\n allRisksPercentage: string;\n allRisksTaxPercentage: string;\n };\n\n inputs: {\n deposit: string;\n salesPrice: string;\n bankDeposit: string;\n purchasePrice: string;\n residualValue: string;\n insuranceAmount: string;\n durationInMonths: number;\n includesAllRisks: boolean;\n marginPercentage: string;\n bankResidualValue: string;\n bankDurationInMonths: number;\n startupFeePercentage: string;\n includesYearlyRoadTax: boolean;\n includesCivilLiability: boolean;\n includesOneTimeRoadTax: boolean;\n interestRatePercentage: string;\n includesSpecialInsurance: boolean;\n monthlyAdministrationFee: string;\n bankInterestRatePercentage: string;\n };\n\n outputs: {\n ROI: string;\n ROITarget: string;\n ROIPerYear: string;\n cashDeficit: string;\n totalProfit: string;\n ROIDifference: string;\n leasingAmount: string;\n leasingProfit: string;\n vehicleProfit: string;\n oneTimeTaxCost: string;\n financingAmount: string;\n bankContractValue: string;\n bankLeasingAmount: string;\n totalMonthlyPayment: string;\n leasingContractValue: string;\n monthlyTaxRetailPrice: string;\n allRisksInsuranceAmount: string;\n };\n\n cashIn: Array<{\n time: string;\n cashIn: string;\n deposit: string;\n startupFee: string;\n taxPayment: string;\n residualValue: string;\n cumulativeCash: string;\n insurancePayment: string;\n monthlyAdministrationFee: string;\n leasingAmountWithoutAdminFee: string;\n }>;\n\n cashOut: Array<{\n time: string;\n cashOut: string;\n deposit: string;\n taxPayment: string;\n leasingAmount: string;\n residualValue: string;\n cumulativeCash: string;\n insurancePayment: string;\n }>;\n};\n\nexport type LeasingConditions = NewLeasingConditions & {\n id: string;\n createdAt: string;\n createdBy: string;\n amortization: AmortizationTable;\n};\n\nexport type AmortizationRow = {\n period: number;\n /* An estimate of the date in which the period will happen\n based on the contract start date. Empty for period zero. */\n expectedPeriodDate?: string;\n buyOff: string;\n payment: string;\n capital: string;\n interest: string;\n totalInterest: string;\n balance: string;\n};\n\nexport type AmortizationTable = {\n annualInterestRate?: string;\n monthlyInterestRate?: string;\n rows: AmortizationRow[];\n};\n\nexport type AmortizationDocsEvent = {\n contractId: string;\n changedDocumentIds: string[];\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type AmortizationDocs = {\n contractId: string;\n period: number;\n documents: AmortizationDoc[];\n};\n\nexport type AmortizationDoc = {\n amount: string;\n bookingNumber: string;\n branchId: string;\n documentId: string;\n issueDate: string;\n subtype: 'Invoice' | 'Credit Note';\n clientExternalId: number;\n};\n\nexport type BecrisDeclaration = {\n createdAt: string;\n endDate: string;\n endingInstruments: number;\n existingInstruments: number;\n file: AttachmentValue;\n id: string;\n newInstruments: number;\n startDate: string;\n};\n\nexport type LeasingReportingSettings = {\n active: boolean;\n branchId: string;\n tenantId: string;\n};\n\nexport enum LeasingRemindersSortableColumns {\n NextActionAt = 'next_action_at',\n OrganizationName = 'organization_name',\n RemindersCount = 'reminders_count',\n Status = 'status',\n}\n\nexport type AmortizationTableRequest = {\n leasingAmount: string; // monthly amount\n deposit: string;\n salesPrice: string;\n duration: number; // in months\n residual: string;\n monthlyInterestRate: string; // the annual interest rate divided by 12\n startDate?: string; // should be filled in if you want an amortization table with expected period dates\n};\n\nexport type AmortizationTableTemplateData = {\n opportunity: {\n id: string;\n };\n v: {\n make: string;\n model: string;\n category: string;\n type?: string;\n vin: string;\n year?: string | number;\n stockNumber: string;\n };\n c: {\n clientNumber: number;\n company: string;\n fullName: string;\n vatNumber?: string;\n email?: string;\n phone?: string;\n address?: string;\n };\n leasing: {\n salesPrice: string;\n salesPriceVat: string;\n salesPriceExclVat: string;\n deposit: string;\n depositExclVat: string;\n depositVat: string;\n installment: string;\n installmentVat: string;\n installmentExclVat: string;\n duration: number;\n monthlyInsurance: string;\n monthlyTax: string;\n monthlyTaxesInsurance: string;\n residual: string;\n residualVat: string;\n residualExclVat: string;\n offerNumber: string;\n contractNumber: string;\n vatPercentage: string;\n };\n amortization: {\n period: number;\n periodStartDate: string;\n periodEndDate: string;\n deposit: string;\n startUpFee: string;\n monthlyAmount: string;\n insurance: string;\n expirationDate: string;\n total: string;\n }[];\n};\n"]}
1
+ {"version":3,"file":"leasing.js","sourceRoot":"/","sources":["types/leasing.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,sBAEX;AAFD,WAAY,sBAAsB;IAChC,6EAAmD,CAAA;AACrD,CAAC,EAFW,sBAAsB,KAAtB,sBAAsB,QAEjC;AAsDD,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,oDAA2B,CAAA;IAC3B,gDAAuB,CAAA;AACzB,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,MAAM,CAAN,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,wCAAe,CAAA;IACf,gDAAuB,CAAA;IACvB,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,wCAAe,CAAA;AACjB,CAAC,EANW,qBAAqB,KAArB,qBAAqB,QAMhC;AAkPD,MAAM,CAAN,IAAY,+BAKX;AALD,WAAY,+BAA+B;IACzC,kEAA+B,CAAA;IAC/B,yEAAsC,CAAA;IACtC,qEAAkC,CAAA;IAClC,oDAAiB,CAAA;AACnB,CAAC,EALW,+BAA+B,KAA/B,+BAA+B,QAK1C","sourcesContent":["import { EmailMessage } from '@bisondesk/commons-sdk/messages';\nimport { AttachmentValue, Document, LinkValue, PaginatedList } from '@bisondesk/commons-sdk/types';\nimport { SortFilter } from './search';\nimport { ReferenceData } from './utils';\n\nexport enum LeasingContractActions {\n CREATE_FINANCE_DOCUMENT = 'create_finance_document',\n}\n\nexport type LeasingContractEvent = {\n id: string;\n action: 'create' | 'update' | 'delete';\n actionAt: string;\n userId: string;\n tenantId: string;\n contract: LeasingContract;\n};\n\nexport type LeasingContractImportEvent = {\n tenantId: string;\n};\n\nexport type LeasingConditionEvent = {\n id: string;\n action: 'create';\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type OverdueDossier = {\n id: string;\n organizationId: string;\n organizationName: string;\n status: 'ONGOING' | 'ERROR' | 'SUCCESS' | 'EXPIRED';\n emails: EmailMessage[];\n createdAt: string;\n modifiedAt: string;\n completedAt?: string;\n nextActionAt: string;\n riskLevel: number;\n};\n\nexport type LeasingContractClient = {\n organizationId: string;\n contactIds: string[];\n email?: string;\n since: string;\n takeoverId?: string;\n country: string;\n beEntityType?: 'Legal Person' | 'Natural Person';\n beForeignEntity?: boolean;\n\n /**\n * Used to overwrite the startDate in the context of a Becris declaration. This might be necessary\n * when due to some data-quality issue we do not report the contract at the right period and it is no\n * longer possible to resend the declaration for the corresponding month.\n */\n becrisStartDate?: string;\n};\n\nexport enum LeasingContractSource {\n HYPERPORTAL = 'hyperportal',\n BISONDESK = 'bisondesk',\n}\n\nexport enum LeasingContractStatus {\n DRAFT = 'draft',\n DISCARDED = 'discarded',\n PAUSED = 'paused',\n ACTIVE = 'active',\n ENDED = 'ended',\n}\n\nexport type LeasingContractHyperportal = {\n source: LeasingContractSource.HYPERPORTAL;\n /** oldest first **/\n conditions: ConditionsRef[];\n opportunities?: undefined;\n};\n\nexport type LeasingContractBisondesk = {\n source: LeasingContractSource.BISONDESK;\n conditions?: undefined;\n /** oldest first **/\n opportunities: OpportunityRef[];\n externalId?: string;\n};\n\ntype BaseLeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> = {\n id: string;\n createdAt: string;\n updatedAt: string;\n contractNumber?: string;\n startDate: string;\n deliveryDate?: string;\n endDate?: string;\n slbPartner?: string;\n links?: LinkValue[];\n accountManager?: string;\n clients: LeasingContractClient[];\n hasSlbPartnerAmortisationTable?: boolean;\n slbContractNumber?: string;\n vehicle: {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n };\n status: LeasingContractStatus;\n documents: Document[];\n} & T;\n\nexport type LeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> =\n BaseLeasingContract<T> & {\n readonly expectedEndDate: string;\n };\n\nexport type NewLeasingContract<T = LeasingContractHyperportal | LeasingContractBisondesk> =\n BaseLeasingContract<T> & {\n readonly expectedEndDate?: undefined;\n };\n\nexport type NextLeasingRentRowRequest = {\n vehicleId: string;\n organizationId: string;\n issueDate: string;\n};\n\nexport type NextLeasingRentRowResponse = {\n capital: string;\n contract: string;\n insurance?: string;\n interest: string;\n other?: string; // insurance + taxes + others\n period: number;\n taxes?: string;\n total: string;\n};\n\ntype BaseRef = {\n id: string;\n depositAmount: string;\n durationInMonths: number;\n taxesAmount?: string;\n insuranceAmount?: string;\n saleAmount: string; // includes the extras\n interestRate: string; //TODO: In LC from BD value is percentage, in LC from HP value is decimal\n residualAmount: string;\n leasingMonthlyAmount: string; // excluding VAT\n otherMonthlyAmounts: string; // insurance + taxes + others (excluding VAT)\n totalMonthlyAmount: string; // excluding VAT\n};\n\nexport type ConditionsRef = BaseRef & {\n validSince: string;\n};\n\nexport type OpportunityRef = BaseRef & {\n createdAt: string;\n quoteId: string;\n //Since VAT is client specific and contracts can be transferred between clients, we always handle values without VAT\n};\n\nexport type ListOverdueRemindersResponse = PaginatedList<OverdueDossier, ReferenceData>;\nexport type ListOverdueRemindersRequest = {\n offset: number;\n limit: number;\n sortBy: SortFilter;\n};\n\nexport type NewLeasingConditions = {\n parameters: {\n yearlyRoadTax: string;\n civilLiability: string;\n oneTimeRoadTax: string;\n specialInsurance: string;\n allRisksPercentage: string;\n allRisksTaxPercentage: string;\n };\n\n inputs: {\n deposit: string;\n salesPrice: string;\n bankDeposit: string;\n purchasePrice: string;\n residualValue: string;\n insuranceAmount: string;\n durationInMonths: number;\n includesAllRisks: boolean;\n marginPercentage: string;\n bankResidualValue: string;\n bankDurationInMonths: number;\n startupFeePercentage: string;\n includesYearlyRoadTax: boolean;\n includesCivilLiability: boolean;\n includesOneTimeRoadTax: boolean;\n interestRatePercentage: string;\n includesSpecialInsurance: boolean;\n monthlyAdministrationFee: string;\n bankInterestRatePercentage: string;\n };\n\n outputs: {\n ROI: string;\n ROITarget: string;\n ROIPerYear: string;\n cashDeficit: string;\n totalProfit: string;\n ROIDifference: string;\n leasingAmount: string;\n leasingProfit: string;\n vehicleProfit: string;\n oneTimeTaxCost: string;\n financingAmount: string;\n bankContractValue: string;\n bankLeasingAmount: string;\n totalMonthlyPayment: string;\n leasingContractValue: string;\n monthlyTaxRetailPrice: string;\n allRisksInsuranceAmount: string;\n };\n\n cashIn: Array<{\n time: string;\n cashIn: string;\n deposit: string;\n startupFee: string;\n taxPayment: string;\n residualValue: string;\n cumulativeCash: string;\n insurancePayment: string;\n monthlyAdministrationFee: string;\n leasingAmountWithoutAdminFee: string;\n }>;\n\n cashOut: Array<{\n time: string;\n cashOut: string;\n deposit: string;\n taxPayment: string;\n leasingAmount: string;\n residualValue: string;\n cumulativeCash: string;\n insurancePayment: string;\n }>;\n};\n\nexport type LeasingConditions = NewLeasingConditions & {\n id: string;\n createdAt: string;\n createdBy: string;\n amortization: AmortizationTable;\n};\n\nexport type AmortizationRow = {\n period: number;\n /* An estimate of the date in which the period will happen\n based on the contract start date. Empty for period zero. */\n expectedPeriodDate?: string;\n buyOff: string;\n payment: string;\n capital: string;\n interest: string;\n totalInterest: string;\n balance: string;\n};\n\nexport type AmortizationTable = {\n annualInterestRate?: string;\n monthlyInterestRate?: string;\n rows: AmortizationRow[];\n};\n\nexport type AmortizationDocsEvent = {\n contractId: string;\n changedDocumentIds: string[];\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type AmortizationDocs = {\n contractId: string;\n period: number;\n documents: AmortizationDoc[];\n};\n\nexport type AmortizationDoc = {\n amount: string;\n bookingNumber: string;\n branchId: string;\n documentId: string;\n issueDate: string;\n subtype: 'Invoice' | 'Credit Note';\n clientExternalId: number;\n};\n\nexport type BecrisDeclaration = {\n createdAt: string;\n endDate: string;\n endingInstruments: number;\n existingInstruments: number;\n file: AttachmentValue;\n id: string;\n newInstruments: number;\n startDate: string;\n};\n\nexport type LeasingReportingSettings = {\n active: boolean;\n branchId: string;\n tenantId: string;\n};\n\nexport enum LeasingRemindersSortableColumns {\n NextActionAt = 'next_action_at',\n OrganizationName = 'organization_name',\n RemindersCount = 'reminders_count',\n Status = 'status',\n}\n\nexport type AmortizationTableRequest = {\n leasingAmount: string; // monthly amount\n deposit: string;\n salesPrice: string;\n duration: number; // in months\n residual: string;\n monthlyInterestRate: string; // the annual interest rate divided by 12\n startDate?: string; // should be filled in if you want an amortization table with expected period dates\n};\n\nexport type AmortizationTableTemplateData = {\n opportunity: {\n id: string;\n };\n v: {\n make: string;\n model: string;\n category: string;\n type?: string;\n vin: string;\n year?: string | number;\n stockNumber: string;\n };\n c: {\n clientNumber: number;\n company: string;\n fullName: string;\n vatNumber?: string;\n email?: string;\n phone?: string;\n address?: string;\n };\n leasing: {\n salesPrice: string;\n salesPriceVat: string;\n salesPriceExclVat: string;\n deposit: string;\n depositExclVat: string;\n depositVat: string;\n installment: string;\n installmentVat: string;\n installmentExclVat: string;\n duration: number;\n monthlyInsurance: string;\n monthlyTax: string;\n monthlyTaxesInsurance: string;\n residual: string;\n residualVat: string;\n residualExclVat: string;\n offerNumber: string;\n contractNumber: string;\n vatPercentage: string;\n };\n amortization: {\n period: number;\n periodStartDate: string;\n periodEndDate: string;\n deposit: string;\n startUpFee: string;\n monthlyAmount: string;\n insurance: string;\n expirationDate: string;\n total: string;\n }[];\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"quotes.js","sourceRoot":"/","sources":["types/quotes.ts"],"names":[],"mappings":"AAcA,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,+CAA+B,CAAA;IAC/B,iCAAiB,CAAA;AACnB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED,MAAM,CAAN,IAAY,WASX;AATD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;IAC3B,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,mDAAoC,CAAA;IACpC,mDAAoC,CAAA;AACtC,CAAC,EATW,WAAW,KAAX,WAAW,QAStB;AAED,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;IACnB,kCAAa,CAAA;AACf,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AACD,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,mCAAkB,CAAA;IAClB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;AACf,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,qCAAsB,CAAA;AACxB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,wCAAkB,CAAA;IAClB,6CAAuB,CAAA;AACzB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B","sourcesContent":["import { AttachmentValue, LocationValue } from '@bisondesk/commons-sdk/types';\nimport { OpportunityType } from '../constants';\nimport { DeliveryParams } from './delivery-settings';\nimport {\n CustomLeasingQuoteExtraInput,\n CustomSalesQuoteExtraInput,\n LeasingDeliveryPackageInput,\n LeasingQuoteExtraInput,\n LeasingQuoteParams,\n SalesQuoteExtraInput,\n} from './leasing-settings';\nimport { MatchingRuleValue } from './roi-ratings';\nimport { PricePercentageMode } from './utils';\n\nexport enum QuoteActions {\n ACCEPT = 'accept',\n VALIDATE = 'validate',\n DONWLOAD_PDFS = 'download-pdfs',\n CANCEL = 'cancel',\n}\n\nexport enum QuoteStatus {\n CREATED = 'created',\n VALIDATED = 'validated',\n INVALIDATED = 'invalidated',\n ACCEPTED = 'accepted',\n REJECTED = 'rejected',\n CANCELLED = 'cancelled',\n MANAGER_REJECTED = 'managerRejected',\n MANAGER_ACCEPTED = 'managerAccepted',\n}\n\nexport enum QuoteMetricsScore {\n DANGER = 'danger',\n NEUTRAL = 'neutral',\n GOOD = 'good',\n}\nexport enum DeliveryTypes {\n PICK_UP = 'pickUp',\n ADDRESS = 'address',\n PORT = 'port',\n}\n\nexport enum SpoilerInfo {\n MOUNT = 'mount',\n UNMOUNT = 'unmount',\n NO_ACTION = 'noAction',\n}\n\nexport enum TransportationMode {\n BY_ROAD = 'byRoad',\n ON_LOW_BED = 'onLowBed',\n}\n\ntype BaseQuoteCalculatorInput = {\n branch: string;\n branchCountry: string;\n customerCountry: string;\n vehicleCategory: string;\n bodywork?: string;\n currency: string;\n};\n\n// Sent by the Frontend to bootstrap the calculator\nexport type LeasingCalculatorDefaultInput = BaseQuoteCalculatorInput & {\n salesPrice: string;\n purchasePrice: string;\n deliveryPackage?: LeasingQuoteExtraInput;\n};\n\nexport type LeasingCalculatorInput = BaseQuoteCalculatorInput & {\n localLicensePlate: boolean;\n vanCourier: boolean;\n leasing: {\n salesPrice: string;\n deposit: string;\n depositMode: PricePercentageMode;\n depositPercentage: string;\n residual: string;\n residualMode: PricePercentageMode;\n residualPercentage: string;\n startupFee: string;\n startupFeeMode: PricePercentageMode;\n startupFeePercentage: string;\n interestRate: string;\n purchasePrice: string;\n duration: number;\n };\n bank: {\n interestRate: string;\n deposit: string;\n depositMode: PricePercentageMode;\n depositPercentage: string;\n residual: string;\n residualMode: PricePercentageMode;\n residualPercentage: string;\n duration: number;\n salesPrice: string;\n };\n taxes: {\n yearlyRoadTax: boolean;\n oneTimeRoadTax: boolean;\n margin: string; //Non Editable, copies the value insurance > margin\n };\n insurance: {\n margin: string;\n civilLiabilities: boolean;\n allRisks: boolean;\n specialTechnicalInsurance: boolean;\n roadAssistance: boolean;\n };\n deliveryPackage?: LeasingDeliveryPackageInput;\n extras: LeasingQuoteExtraInput[];\n customRequests: CustomLeasingQuoteExtraInput[];\n};\n\ntype BaseDeliveryType = {\n agreedPrice: string;\n spoiler?: SpoilerInfo;\n stackingVehicleNeeded?: boolean;\n detailsStacking?: string;\n};\n\nexport type PickUpDeliveryType = BaseDeliveryType & {\n type: DeliveryTypes.PICK_UP;\n urgent: boolean;\n transportationMode?: TransportationMode;\n detailsBorderCrossing?: string;\n technicalControlNeeded: boolean;\n insuranceNeeded: boolean;\n transitPlateBelgiumNeeded: boolean;\n transitPlateAustriaNeeded: boolean;\n licensePlateNeeded: boolean;\n dateOfPickUpByCustomer?: string;\n};\n\nexport type AddressDeliveryType = BaseDeliveryType & {\n type: DeliveryTypes.ADDRESS;\n address: LocationValue;\n distanceKm: string;\n technicalControlNeeded: boolean;\n};\n\nexport type PortDeliverytype = BaseDeliveryType & {\n type: DeliveryTypes.PORT;\n portOriginId: string;\n portDestination?: string;\n shippingCompany?: string;\n portToPortCostPrice: string;\n portToPortMargin: string;\n};\n\n// Sent by the Frontend to bootstrap the calculator\nexport type SalesCalculatorDefaultInput = BaseQuoteCalculatorInput & {\n vehicle: {\n agreedPrice: string;\n comissionCost: string;\n id: string;\n };\n extras: SalesQuoteExtraInput[];\n customRequests: CustomSalesQuoteExtraInput[];\n};\n\nexport type SalesCalculatorInput = BaseQuoteCalculatorInput & {\n vehicle: {\n vatRate: string;\n agreedPrice: string;\n minimumPrice: string;\n purchasePrice: string; //TODO don't send to Frontend but store in DB\n comissionCost: string;\n id: string;\n };\n delivery?: PickUpDeliveryType | AddressDeliveryType | PortDeliverytype;\n extras: SalesQuoteExtraInput[];\n customRequests: CustomSalesQuoteExtraInput[];\n};\n\nexport type LeasingCalculatorOutput = {\n vatApplicable: boolean;\n installment: string;\n installmentPrintable: string;\n totalMonthlyAmount: string;\n monthlyTaxesInsurance: string;\n beforeDelivery: string;\n financingAmount: string;\n settingId: string;\n totalRetailAmount: string;\n finalSalesPrice: string;\n roi: {\n value: string;\n target: string;\n perYear: string;\n difference: string;\n score?: QuoteMetricsScore;\n };\n cashflow: {\n deficit: string;\n balanced: boolean;\n score: QuoteMetricsScore;\n };\n profitability: {\n leasing: string;\n vehicle: string;\n total: string;\n score: QuoteMetricsScore;\n };\n taxes: {\n yearlyRetailPrice: string;\n monthlyRetailPrice: string;\n yearlyRoadTax: string;\n oneTimeRoadTax: string;\n };\n insurance: {\n yearlyRetailPrice: string;\n monthlyRetailPrice: string;\n civilLiabilities: string;\n allRisks: string;\n specialTechnicalInsurance: string;\n roadAssistance: string;\n };\n costs: {\n financingAmount: string;\n finalCostPrice: string;\n monhtly: string;\n trackAndTrace: string;\n };\n};\n\nexport type SalesCalculatorOutput = {\n totalRetailAmount: string;\n totalRetailAmountExclVat: string;\n retailAmounts: {\n vehicle: string;\n delivery: string;\n extras: string;\n };\n roi: { value: string; score?: QuoteMetricsScore };\n profit: {\n value: string;\n score: QuoteMetricsScore;\n };\n profitOverMin: {\n value: string;\n percentage: string;\n score: QuoteMetricsScore;\n };\n delivery: {\n retailPrice?: string;\n costPrice?: string;\n cleaningNeeded: boolean;\n cleaningNeededRetailPrice: string;\n transportationToPortRetailPrice?: string;\n };\n costs: {\n finalCostPrice: string;\n extras: string;\n delivery: string;\n };\n};\n\ntype BaseQuote = {\n opportunityId: string;\n preferredLanguage: string;\n clientNotes?: string;\n publicNotes?: string;\n} & (\n | {\n type: OpportunityType.LEASING;\n calculatorInput: LeasingCalculatorInput;\n calculatorOutput: LeasingCalculatorOutput;\n rating?: MatchingRuleValue;\n }\n | {\n type: OpportunityType.SALES;\n calculatorInput: SalesCalculatorInput;\n calculatorOutput: SalesCalculatorOutput;\n rating?: MatchingRuleValue;\n }\n);\n\nexport type NewQuote = BaseQuote & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n modifiedAt?: undefined;\n modifiedBy?: undefined;\n active: true;\n};\n\nexport type Quote = BaseQuote & {\n id: string;\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n validationBy?: string;\n validationAt?: string;\n cancelledBy?: string;\n cancelledAt?: string;\n customerFeedbackAt?: string;\n customerFeedbackBy?: string;\n managerFeedbackAt?: string;\n managerFeedbackBy?: string;\n version: number;\n status: QuoteStatus;\n proformaPdf?: AttachmentValue;\n quotePdf?: AttachmentValue;\n salesAgreementPdf?: AttachmentValue;\n active: boolean;\n contactId: string;\n vehicleId: string;\n organizationId: string;\n};\n\nexport type QuoteUpdate = {\n status?: QuoteStatus;\n active?: boolean;\n};\n\nexport type CalculatorLeasingIO = {\n output: LeasingCalculatorOutput;\n input: LeasingCalculatorInput;\n rating?: MatchingRuleValue;\n};\nexport type CalculatorSalesIO = {\n output: SalesCalculatorOutput;\n input: SalesCalculatorInput;\n rating?: MatchingRuleValue;\n};\nexport type CalculatorQuoteIO = CalculatorLeasingIO | CalculatorSalesIO;\n\nexport type UsedVehiclesSalesParams = {\n id: string;\n modifiedAt: string;\n modifiedBy: string;\n countryCode: 'be';\n name: string;\n profitabilityDealGap: string;\n exaDocumentCosts: string;\n delivery?: DeliveryParams;\n};\n\nexport type QuoteSettings = LeasingQuoteParams | UsedVehiclesSalesParams;\n\nexport type DeliveryLocationValue = Omit<LocationValue, 'addressLine1' | 'city'> & {\n addressLine1: string;\n city: string;\n};\n\nexport type DeliveryRoutesRequest = {\n origin: DeliveryLocationValue;\n destination: DeliveryLocationValue;\n};\n\ntype BaseCommission = {\n opportunityId: string;\n\n estimatedAmount: string;\n estimatedPaidAt: string;\n paidAmount?: string;\n paidAt?: string;\n\n notes?: string;\n};\n\nexport type NewCommission = BaseCommission & {};\n\nexport type Commission = BaseCommission & {\n stockNumber: string;\n vehicleId: string;\n\n branchId: string;\n currency: string;\n\n modifiedAt: string;\n modifiedBy: string;\n};\n\nexport type NewQuoteValidator = {\n userId: string;\n countryCode: string;\n type: OpportunityType;\n canValidateOwn?: boolean;\n};\n\nexport type QuoteValidator = NewQuoteValidator & {\n createdAt: string;\n};\n\nexport type QuoteValidatorUpdate = {\n canValidateOwn: boolean;\n};\n"]}
1
+ {"version":3,"file":"quotes.js","sourceRoot":"/","sources":["types/quotes.ts"],"names":[],"mappings":"AAeA,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,+CAA+B,CAAA;IAC/B,iCAAiB,CAAA;AACnB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED,MAAM,CAAN,IAAY,WASX;AATD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;IAC3B,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,mDAAoC,CAAA;IACpC,mDAAoC,CAAA;AACtC,CAAC,EATW,WAAW,KAAX,WAAW,QAStB;AAED,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;IACnB,kCAAa,CAAA;AACf,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AACD,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,mCAAkB,CAAA;IAClB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;AACf,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,qCAAsB,CAAA;AACxB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,wCAAkB,CAAA;IAClB,6CAAuB,CAAA;AACzB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B","sourcesContent":["import { AttachmentValue, LocationValue } from '@bisondesk/commons-sdk/types';\nimport { OpportunityType } from '../constants';\nimport { DeliveryParams } from './delivery-settings';\nimport {\n CustomLeasingQuoteExtraInput,\n CustomSalesQuoteExtraInput,\n LeasingDeliveryPackageInput,\n LeasingQuoteExtraInput,\n LeasingQuoteParams,\n SalesQuoteExtraInput,\n} from './leasing-settings';\nimport { MatchingRuleValue } from './roi-ratings';\nimport { PricePercentageMode } from './utils';\nimport { Vehicle } from './vehicles';\n\nexport enum QuoteActions {\n ACCEPT = 'accept',\n VALIDATE = 'validate',\n DONWLOAD_PDFS = 'download-pdfs',\n CANCEL = 'cancel',\n}\n\nexport enum QuoteStatus {\n CREATED = 'created',\n VALIDATED = 'validated',\n INVALIDATED = 'invalidated',\n ACCEPTED = 'accepted',\n REJECTED = 'rejected',\n CANCELLED = 'cancelled',\n MANAGER_REJECTED = 'managerRejected',\n MANAGER_ACCEPTED = 'managerAccepted',\n}\n\nexport enum QuoteMetricsScore {\n DANGER = 'danger',\n NEUTRAL = 'neutral',\n GOOD = 'good',\n}\nexport enum DeliveryTypes {\n PICK_UP = 'pickUp',\n ADDRESS = 'address',\n PORT = 'port',\n}\n\nexport enum SpoilerInfo {\n MOUNT = 'mount',\n UNMOUNT = 'unmount',\n NO_ACTION = 'noAction',\n}\n\nexport enum TransportationMode {\n BY_ROAD = 'byRoad',\n ON_LOW_BED = 'onLowBed',\n}\n\ntype BaseQuoteCalculatorInput = {\n branch: string;\n branchCountry: string;\n customerCountry: string;\n customerVatNumber?: string;\n vehicleCategory: string;\n bodywork?: string;\n currency: string;\n};\n\n// Sent by the Frontend to bootstrap the calculator\nexport type LeasingCalculatorDefaultInput = BaseQuoteCalculatorInput & {\n salesPrice: string;\n purchasePrice: string;\n deliveryPackage?: LeasingQuoteExtraInput;\n};\n\nexport type LeasingCalculatorInput = BaseQuoteCalculatorInput & {\n localLicensePlate: boolean;\n vanCourier: boolean;\n leasing: {\n salesPrice: string;\n deposit: string;\n depositMode: PricePercentageMode;\n depositPercentage: string;\n residual: string;\n residualMode: PricePercentageMode;\n residualPercentage: string;\n startupFee: string;\n startupFeeMode: PricePercentageMode;\n startupFeePercentage: string;\n interestRate: string;\n purchasePrice: string;\n duration: number;\n contractStartDate: string;\n };\n bank: {\n interestRate: string;\n deposit: string;\n depositMode: PricePercentageMode;\n depositPercentage: string;\n residual: string;\n residualMode: PricePercentageMode;\n residualPercentage: string;\n duration: number;\n salesPrice: string;\n };\n taxes: {\n yearlyRoadTax: boolean;\n oneTimeRoadTax: boolean;\n margin: string; //Non Editable, copies the value insurance > margin\n };\n insurance: {\n margin: string;\n civilLiabilities: boolean;\n allRisks: boolean;\n specialTechnicalInsurance: boolean;\n roadAssistance: boolean;\n };\n deliveryPackage?: LeasingDeliveryPackageInput;\n extras: LeasingQuoteExtraInput[];\n customRequests: CustomLeasingQuoteExtraInput[];\n};\n\ntype BaseDeliveryType = {\n agreedPrice: string;\n spoiler?: SpoilerInfo;\n stackingVehicleNeeded?: boolean;\n detailsStacking?: string;\n};\n\nexport type PickUpDeliveryType = BaseDeliveryType & {\n type: DeliveryTypes.PICK_UP;\n urgent: boolean;\n transportationMode?: TransportationMode;\n detailsBorderCrossing?: string;\n technicalControlNeeded: boolean;\n insuranceNeeded: boolean;\n transitPlateBelgiumNeeded: boolean;\n transitPlateAustriaNeeded: boolean;\n licensePlateNeeded: boolean;\n dateOfPickUpByCustomer?: string;\n};\n\nexport type AddressDeliveryType = BaseDeliveryType & {\n type: DeliveryTypes.ADDRESS;\n address: LocationValue;\n distanceKm: string;\n technicalControlNeeded: boolean;\n};\n\nexport type PortDeliverytype = BaseDeliveryType & {\n type: DeliveryTypes.PORT;\n portOriginId: string;\n portDestination?: string;\n shippingCompany?: string;\n portToPortCostPrice: string;\n portToPortMargin: string;\n};\n\n// Sent by the Frontend to bootstrap the calculator\nexport type SalesCalculatorDefaultInput = BaseQuoteCalculatorInput & {\n vehicle: {\n agreedPrice: string;\n comissionCost: string;\n id: string;\n };\n extras: SalesQuoteExtraInput[];\n customRequests: CustomSalesQuoteExtraInput[];\n};\n\nexport type SalesCalculatorInput = BaseQuoteCalculatorInput & {\n vehicle: {\n vatRate: string;\n agreedPrice: string;\n minimumPrice: string;\n purchasePrice: string; //TODO don't send to Frontend but store in DB\n comissionCost: string;\n id: string;\n };\n delivery?: PickUpDeliveryType | AddressDeliveryType | PortDeliverytype;\n extras: SalesQuoteExtraInput[];\n customRequests: CustomSalesQuoteExtraInput[];\n};\n\nexport type SalesQuoteRuleInput = {\n input: SalesCalculatorInput;\n output: SalesCalculatorOutput;\n vehicle: Vehicle;\n stockAge: number;\n};\n\nexport type LeasingCalculatorOutput = {\n vatApplicable: boolean;\n installment: string;\n installmentPrintable: string;\n totalMonthlyAmount: string;\n monthlyTaxesInsurance: string;\n beforeDelivery: string;\n financingAmount: string;\n settingId: string;\n totalRetailAmount: string;\n finalSalesPrice: string;\n roi: {\n value: string;\n target: string;\n perYear: string;\n difference: string;\n score?: QuoteMetricsScore;\n };\n cashflow: {\n deficit: string;\n balanced: boolean;\n score: QuoteMetricsScore;\n };\n profitability: {\n leasing: string;\n vehicle: string;\n total: string;\n score: QuoteMetricsScore;\n };\n taxes: {\n yearlyRetailPrice: string;\n monthlyRetailPrice: string;\n yearlyRoadTax: string;\n oneTimeRoadTax: string;\n };\n insurance: {\n yearlyRetailPrice: string;\n monthlyRetailPrice: string;\n civilLiabilities: string;\n allRisks: string;\n specialTechnicalInsurance: string;\n roadAssistance: string;\n };\n costs: {\n financingAmount: string;\n finalCostPrice: string;\n monhtly: string;\n trackAndTrace: string;\n };\n};\n\nexport type SalesCalculatorOutput = {\n totalRetailAmount: string;\n totalRetailAmountExclVat: string;\n retailAmounts: {\n vehicle: string;\n delivery: string;\n extras: string;\n };\n roi: { value: string; score?: QuoteMetricsScore };\n profit: {\n value: string;\n score: QuoteMetricsScore;\n };\n profitOverMin: {\n value: string;\n percentage: string;\n score: QuoteMetricsScore;\n };\n delivery: {\n retailPrice?: string;\n costPrice?: string;\n cleaningNeeded: boolean;\n cleaningNeededRetailPrice: string;\n transportationToPortRetailPrice?: string;\n };\n costs: {\n finalCostPrice: string;\n extras: string;\n delivery: string;\n };\n};\n\ntype BaseQuote = {\n opportunityId: string;\n preferredLanguage: string;\n clientNotes?: string;\n publicNotes?: string;\n} & (\n | {\n type: OpportunityType.LEASING;\n calculatorInput: LeasingCalculatorInput;\n calculatorOutput: LeasingCalculatorOutput;\n rating?: MatchingRuleValue;\n }\n | {\n type: OpportunityType.SALES;\n calculatorInput: SalesCalculatorInput;\n calculatorOutput: SalesCalculatorOutput;\n rating?: MatchingRuleValue;\n }\n);\n\nexport type NewQuote = BaseQuote & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n modifiedAt?: undefined;\n modifiedBy?: undefined;\n active: true;\n};\n\nexport type Quote = BaseQuote & {\n id: string;\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n validationBy?: string;\n validationAt?: string;\n cancelledBy?: string;\n cancelledAt?: string;\n customerFeedbackAt?: string;\n customerFeedbackBy?: string;\n managerFeedbackAt?: string;\n managerFeedbackBy?: string;\n version: number;\n status: QuoteStatus;\n proformaPdf?: AttachmentValue;\n quotePdf?: AttachmentValue;\n salesAgreementPdf?: AttachmentValue;\n active: boolean;\n contactId: string;\n vehicleId: string;\n organizationId: string;\n};\n\nexport type QuoteUpdate = {\n status?: QuoteStatus;\n active?: boolean;\n};\n\nexport type CalculatorLeasingIO = {\n output: LeasingCalculatorOutput;\n input: LeasingCalculatorInput;\n rating?: MatchingRuleValue;\n};\nexport type CalculatorSalesIO = {\n output: SalesCalculatorOutput;\n input: SalesCalculatorInput;\n rating?: MatchingRuleValue;\n};\nexport type CalculatorQuoteIO = CalculatorLeasingIO | CalculatorSalesIO;\n\nexport type UsedVehiclesSalesParams = {\n id: string;\n modifiedAt: string;\n modifiedBy: string;\n countryCode: 'be';\n name: string;\n profitabilityDealGap: string;\n exaDocumentCosts: string;\n delivery?: DeliveryParams;\n};\n\nexport type QuoteSettings = LeasingQuoteParams | UsedVehiclesSalesParams;\n\nexport type DeliveryLocationValue = Omit<LocationValue, 'addressLine1' | 'city'> & {\n addressLine1: string;\n city: string;\n};\n\nexport type DeliveryRoutesRequest = {\n origin: DeliveryLocationValue;\n destination: DeliveryLocationValue;\n};\n\ntype BaseCommission = {\n opportunityId: string;\n\n estimatedAmount: string;\n estimatedPaidAt: string;\n paidAmount?: string;\n paidAt?: string;\n\n notes?: string;\n};\n\nexport type NewCommission = BaseCommission & {};\n\nexport type Commission = BaseCommission & {\n stockNumber: string;\n vehicleId: string;\n\n branchId: string;\n currency: string;\n\n modifiedAt: string;\n modifiedBy: string;\n};\n\nexport type NewQuoteValidator = {\n userId: string;\n countryCode: string;\n type: OpportunityType;\n canValidateOwn?: boolean;\n};\n\nexport type QuoteValidator = NewQuoteValidator & {\n createdAt: string;\n};\n\nexport type QuoteValidatorUpdate = {\n canValidateOwn: boolean;\n};\n"]}