use fixed tarifs and add additional costs

This commit is contained in:
Thomas Ruoff
2020-10-10 00:39:29 +02:00
parent da91a9b09c
commit 396e4b0a86
7 changed files with 185 additions and 89 deletions

View File

@@ -1,7 +1,8 @@
import * as mongoose from 'mongoose'
import { BILL_STATUS, MILAGE_RATES, getMilageRateValue } from './enums'
import { BILL_STATUS, MILAGE_TARIFS } from './enums'
import { getBillTotal } from '../helpers/bill'
export interface AdditionalCosts {
export interface AdditionalCost {
name: string
value: number
}
@@ -12,9 +13,9 @@ export interface BillDocument
milageStart: number
milageEnd: number
milage?: number
rate: MILAGE_RATES
tarif: MILAGE_TARIFS
status: BILL_STATUS
additionalCosts: AdditionalCosts[]
additionalCosts: AdditionalCost[]
}
export interface BillModel extends mongoose.Model<BillDocument> {}
@@ -46,10 +47,10 @@ const BillSchema = new mongoose.Schema<BillDocument>(
message: (props) => `${props.value} is smaller than milageStart!`,
},
},
rate: {
tarif: {
type: String,
enum: Object.values(MILAGE_RATES),
default: MILAGE_RATES.EXTERN_LTE_200,
enum: Object.values(MILAGE_TARIFS),
default: MILAGE_TARIFS.EXTERN,
required: true,
},
additionalCosts: [
@@ -79,13 +80,7 @@ BillSchema.virtual('milage').get(function () {
BillSchema.virtual('total').get(function () {
const bill = this as BillDocument
const milageCosts =
Math.round(bill.milage * getMilageRateValue(bill.rate) * 100) / 100
const additionalCostSum = bill.additionalCosts
.map(({ value }) => value)
.reduce((acc, value) => acc + value, 0)
return milageCosts + additionalCostSum
return getBillTotal(bill)
})
export default <BillModel>mongoose.models.Bill ||