@autologix-engineering/shared 1.2.380 → 1.2.381
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.
- package/package.json +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/commands/src/generate.pdf.invoice.d.ts +0 -1
- package/src/lib/commands/src/generate.pdf.invoice.js.map +1 -1
- package/src/lib/contract-state/src/contract.date.change.display.d.ts +27 -0
- package/src/lib/contract-state/src/contract.date.change.display.js +47 -0
- package/src/lib/contract-state/src/contract.date.change.display.js.map +1 -0
- package/src/lib/contract-state/src/contract.date.change.window.d.ts +63 -0
- package/src/lib/contract-state/src/contract.date.change.window.js +85 -0
- package/src/lib/contract-state/src/contract.date.change.window.js.map +1 -0
- package/src/lib/contract-state/src/index.d.ts +2 -0
- package/src/lib/contract-state/src/index.js +2 -0
- package/src/lib/contract-state/src/index.js.map +1 -1
- package/src/lib/data-transfer-objects/src/add.ltr.payout.rows.dto.d.ts +86 -0
- package/src/lib/data-transfer-objects/src/add.ltr.payout.rows.dto.js +153 -0
- package/src/lib/data-transfer-objects/src/add.ltr.payout.rows.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/calculate.non.pool.ltr.invoice.data.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/calculate.non.pool.ltr.invoice.data.dto.js +5 -0
- package/src/lib/data-transfer-objects/src/calculate.non.pool.ltr.invoice.data.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/check.vehicle.allocation.conflicts.dto.d.ts +19 -0
- package/src/lib/data-transfer-objects/src/check.vehicle.allocation.conflicts.dto.js +38 -0
- package/src/lib/data-transfer-objects/src/check.vehicle.allocation.conflicts.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/command/add.business.associate.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/command/add.business.associate.dto.js +7 -1
- package/src/lib/data-transfer-objects/src/command/add.business.associate.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/command/add.ltr.vehicle.master.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/command/add.ltr.vehicle.master.dto.js +5 -0
- package/src/lib/data-transfer-objects/src/command/add.ltr.vehicle.master.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/command/process.ext.request.trip.sheet.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/command/process.ext.request.trip.sheet.dto.js +8 -1
- package/src/lib/data-transfer-objects/src/command/process.ext.request.trip.sheet.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/command/update.business.associate.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/command/update.business.associate.dto.js +7 -1
- package/src/lib/data-transfer-objects/src/command/update.business.associate.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/command/update.client.persona.contract.file.dto.d.ts +6 -0
- package/src/lib/data-transfer-objects/src/command/update.client.persona.contract.file.dto.js +6 -1
- package/src/lib/data-transfer-objects/src/command/update.client.persona.contract.file.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/command/update.contract.terms.dto.d.ts +8 -0
- package/src/lib/data-transfer-objects/src/command/update.contract.terms.dto.js +6 -1
- package/src/lib/data-transfer-objects/src/command/update.contract.terms.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/command/update.ltr.request.dto.d.ts +1 -1
- package/src/lib/data-transfer-objects/src/command/update.ltr.request.dto.js +1 -0
- package/src/lib/data-transfer-objects/src/command/update.ltr.request.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/create.consolidated.invoice.dto.d.ts +4 -0
- package/src/lib/data-transfer-objects/src/create.consolidated.invoice.dto.js +21 -1
- package/src/lib/data-transfer-objects/src/create.consolidated.invoice.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/create.dispatch.dto.d.ts +4 -0
- package/src/lib/data-transfer-objects/src/create.dispatch.dto.js +21 -1
- package/src/lib/data-transfer-objects/src/create.dispatch.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/create.ext.request.new.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/create.ext.request.new.dto.js +5 -0
- package/src/lib/data-transfer-objects/src/create.ext.request.new.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/create.report.dto.js +1 -1
- package/src/lib/data-transfer-objects/src/create.report.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/duties.query.dto.d.ts +14 -0
- package/src/lib/data-transfer-objects/src/duties.query.dto.js +5 -0
- package/src/lib/data-transfer-objects/src/duties.query.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/gatekeeper/create.onboarding.user.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/create.onboarding.user.dto.js +8 -1
- package/src/lib/data-transfer-objects/src/gatekeeper/create.onboarding.user.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/gatekeeper/get.registered.user.ltr.dto.d.ts +7 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/get.registered.user.ltr.dto.js +21 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/get.registered.user.ltr.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/get.user.by.phone.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/get.user.by.phone.dto.js +8 -1
- package/src/lib/data-transfer-objects/src/gatekeeper/get.user.by.phone.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/gatekeeper/index.d.ts +2 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/index.js +2 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/index.js.map +1 -1
- package/src/lib/data-transfer-objects/src/gatekeeper/send.email.login.otp.dto.d.ts +72 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/send.email.login.otp.dto.js +36 -1
- package/src/lib/data-transfer-objects/src/gatekeeper/send.email.login.otp.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/gatekeeper/send.ltr.sign.off.otp.dto.d.ts +17 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/send.ltr.sign.off.otp.dto.js +29 -0
- package/src/lib/data-transfer-objects/src/gatekeeper/send.ltr.sign.off.otp.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.contract.date.changes.dto.d.ts +59 -0
- package/src/lib/data-transfer-objects/src/get.contract.date.changes.dto.js +98 -0
- package/src/lib/data-transfer-objects/src/get.contract.date.changes.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ext.rate.card.dto.d.ts +40 -0
- package/src/lib/data-transfer-objects/src/get.ext.rate.card.dto.js +75 -0
- package/src/lib/data-transfer-objects/src/get.ext.rate.card.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ltr.booking.day.wise.logs.dto.d.ts +29 -0
- package/src/lib/data-transfer-objects/src/get.ltr.booking.day.wise.logs.dto.js +32 -0
- package/src/lib/data-transfer-objects/src/get.ltr.booking.day.wise.logs.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.bookings.dto.d.ts +5 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.bookings.dto.js +17 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.bookings.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.monthly.logs.dto.d.ts +18 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.monthly.logs.dto.js +33 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.monthly.logs.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.monthly.sign.off.preview.dto.d.ts +24 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.monthly.sign.off.preview.dto.js +33 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.monthly.sign.off.preview.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.payout.rows.dto.d.ts +79 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.payout.rows.dto.js +58 -0
- package/src/lib/data-transfer-objects/src/get.ltr.driver.payout.rows.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ltr.payout.row.audit.dto.d.ts +31 -0
- package/src/lib/data-transfer-objects/src/get.ltr.payout.row.audit.dto.js +42 -0
- package/src/lib/data-transfer-objects/src/get.ltr.payout.row.audit.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ltr.sign.off.config.dto.d.ts +20 -0
- package/src/lib/data-transfer-objects/src/get.ltr.sign.off.config.dto.js +20 -0
- package/src/lib/data-transfer-objects/src/get.ltr.sign.off.config.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ltr.vehicle.master.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/get.ltr.vehicle.master.dto.js +9 -2
- package/src/lib/data-transfer-objects/src/get.ltr.vehicle.master.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/gst.dto.d.ts +9 -4
- package/src/lib/data-transfer-objects/src/gst.dto.js +9 -1
- package/src/lib/data-transfer-objects/src/gst.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/index.d.ts +19 -3
- package/src/lib/data-transfer-objects/src/index.js +19 -3
- package/src/lib/data-transfer-objects/src/index.js.map +1 -1
- package/src/lib/data-transfer-objects/src/passenger.persona.custom.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/passenger.persona.custom.dto.js +6 -1
- package/src/lib/data-transfer-objects/src/passenger.persona.custom.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/sign.off.ltr.payout.entry.dto.d.ts +44 -0
- package/src/lib/data-transfer-objects/src/sign.off.ltr.payout.entry.dto.js +51 -0
- package/src/lib/data-transfer-objects/src/sign.off.ltr.payout.entry.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/sign.off.ltr.payout.month.dto.d.ts +78 -0
- package/src/lib/data-transfer-objects/src/sign.off.ltr.payout.month.dto.js +71 -0
- package/src/lib/data-transfer-objects/src/sign.off.ltr.payout.month.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/submit.ltr.payout.rows.dto.d.ts +15 -0
- package/src/lib/data-transfer-objects/src/submit.ltr.payout.rows.dto.js +5 -0
- package/src/lib/data-transfer-objects/src/submit.ltr.payout.rows.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/update.global.config.dto.d.ts +5 -1
- package/src/lib/data-transfer-objects/src/update.global.config.dto.js +23 -1
- package/src/lib/data-transfer-objects/src/update.global.config.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/update.ltr.log.confirmation.config.dto.d.ts +6 -0
- package/src/lib/data-transfer-objects/src/update.ltr.log.confirmation.config.dto.js +20 -0
- package/src/lib/data-transfer-objects/src/update.ltr.log.confirmation.config.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/update.ltr.payout.rows.dto.d.ts +18 -0
- package/src/lib/data-transfer-objects/src/update.ltr.payout.rows.dto.js +20 -0
- package/src/lib/data-transfer-objects/src/update.ltr.payout.rows.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/update.pickup.detection.config.dto.d.ts +7 -0
- package/src/lib/data-transfer-objects/src/update.pickup.detection.config.dto.js +22 -0
- package/src/lib/data-transfer-objects/src/update.pickup.detection.config.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/update.vehicle.allocation.conflict.window.dto.d.ts +15 -0
- package/src/lib/data-transfer-objects/src/update.vehicle.allocation.conflict.window.dto.js +29 -0
- package/src/lib/data-transfer-objects/src/update.vehicle.allocation.conflict.window.dto.js.map +1 -0
- package/src/lib/enums/src/alert.command.types.js +1 -1
- package/src/lib/enums/src/alert.command.types.js.map +1 -1
- package/src/lib/enums/src/business.associate.default.fields.json.js +26 -18
- package/src/lib/enums/src/business.associate.default.fields.json.js.map +1 -1
- package/src/lib/enums/src/city.state.mapping.js +2 -2
- package/src/lib/enums/src/command.type.enum.d.ts +8 -1
- package/src/lib/enums/src/command.type.enum.js +8 -1
- package/src/lib/enums/src/command.type.enum.js.map +1 -1
- package/src/lib/enums/src/index.d.ts +8 -1
- package/src/lib/enums/src/index.js +8 -1
- package/src/lib/enums/src/index.js.map +1 -1
- package/src/lib/enums/src/login.variant.enum.d.ts +9 -0
- package/src/lib/enums/src/login.variant.enum.js +11 -0
- package/src/lib/enums/src/login.variant.enum.js.map +1 -0
- package/src/lib/enums/src/ltr.font.enum.d.ts +5 -0
- package/src/lib/enums/src/ltr.font.enum.js +7 -0
- package/src/lib/enums/src/ltr.font.enum.js.map +1 -0
- package/src/lib/enums/src/ltr.payout.enum.d.ts +67 -0
- package/src/lib/enums/src/ltr.payout.enum.js +74 -0
- package/src/lib/enums/src/ltr.payout.enum.js.map +1 -0
- package/src/lib/enums/src/model.enum.d.ts +9 -1
- package/src/lib/enums/src/model.enum.js +8 -0
- package/src/lib/enums/src/model.enum.js.map +1 -1
- package/src/lib/enums/src/others.default.data.js +5 -0
- package/src/lib/enums/src/others.default.data.js.map +1 -1
- package/src/lib/enums/src/otp.scope.enum.d.ts +16 -0
- package/src/lib/enums/src/otp.scope.enum.js +18 -0
- package/src/lib/enums/src/otp.scope.enum.js.map +1 -0
- package/src/lib/enums/src/pickup.detection.mode.enum.d.ts +5 -0
- package/src/lib/enums/src/pickup.detection.mode.enum.js +7 -0
- package/src/lib/enums/src/pickup.detection.mode.enum.js.map +1 -0
- package/src/lib/enums/src/query.type.enum.d.ts +12 -2
- package/src/lib/enums/src/query.type.enum.js +12 -1
- package/src/lib/enums/src/query.type.enum.js.map +1 -1
- package/src/lib/enums/src/report.module.type.enum.d.ts +5 -1
- package/src/lib/enums/src/report.module.type.enum.js +4 -0
- package/src/lib/enums/src/report.module.type.enum.js.map +1 -1
- package/src/lib/enums/src/retry.task.enum.d.ts +28 -0
- package/src/lib/enums/src/retry.task.enum.js +31 -0
- package/src/lib/enums/src/retry.task.enum.js.map +1 -0
- package/src/lib/enums/src/state.full.name.number.code.map.js +4 -0
- package/src/lib/enums/src/state.full.name.number.code.map.js.map +1 -1
- package/src/lib/enums/src/trip.file.type.enum.d.ts +2 -1
- package/src/lib/enums/src/trip.file.type.enum.js +1 -0
- package/src/lib/enums/src/trip.file.type.enum.js.map +1 -1
- package/src/lib/enums/src/vehicle.allocation.conflict.enum.d.ts +65 -0
- package/src/lib/enums/src/vehicle.allocation.conflict.enum.js +71 -0
- package/src/lib/enums/src/vehicle.allocation.conflict.enum.js.map +1 -0
- package/src/lib/models/src/auth.profile.model.d.ts +13 -0
- package/src/lib/models/src/auth.profile.model.js +7 -0
- package/src/lib/models/src/auth.profile.model.js.map +1 -1
- package/src/lib/models/src/ba.payout.row.model.d.ts +24 -0
- package/src/lib/models/src/ba.payout.row.model.js.map +1 -1
- package/src/lib/models/src/business.associate.model.d.ts +6 -1
- package/src/lib/models/src/business.associate.model.js +2 -0
- package/src/lib/models/src/business.associate.model.js.map +1 -1
- package/src/lib/models/src/client.configuration.model.d.ts +12 -1
- package/src/lib/models/src/client.configuration.model.js +5 -0
- package/src/lib/models/src/client.configuration.model.js.map +1 -1
- package/src/lib/models/src/client.contract.date.change.model.d.ts +80 -0
- package/src/lib/models/src/client.contract.date.change.model.js +25 -0
- package/src/lib/models/src/client.contract.date.change.model.js.map +1 -0
- package/src/lib/models/src/configurations.activity.log.model.d.ts +42 -0
- package/src/lib/models/src/configurations.activity.log.model.js +15 -0
- package/src/lib/models/src/configurations.activity.log.model.js.map +1 -0
- package/src/lib/models/src/configurations.model.d.ts +22 -2
- package/src/lib/models/src/configurations.model.js +15 -0
- package/src/lib/models/src/configurations.model.js.map +1 -1
- package/src/lib/models/src/gst.model.d.ts +12 -2
- package/src/lib/models/src/gst.model.js +1 -0
- package/src/lib/models/src/gst.model.js.map +1 -1
- package/src/lib/models/src/index.d.ts +10 -1
- package/src/lib/models/src/index.js +10 -1
- package/src/lib/models/src/index.js.map +1 -1
- package/src/lib/models/src/ltr.log.confirmation.model.d.ts +30 -0
- package/src/lib/models/src/ltr.log.confirmation.model.js +15 -0
- package/src/lib/models/src/ltr.log.confirmation.model.js.map +1 -0
- package/src/lib/models/src/ltr.payout.model.d.ts +37 -2
- package/src/lib/models/src/ltr.payout.model.js +22 -0
- package/src/lib/models/src/ltr.payout.model.js.map +1 -1
- package/src/lib/models/src/ltr.payout.month.sign.off.model.d.ts +85 -0
- package/src/lib/models/src/ltr.payout.month.sign.off.model.js +28 -0
- package/src/lib/models/src/ltr.payout.month.sign.off.model.js.map +1 -0
- package/src/lib/models/src/ltr.payout.row.audit.model.d.ts +44 -0
- package/src/lib/models/src/ltr.payout.row.audit.model.js +22 -0
- package/src/lib/models/src/ltr.payout.row.audit.model.js.map +1 -0
- package/src/lib/models/src/ltr.payout.row.group.model.d.ts +73 -0
- package/src/lib/models/src/ltr.payout.row.group.model.js +25 -0
- package/src/lib/models/src/ltr.payout.row.group.model.js.map +1 -0
- package/src/lib/models/src/ltr.payout.row.image.model.d.ts +34 -0
- package/src/lib/models/src/ltr.payout.row.image.model.js +11 -0
- package/src/lib/models/src/ltr.payout.row.image.model.js.map +1 -0
- package/src/lib/models/src/ltr.sign.off.otp.model.d.ts +40 -0
- package/src/lib/models/src/ltr.sign.off.otp.model.js +17 -0
- package/src/lib/models/src/ltr.sign.off.otp.model.js.map +1 -0
- package/src/lib/models/src/ltr.vehicle.master.model.d.ts +2 -0
- package/src/lib/models/src/ltr.vehicle.master.model.js +1 -0
- package/src/lib/models/src/ltr.vehicle.master.model.js.map +1 -1
- package/src/lib/models/src/passenger.persona.model.d.ts +18 -2
- package/src/lib/models/src/passenger.persona.model.js +8 -0
- package/src/lib/models/src/passenger.persona.model.js.map +1 -1
- package/src/lib/models/src/request.model.d.ts +2 -0
- package/src/lib/models/src/request.model.js +1 -0
- package/src/lib/models/src/request.model.js.map +1 -1
- package/src/lib/models/src/retry.task.model.d.ts +56 -0
- package/src/lib/models/src/retry.task.model.js +26 -0
- package/src/lib/models/src/retry.task.model.js.map +1 -0
- package/src/lib/models/src/white.label.config.model.d.ts +6 -2
- package/src/lib/models/src/white.label.config.model.js +2 -0
- package/src/lib/models/src/white.label.config.model.js.map +1 -1
- package/src/lib/routes/src/command.registry.routes.d.ts +7 -0
- package/src/lib/routes/src/command.registry.routes.js +7 -0
- package/src/lib/routes/src/command.registry.routes.js.map +1 -1
- package/src/lib/routes/src/gatekeeper.routes.d.ts +2 -0
- package/src/lib/routes/src/gatekeeper.routes.js +2 -0
- package/src/lib/routes/src/gatekeeper.routes.js.map +1 -1
- package/src/lib/routes/src/query.service.routes.d.ts +11 -1
- package/src/lib/routes/src/query.service.routes.js +12 -1
- package/src/lib/routes/src/query.service.routes.js.map +1 -1
- package/src/lib/utilities/src/ba.payout.workshop.days.d.ts +77 -0
- package/src/lib/utilities/src/ba.payout.workshop.days.js +109 -0
- package/src/lib/utilities/src/ba.payout.workshop.days.js.map +1 -0
- package/src/lib/utilities/src/financial.year.d.ts +83 -0
- package/src/lib/utilities/src/financial.year.js +145 -0
- package/src/lib/utilities/src/financial.year.js.map +1 -0
- package/src/lib/utilities/src/index.d.ts +9 -2
- package/src/lib/utilities/src/index.js +9 -2
- package/src/lib/utilities/src/index.js.map +1 -1
- package/src/lib/utilities/src/invoice.generation.alert.util.d.ts +1 -0
- package/src/lib/utilities/src/invoice.generation.alert.util.js +7 -2
- package/src/lib/utilities/src/invoice.generation.alert.util.js.map +1 -1
- package/src/lib/utilities/src/ltr.cycle.month.index.d.ts +14 -0
- package/src/lib/utilities/src/ltr.cycle.month.index.js +22 -0
- package/src/lib/utilities/src/ltr.cycle.month.index.js.map +1 -0
- package/src/lib/utilities/src/ltr.payout.row.key.d.ts +43 -0
- package/src/lib/utilities/src/ltr.payout.row.key.js +78 -0
- package/src/lib/utilities/src/ltr.payout.row.key.js.map +1 -0
- package/src/lib/utilities/src/normalize.phone.number.d.ts +17 -0
- package/src/lib/utilities/src/normalize.phone.number.js +45 -0
- package/src/lib/utilities/src/normalize.phone.number.js.map +1 -0
- package/src/lib/utilities/src/parse.display.date.d.ts +16 -0
- package/src/lib/utilities/src/parse.display.date.js +43 -0
- package/src/lib/utilities/src/parse.display.date.js.map +1 -0
- package/src/lib/utilities/src/resolve.gst.state.d.ts +23 -0
- package/src/lib/utilities/src/resolve.gst.state.js +38 -0
- package/src/lib/utilities/src/resolve.gst.state.js.map +1 -0
- package/src/lib/utilities/src/vendor.operations.log.d.ts +28 -0
- package/src/lib/utilities/src/vendor.operations.log.js +128 -0
- package/src/lib/utilities/src/vendor.operations.log.js.map +1 -0
- package/src/lib/view-models/src/ext.rate.card.d.ts +114 -0
- package/src/lib/view-models/src/ext.rate.card.js +9 -0
- package/src/lib/view-models/src/ext.rate.card.js.map +1 -0
- package/src/lib/view-models/src/index.d.ts +2 -0
- package/src/lib/view-models/src/index.js +2 -0
- package/src/lib/view-models/src/index.js.map +1 -1
- package/src/lib/view-models/src/public.config.d.ts +6 -1
- package/src/lib/view-models/src/vehicle.allocation.conflict.d.ts +28 -0
- package/src/lib/view-models/src/vehicle.allocation.conflict.js +2 -0
- package/src/lib/view-models/src/vehicle.allocation.conflict.js.map +1 -0
- package/src/lib/data-transfer-objects/src/get.ext.available.ratecards.dto.d.ts +0 -5
- package/src/lib/data-transfer-objects/src/get.ext.available.ratecards.dto.js +0 -19
- package/src/lib/data-transfer-objects/src/get.ext.available.ratecards.dto.js.map +0 -1
- package/src/lib/utilities/src/pick.latest.numbered.invoice.d.ts +0 -21
- package/src/lib/utilities/src/pick.latest.numbered.invoice.js +0 -52
- package/src/lib/utilities/src/pick.latest.numbered.invoice.js.map +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parses the `dd/MM/yyyy` / `dd-MM-yyyy` date strings — with an optional
|
|
3
|
+
* `HH:mm` — that LTR payout rows are stored in.
|
|
4
|
+
*
|
|
5
|
+
* Payout rows keep dates as display strings rather than timestamps (the Excel
|
|
6
|
+
* upload writes them that way and the sheet round-trips them), so every reader
|
|
7
|
+
* has to parse them back. This is the single implementation: it previously
|
|
8
|
+
* existed as three copies that were free to drift apart.
|
|
9
|
+
*
|
|
10
|
+
* Returns null for anything unparseable, including calendar dates that do not
|
|
11
|
+
* exist — `Date` silently rolls 31/02/2026 forward to 03/03/2026, which would
|
|
12
|
+
* otherwise place a row in the wrong month.
|
|
13
|
+
*/
|
|
14
|
+
export function parseDisplayDate(value) {
|
|
15
|
+
if (!value)
|
|
16
|
+
return null;
|
|
17
|
+
const match = String(value)
|
|
18
|
+
.trim()
|
|
19
|
+
.match(/^(\d{2})[-/](\d{2})[-/](\d{4})(?:\s+(\d{2}):(\d{2}))?$/);
|
|
20
|
+
if (!match)
|
|
21
|
+
return null;
|
|
22
|
+
const [, day, month, year, hour, minute] = match;
|
|
23
|
+
const date = new Date(Number(year), Number(month) - 1, Number(day), Number(hour ?? 0), Number(minute ?? 0));
|
|
24
|
+
if (isNaN(date.getTime()))
|
|
25
|
+
return null;
|
|
26
|
+
// Reject impossible calendar dates that Date silently rolls over.
|
|
27
|
+
if (date.getFullYear() !== Number(year) ||
|
|
28
|
+
date.getMonth() !== Number(month) - 1 ||
|
|
29
|
+
date.getDate() !== Number(day)) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return date;
|
|
33
|
+
}
|
|
34
|
+
/** First parsable value, for rows that record the same moment several ways. */
|
|
35
|
+
export function firstParsableDisplayDate(candidates) {
|
|
36
|
+
for (const candidate of candidates) {
|
|
37
|
+
const parsed = parseDisplayDate(candidate);
|
|
38
|
+
if (parsed)
|
|
39
|
+
return parsed;
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=parse.display.date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.display.date.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/parse.display.date.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;SACzB,IAAI,EAAE;SACN,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CACpB,MAAM,CAAC,IAAI,CAAC,EACZ,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,EACX,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EACjB,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CACnB,CAAC;IACF,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,kEAAkE;IAClE,IACC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,EAC7B,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,wBAAwB,CAAC,UAAqB;IAC7D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { City, State } from '../../enums/src/index';
|
|
2
|
+
/** The subset of a GST city entry this resolver needs. */
|
|
3
|
+
interface GstStateCitySource {
|
|
4
|
+
cityName?: City | null;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Resolves the state to store on a GST record.
|
|
8
|
+
*
|
|
9
|
+
* The state is captured on the billing form but was historically never persisted, leaving every
|
|
10
|
+
* consumer to re-derive it from either the GSTIN prefix or the city. Neither source exists for a
|
|
11
|
+
* GST-unregistered record saved without a city, so it is stored instead — and every write path
|
|
12
|
+
* that can change the GSTIN or the cities has to keep it current, or the stored value goes stale.
|
|
13
|
+
*
|
|
14
|
+
* Priority:
|
|
15
|
+
* 1. An explicit state. Only the billing form sends one, and it is also the only form that can
|
|
16
|
+
* omit a GSTIN, so it is the sole source for the case the column exists to cover.
|
|
17
|
+
* 2. The GSTIN's first two digits, which authoritatively encode the state.
|
|
18
|
+
* 3. The city mapping, for payloads carrying neither.
|
|
19
|
+
*
|
|
20
|
+
* Returns null when nothing resolves, which is a legitimate state for the row to be in.
|
|
21
|
+
*/
|
|
22
|
+
export declare const resolveGstState: (explicitState?: State | null, gstin?: string | null, cities?: GstStateCitySource[] | null) => State | null;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { CityStateMapping, GstStatemapping } from '../../enums/src/index';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the state to store on a GST record.
|
|
4
|
+
*
|
|
5
|
+
* The state is captured on the billing form but was historically never persisted, leaving every
|
|
6
|
+
* consumer to re-derive it from either the GSTIN prefix or the city. Neither source exists for a
|
|
7
|
+
* GST-unregistered record saved without a city, so it is stored instead — and every write path
|
|
8
|
+
* that can change the GSTIN or the cities has to keep it current, or the stored value goes stale.
|
|
9
|
+
*
|
|
10
|
+
* Priority:
|
|
11
|
+
* 1. An explicit state. Only the billing form sends one, and it is also the only form that can
|
|
12
|
+
* omit a GSTIN, so it is the sole source for the case the column exists to cover.
|
|
13
|
+
* 2. The GSTIN's first two digits, which authoritatively encode the state.
|
|
14
|
+
* 3. The city mapping, for payloads carrying neither.
|
|
15
|
+
*
|
|
16
|
+
* Returns null when nothing resolves, which is a legitimate state for the row to be in.
|
|
17
|
+
*/
|
|
18
|
+
export const resolveGstState = (explicitState, gstin, cities) => {
|
|
19
|
+
if (explicitState)
|
|
20
|
+
return explicitState;
|
|
21
|
+
const prefix = gstin?.trim()?.slice(0, 2);
|
|
22
|
+
// Typed as a possible miss on purpose: `prefix` is the first two characters
|
|
23
|
+
// of whatever GSTIN was supplied, not necessarily one of the codes the map
|
|
24
|
+
// holds, so the lookup can come back undefined — which the check below
|
|
25
|
+
// already treats as "unresolved" and falls through to the city.
|
|
26
|
+
const fromGstin = prefix
|
|
27
|
+
? GstStatemapping[prefix]
|
|
28
|
+
: undefined;
|
|
29
|
+
if (fromGstin)
|
|
30
|
+
return fromGstin;
|
|
31
|
+
// The legacy cityName/Address columns mirror cities[0] positionally, but for the state any
|
|
32
|
+
// populated city will do — a blank first entry should not lose a state we can still resolve.
|
|
33
|
+
const cityName = (cities ?? [])
|
|
34
|
+
.map((c) => c?.cityName)
|
|
35
|
+
.find((name) => Boolean(name));
|
|
36
|
+
return cityName ? (CityStateMapping[cityName] ?? null) : null;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=resolve.gst.state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.gst.state.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/resolve.gst.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,gBAAgB,EAAE,eAAe,EAAS,MAAM,uBAAuB,CAAC;AAOvF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,aAA4B,EAC5B,KAAqB,EACrB,MAAoC,EACrB,EAAE;IACjB,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,4EAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,gEAAgE;IAChE,MAAM,SAAS,GAAG,MAAM;QACvB,CAAC,CAAE,eAAqD,CAAC,MAAM,CAAC;QAChE,CAAC,CAAC,SAAS,CAAC;IACb,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,2FAA2F;IAC3F,6FAA6F;IAC7F,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;SACvB,IAAI,CAAC,CAAC,IAAI,EAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9C,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { IVendorOperations } from '../../models/src/index';
|
|
2
|
+
/** FutureRecord entity name for a scheduled Operational Information change. */
|
|
3
|
+
export declare const VENDOR_OPERATIONS_UPDATE_ENTITY = "vendor_operations_update";
|
|
4
|
+
type VendorOperationLogKind = 'text' | 'number' | 'bool' | 'date';
|
|
5
|
+
export interface VendorOperationFieldChange {
|
|
6
|
+
label: string;
|
|
7
|
+
oldValue: string;
|
|
8
|
+
newValue: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Renders a stored value the way the grid shows it. Shares are `decimal`
|
|
12
|
+
* columns that Postgres returns as strings, so they are compared as numbers;
|
|
13
|
+
* dates are date-only values stored as the UTC instant of IST midnight.
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatVendorOperationValue(kind: VendorOperationLogKind, raw: unknown): string;
|
|
16
|
+
/** Ties a log line to its grid row; one city can hold several business types. */
|
|
17
|
+
export declare function vendorOperationLogPrefix(cityName?: string | null, businessType?: string | null): string;
|
|
18
|
+
/** A row's rate card id, from the joined relation when present. */
|
|
19
|
+
export declare function vendorOperationRateCardId(row?: Partial<IVendorOperations> | null): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* One entry per field that differs between `before` and `after`. A null
|
|
22
|
+
* `before` means the row is being created, and lists each field that has a
|
|
23
|
+
* value. Rate card names come from `rateCardName` so this stays free of I/O.
|
|
24
|
+
*/
|
|
25
|
+
export declare function diffVendorOperationFields(before: Partial<IVendorOperations> | null, after: Partial<IVendorOperations>, rateCardName: (rateCardId: string) => string | undefined, options?: {
|
|
26
|
+
skipBusinessType?: boolean;
|
|
27
|
+
}): VendorOperationFieldChange[];
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { RateCardField, VendorOperationsField, } from '../../models/src/index';
|
|
2
|
+
import { addIstOffset } from './ist';
|
|
3
|
+
/** FutureRecord entity name for a scheduled Operational Information change. */
|
|
4
|
+
export const VENDOR_OPERATIONS_UPDATE_ENTITY = 'vendor_operations_update';
|
|
5
|
+
/** Every Operational Information field a user can edit, labelled as the form labels it. */
|
|
6
|
+
const VENDOR_OPERATIONS_LOG_FIELDS = [
|
|
7
|
+
{
|
|
8
|
+
key: VendorOperationsField.BusinessType,
|
|
9
|
+
label: 'Business Type',
|
|
10
|
+
kind: 'text',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
key: VendorOperationsField.AccountCode,
|
|
14
|
+
label: 'Account Code',
|
|
15
|
+
kind: 'text',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
key: VendorOperationsField.ClientShare,
|
|
19
|
+
label: 'Client Share',
|
|
20
|
+
kind: 'number',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
key: VendorOperationsField.VendorShare,
|
|
24
|
+
label: 'Vendor Share',
|
|
25
|
+
kind: 'number',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
key: VendorOperationsField.ShareRental,
|
|
29
|
+
label: 'Share Rental',
|
|
30
|
+
kind: 'bool',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
key: VendorOperationsField.ShareExtraKms,
|
|
34
|
+
label: 'Share Extra Kms',
|
|
35
|
+
kind: 'bool',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: VendorOperationsField.ShareFuelSurcharge,
|
|
39
|
+
label: 'Share Fuel Surcharge',
|
|
40
|
+
kind: 'bool',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
key: VendorOperationsField.ShareGgKmsTime,
|
|
44
|
+
label: 'Share GG Kms & Time',
|
|
45
|
+
kind: 'bool',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
key: VendorOperationsField.ShareAddons,
|
|
49
|
+
label: 'Share Addons',
|
|
50
|
+
kind: 'bool',
|
|
51
|
+
},
|
|
52
|
+
{ key: VendorOperationsField.ValidFrom, label: 'Valid From', kind: 'date' },
|
|
53
|
+
{ key: VendorOperationsField.ValidTill, label: 'Valid Till', kind: 'date' },
|
|
54
|
+
];
|
|
55
|
+
/**
|
|
56
|
+
* Renders a stored value the way the grid shows it. Shares are `decimal`
|
|
57
|
+
* columns that Postgres returns as strings, so they are compared as numbers;
|
|
58
|
+
* dates are date-only values stored as the UTC instant of IST midnight.
|
|
59
|
+
*/
|
|
60
|
+
export function formatVendorOperationValue(kind, raw) {
|
|
61
|
+
if (kind === 'bool')
|
|
62
|
+
return raw ? 'Yes' : 'No';
|
|
63
|
+
if (raw === null || raw === undefined || raw === '')
|
|
64
|
+
return '-';
|
|
65
|
+
if (kind === 'date') {
|
|
66
|
+
const _date = raw instanceof Date ? raw : new Date(raw);
|
|
67
|
+
if (Number.isNaN(_date.getTime()))
|
|
68
|
+
return '-';
|
|
69
|
+
const _ist = addIstOffset(_date);
|
|
70
|
+
return `${String(_ist.getUTCDate()).padStart(2, '0')}/${String(_ist.getUTCMonth() + 1).padStart(2, '0')}/${_ist.getUTCFullYear()}`;
|
|
71
|
+
}
|
|
72
|
+
if (kind === 'number') {
|
|
73
|
+
const _num = Number(raw);
|
|
74
|
+
return Number.isNaN(_num) ? '-' : String(_num);
|
|
75
|
+
}
|
|
76
|
+
return String(raw);
|
|
77
|
+
}
|
|
78
|
+
/** Ties a log line to its grid row; one city can hold several business types. */
|
|
79
|
+
export function vendorOperationLogPrefix(cityName, businessType) {
|
|
80
|
+
return `Operational Info - ${cityName ?? '-'} (${businessType ?? '-'})`;
|
|
81
|
+
}
|
|
82
|
+
/** A row's rate card id, from the joined relation when present. */
|
|
83
|
+
export function vendorOperationRateCardId(row) {
|
|
84
|
+
return (row?.[VendorOperationsField.RateCard]?.[RateCardField.RateCardId] ??
|
|
85
|
+
row?.[VendorOperationsField.RateCardId] ??
|
|
86
|
+
null);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* One entry per field that differs between `before` and `after`. A null
|
|
90
|
+
* `before` means the row is being created, and lists each field that has a
|
|
91
|
+
* value. Rate card names come from `rateCardName` so this stays free of I/O.
|
|
92
|
+
*/
|
|
93
|
+
export function diffVendorOperationFields(before, after, rateCardName, options = {}) {
|
|
94
|
+
const changes = [];
|
|
95
|
+
for (const _spec of VENDOR_OPERATIONS_LOG_FIELDS) {
|
|
96
|
+
if (options.skipBusinessType &&
|
|
97
|
+
_spec.key === VendorOperationsField.BusinessType) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const newValue = formatVendorOperationValue(_spec.kind, after?.[_spec.key]);
|
|
101
|
+
if (!before) {
|
|
102
|
+
if (newValue !== '-' && newValue !== 'No') {
|
|
103
|
+
changes.push({ label: _spec.label, oldValue: '-', newValue });
|
|
104
|
+
}
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const oldValue = formatVendorOperationValue(_spec.kind, before[_spec.key]);
|
|
108
|
+
if (oldValue !== newValue) {
|
|
109
|
+
changes.push({ label: _spec.label, oldValue, newValue });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const nameOf = (row, id) => id
|
|
113
|
+
? row?.[VendorOperationsField.RateCard]?.[RateCardField.Name] ||
|
|
114
|
+
rateCardName(id) ||
|
|
115
|
+
'-'
|
|
116
|
+
: '-';
|
|
117
|
+
const oldRateCardId = vendorOperationRateCardId(before);
|
|
118
|
+
const newRateCardId = vendorOperationRateCardId(after);
|
|
119
|
+
if (oldRateCardId !== newRateCardId) {
|
|
120
|
+
changes.push({
|
|
121
|
+
label: 'Rate Card',
|
|
122
|
+
oldValue: nameOf(before, oldRateCardId),
|
|
123
|
+
newValue: nameOf(after, newRateCardId),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return changes;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=vendor.operations.log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vendor.operations.log.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/vendor.operations.log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response shape for the external Rate Card sync (`get_ext_rate_card`).
|
|
3
|
+
*
|
|
4
|
+
* Keys are lower_snake_case by agreement with the booking-website team, and
|
|
5
|
+
* deliberately differ from the internal camelCase models: this is a published
|
|
6
|
+
* contract that outlives any internal rename.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* How `included_kms` on a row must be read. Derived from the rate configuration
|
|
10
|
+
* already held in AutoLogix — no extra setup per rate card:
|
|
11
|
+
*
|
|
12
|
+
* - `Slab` City Local on `RateType.SlabRate` — total for the whole booking.
|
|
13
|
+
* - `Hourly` City Local on `RateType.HourlyRate`, or Packages on
|
|
14
|
+
* `PackageRateType.HourlyBased` — no included KM at all; bill on
|
|
15
|
+
* `per_km_rate`, capped by `max_km_per_hour`.
|
|
16
|
+
* - `Per Day` Outstation, or Packages on `PackageRateType.DayBased` — a
|
|
17
|
+
* per-day limit, never a booking total.
|
|
18
|
+
* - `KM Range` Transfers on `AirportRateType.KmRangeLogic` — the row is one
|
|
19
|
+
* band, `slab_start_km` to `slab_end_km`.
|
|
20
|
+
* - `Trip` Transfers on `AirportRateType.GeneralTransfer` — flat per transfer.
|
|
21
|
+
*/
|
|
22
|
+
export type ExtIncludedKmsBasis = 'Slab' | 'Hourly' | 'Per Day' | 'KM Range' | 'Trip';
|
|
23
|
+
export type ExtRentalType = 'City Local' | 'Outstation' | 'Transfers' | 'Packages';
|
|
24
|
+
/** A charge with no dedicated key, so a new charge type never breaks the schema. */
|
|
25
|
+
export interface IExtAdditionalCharge {
|
|
26
|
+
charge_type: string;
|
|
27
|
+
amount: number;
|
|
28
|
+
}
|
|
29
|
+
/** One rate row: a package priced for one vehicle group in one city. */
|
|
30
|
+
export interface IExtRateCardRow {
|
|
31
|
+
vehicle_type_code_numeric: number;
|
|
32
|
+
vehicle_type_code: string;
|
|
33
|
+
vehicle_type_description: string;
|
|
34
|
+
city_code: number;
|
|
35
|
+
city_name: string;
|
|
36
|
+
rental_type: ExtRentalType;
|
|
37
|
+
rental_type_code: 1 | 2 | 3 | 4;
|
|
38
|
+
package_type: string;
|
|
39
|
+
gst_percentage: number | null;
|
|
40
|
+
base_amount: number | null;
|
|
41
|
+
included_hours: number | null;
|
|
42
|
+
included_kms: number | null;
|
|
43
|
+
included_kms_basis: ExtIncludedKmsBasis;
|
|
44
|
+
/** `KM Range` only — the band this row prices. */
|
|
45
|
+
slab_start_km: number | null;
|
|
46
|
+
slab_end_km: number | null;
|
|
47
|
+
/**
|
|
48
|
+
* Outstation only. AutoLogix prices first/last days differently from middle
|
|
49
|
+
* days; a consumer that bills a multi-day outstation trip off the single
|
|
50
|
+
* `included_kms` will compute the wrong excess, and so the wrong due amount.
|
|
51
|
+
*/
|
|
52
|
+
included_kms_first_last_day: number | null;
|
|
53
|
+
included_kms_middle_day: number | null;
|
|
54
|
+
/** `Hourly` only — the KM allowance that accrues per billed hour. */
|
|
55
|
+
max_km_per_hour: number | null;
|
|
56
|
+
extra_hour_rate: number | null;
|
|
57
|
+
extra_km_rate: number | null;
|
|
58
|
+
per_km_rate: number | null;
|
|
59
|
+
/**
|
|
60
|
+
* Packages and Outstation only.
|
|
61
|
+
*
|
|
62
|
+
* Always null today: AutoLogix has no minimum-days field at any level, so
|
|
63
|
+
* there is nothing truthful to send. Wire it to the new field once it lands
|
|
64
|
+
* rather than defaulting to 1 — auto-invoicing bills off whatever we return.
|
|
65
|
+
*/
|
|
66
|
+
min_days_applicable: number | null;
|
|
67
|
+
min_hours_applicable: number | null;
|
|
68
|
+
day_retention_charges: number | null;
|
|
69
|
+
night_retention_charges: number | null;
|
|
70
|
+
/**
|
|
71
|
+
* Section 6 buffer. `rounding_minutes` is live and is held per
|
|
72
|
+
* (package x vehicle group) — it is NOT a single company-wide 35, so
|
|
73
|
+
* consumers must read it from the row rather than hardcoding it, or their
|
|
74
|
+
* within-buffer decision will disagree with what ARC bills.
|
|
75
|
+
*
|
|
76
|
+
* `rounding_kms` is always null: no KM buffer exists anywhere in AutoLogix
|
|
77
|
+
* billing today (extra KM is charged from the first KM over the limit).
|
|
78
|
+
* Null rather than a hardcoded 10, so no consumer can silently diverge.
|
|
79
|
+
*/
|
|
80
|
+
rounding_minutes: number | null;
|
|
81
|
+
rounding_kms: number | null;
|
|
82
|
+
additional_charges: IExtAdditionalCharge[];
|
|
83
|
+
/** Row-level change key, so a checker sees which rows moved. */
|
|
84
|
+
row_hash: string;
|
|
85
|
+
}
|
|
86
|
+
/** One contract and the rate card behind it. */
|
|
87
|
+
export interface IExtRateCardContract {
|
|
88
|
+
contract_id: string;
|
|
89
|
+
contract_code: number | null;
|
|
90
|
+
customer_code: number | null;
|
|
91
|
+
customer_name: string | null;
|
|
92
|
+
rate_card_id: string;
|
|
93
|
+
rate_card_name: string;
|
|
94
|
+
effective_from_date: string | null;
|
|
95
|
+
effective_to_date: string | null;
|
|
96
|
+
/** `effective_to_date - effective_from_date`, in days. Null when open-ended. */
|
|
97
|
+
validity_days: number | null;
|
|
98
|
+
published: boolean;
|
|
99
|
+
last_updated_at: string | null;
|
|
100
|
+
/**
|
|
101
|
+
* Card-level change key. Equal hash means nothing to review, so the
|
|
102
|
+
* maker-checker step needs no field-by-field diff.
|
|
103
|
+
*/
|
|
104
|
+
rate_card_hash: string;
|
|
105
|
+
rates: IExtRateCardRow[];
|
|
106
|
+
}
|
|
107
|
+
export interface IExtRateCardSyncResponse {
|
|
108
|
+
generated_at: string;
|
|
109
|
+
/** Contracts matching the filter, before paging. */
|
|
110
|
+
total_contracts: number;
|
|
111
|
+
page: number;
|
|
112
|
+
page_size: number;
|
|
113
|
+
contracts: IExtRateCardContract[];
|
|
114
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response shape for the external Rate Card sync (`get_ext_rate_card`).
|
|
3
|
+
*
|
|
4
|
+
* Keys are lower_snake_case by agreement with the booking-website team, and
|
|
5
|
+
* deliberately differ from the internal camelCase models: this is a published
|
|
6
|
+
* contract that outlives any internal rename.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=ext.rate.card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ext.rate.card.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/view-models/src/ext.rate.card.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -26,3 +26,5 @@ export * from './save.ba.payout.progress';
|
|
|
26
26
|
export * from './process.vehicle.rates.upload.progress';
|
|
27
27
|
export * from './process.ba.payout.upload.progress';
|
|
28
28
|
export * from './concurrent.users';
|
|
29
|
+
export * from './ext.rate.card';
|
|
30
|
+
export * from './vehicle.allocation.conflict';
|
|
@@ -26,4 +26,6 @@ export * from './save.ba.payout.progress';
|
|
|
26
26
|
export * from './process.vehicle.rates.upload.progress';
|
|
27
27
|
export * from './process.ba.payout.upload.progress';
|
|
28
28
|
export * from './concurrent.users';
|
|
29
|
+
export * from './ext.rate.card';
|
|
30
|
+
export * from './vehicle.allocation.conflict';
|
|
29
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/view-models/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/view-models/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LoginType, OrganizationTypeConfig } from '@autologix/shared/enums';
|
|
1
|
+
import { LoginType, LoginVariant, LtrAppFont, OrganizationTypeConfig } from '@autologix/shared/enums';
|
|
2
2
|
import { ICarouselImage } from '../../models/src/white.label.config.model';
|
|
3
3
|
import { ILanguage } from '../../models/src/language.model';
|
|
4
4
|
export interface IPublicConfig {
|
|
@@ -39,4 +39,9 @@ export interface IPublicConfig {
|
|
|
39
39
|
carouselImages?: ICarouselImage[];
|
|
40
40
|
knowMoreUrl?: string;
|
|
41
41
|
backgroundImage?: string;
|
|
42
|
+
otpLength?: number;
|
|
43
|
+
primaryFont?: LtrAppFont;
|
|
44
|
+
ltrOtpLength?: number;
|
|
45
|
+
ltrAppFont?: LtrAppFont;
|
|
46
|
+
loginVariant?: LoginVariant;
|
|
42
47
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { VehicleAllocationConflictReason } from '../../enums/src/index';
|
|
2
|
+
/** AD-3373 — one duty that clashes with the allocation being attempted. */
|
|
3
|
+
export interface IVehicleAllocationConflict {
|
|
4
|
+
requestId: string;
|
|
5
|
+
/** Booking number of the clashing duty, for the dispatcher to look up. */
|
|
6
|
+
bookingNumber: string | null;
|
|
7
|
+
/** Pickup of the clashing duty, as a UTC instant. Render it in IST. */
|
|
8
|
+
pickupTime: string | null;
|
|
9
|
+
/** Booking status of the clashing duty (Booked / Allotted / Dispatched). */
|
|
10
|
+
status: string | null;
|
|
11
|
+
/** Trip status, present when the clashing duty has a trip. */
|
|
12
|
+
tripStatus: string | null;
|
|
13
|
+
reason: VehicleAllocationConflictReason;
|
|
14
|
+
/** True when the clash is on the very booking the user is working from. */
|
|
15
|
+
isSameBooking: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* AD-3373 — result of the allocation conflict check.
|
|
19
|
+
*
|
|
20
|
+
* `windowMinutes` is echoed back so the client can name the window in the
|
|
21
|
+
* warning without holding its own copy of the config, which would drift.
|
|
22
|
+
*/
|
|
23
|
+
export interface IVehicleAllocationConflictResult {
|
|
24
|
+
windowMinutes: number;
|
|
25
|
+
/** Server clock at evaluation, UTC. The window is measured from here. */
|
|
26
|
+
evaluatedAt: string;
|
|
27
|
+
conflicts: IVehicleAllocationConflict[];
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vehicle.allocation.conflict.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/view-models/src/vehicle.allocation.conflict.ts"],"names":[],"mappings":""}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { IsArray, IsOptional, IsString, IsUUID, } from 'class-validator';
|
|
3
|
-
export class GetExtAvailableRatecardsDTO {
|
|
4
|
-
constructor(obj) {
|
|
5
|
-
Object.assign(this, obj);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
__decorate([
|
|
9
|
-
IsOptional(),
|
|
10
|
-
IsUUID(),
|
|
11
|
-
__metadata("design:type", String)
|
|
12
|
-
], GetExtAvailableRatecardsDTO.prototype, "contextId", void 0);
|
|
13
|
-
__decorate([
|
|
14
|
-
IsOptional(),
|
|
15
|
-
IsArray(),
|
|
16
|
-
IsString({ each: true }),
|
|
17
|
-
__metadata("design:type", Array)
|
|
18
|
-
], GetExtAvailableRatecardsDTO.prototype, "clientIds", void 0);
|
|
19
|
-
//# sourceMappingURL=get.ext.available.ratecards.dto.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get.ext.available.ratecards.dto.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/data-transfer-objects/src/get.ext.available.ratecards.dto.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,OAAO,EAEP,UAAU,EACV,QAAQ,EACR,MAAM,GACN,MAAM,iBAAiB,CAAC;AAGzB,MAAM,OAAO,2BAA2B;IAUvC,YAAY,GAA0C;QACrD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC;CACD;AAVA;IAFC,UAAU,EAAE;IACZ,MAAM,EAAE;;8DACU;AAKnB;IAHC,UAAU,EAAE;IACZ,OAAO,EAAE;IACT,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;8DACJ"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { INumberedInvoice } from '../../models/src/index';
|
|
2
|
-
/**
|
|
3
|
-
* Newest NumberedInvoice on a booking.
|
|
4
|
-
*
|
|
5
|
-
* `Request.numberedInvoices` is a plain @ManyToMany with no @OrderBy, so the
|
|
6
|
-
* array order is whatever the join-table scan yields and can change with the
|
|
7
|
-
* query plan. Callers reaching for `[0]` or `[length - 1]` were therefore
|
|
8
|
-
* picking an arbitrary invoice. That is invisible while a booking has exactly
|
|
9
|
-
* one, and surfaces as stale data the moment it has more — a rebill after
|
|
10
|
-
* modification, or the consolidated clone in
|
|
11
|
-
* `create.consolidated.invoice.handler`, both leave two attached.
|
|
12
|
-
*
|
|
13
|
-
* Ordered by `preparedAt` descending, with the id as a stable tiebreak for
|
|
14
|
-
* rows sharing a timestamp. Rows with no usable `preparedAt` sort last, so a
|
|
15
|
-
* legacy row without one never outranks a real invoice.
|
|
16
|
-
*
|
|
17
|
-
* Mirrors the explicit `ORDER BY ni.preparedAt` that
|
|
18
|
-
* `duties.query.raw.controller` and `bill.calculation.controller` already
|
|
19
|
-
* apply in SQL, for the callers that hold the relation in memory instead.
|
|
20
|
-
*/
|
|
21
|
-
export declare function pickLatestNumberedInvoice(invoices?: INumberedInvoice[] | null): INumberedInvoice | undefined;
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { NumberedInvoiceField, } from '../../models/src/index';
|
|
2
|
-
/**
|
|
3
|
-
* Newest NumberedInvoice on a booking.
|
|
4
|
-
*
|
|
5
|
-
* `Request.numberedInvoices` is a plain @ManyToMany with no @OrderBy, so the
|
|
6
|
-
* array order is whatever the join-table scan yields and can change with the
|
|
7
|
-
* query plan. Callers reaching for `[0]` or `[length - 1]` were therefore
|
|
8
|
-
* picking an arbitrary invoice. That is invisible while a booking has exactly
|
|
9
|
-
* one, and surfaces as stale data the moment it has more — a rebill after
|
|
10
|
-
* modification, or the consolidated clone in
|
|
11
|
-
* `create.consolidated.invoice.handler`, both leave two attached.
|
|
12
|
-
*
|
|
13
|
-
* Ordered by `preparedAt` descending, with the id as a stable tiebreak for
|
|
14
|
-
* rows sharing a timestamp. Rows with no usable `preparedAt` sort last, so a
|
|
15
|
-
* legacy row without one never outranks a real invoice.
|
|
16
|
-
*
|
|
17
|
-
* Mirrors the explicit `ORDER BY ni.preparedAt` that
|
|
18
|
-
* `duties.query.raw.controller` and `bill.calculation.controller` already
|
|
19
|
-
* apply in SQL, for the callers that hold the relation in memory instead.
|
|
20
|
-
*/
|
|
21
|
-
export function pickLatestNumberedInvoice(invoices) {
|
|
22
|
-
if (!invoices?.length) {
|
|
23
|
-
return undefined;
|
|
24
|
-
}
|
|
25
|
-
let latest;
|
|
26
|
-
let latestAt = -Infinity;
|
|
27
|
-
for (const invoice of invoices) {
|
|
28
|
-
if (!invoice) {
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
const preparedAt = invoice[NumberedInvoiceField.PreparedAt];
|
|
32
|
-
const parsed = preparedAt ? new Date(preparedAt).getTime() : NaN;
|
|
33
|
-
const at = Number.isNaN(parsed) ? -Infinity : parsed;
|
|
34
|
-
if (!latest) {
|
|
35
|
-
latest = invoice;
|
|
36
|
-
latestAt = at;
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
// Compare ids only when the timestamps tie, so the winner is stable
|
|
40
|
-
// across query plans rather than dependent on array order.
|
|
41
|
-
const isNewer = at > latestAt ||
|
|
42
|
-
(at === latestAt &&
|
|
43
|
-
String(invoice[NumberedInvoiceField.NumberedInvoiceId] ?? '') >
|
|
44
|
-
String(latest[NumberedInvoiceField.NumberedInvoiceId] ?? ''));
|
|
45
|
-
if (isNewer) {
|
|
46
|
-
latest = invoice;
|
|
47
|
-
latestAt = at;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return latest;
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=pick.latest.numbered.invoice.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pick.latest.numbered.invoice.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/pick.latest.numbered.invoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,yBAAyB,CACxC,QAAoC;IAEpC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,MAAoC,CAAC;IACzC,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC;IAEzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,SAAS;QACV,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACjE,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QAErD,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,OAAO,CAAC;YACjB,QAAQ,GAAG,EAAE,CAAC;YACd,SAAS;QACV,CAAC;QAED,oEAAoE;QACpE,2DAA2D;QAC3D,MAAM,OAAO,GACZ,EAAE,GAAG,QAAQ;YACb,CAAC,EAAE,KAAK,QAAQ;gBACf,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;oBAC5D,MAAM,CACL,MAAM,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,EAAE,CACpD,CAAC,CAAC;QAEN,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,GAAG,OAAO,CAAC;YACjB,QAAQ,GAAG,EAAE,CAAC;QACf,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
|