import { Keys, Extends, PropSelector, Status, Strings, Info, Nullable, LocStr, } from "@onebro/oba-common"; import { Model, ModelSignature, ModelBaseTypeSig, Stages, ModelMiscReference, StageGuard, IsObjectId, } from "@onebro/oba-mongoose"; import {DocStatuses} from "./00-common"; import {UserAcctAsProp } from "./01-user-acct"; import {ServiceRequestAsProp } from "./03-service-req"; import {VendorAsProp } from "./04-vendor"; import {VendorItemAsProp} from "./04-vendor-item"; import {FinancialDocItemAsProp} from "./06-fin-doc-item"; //import {MessageAsProp} from "./05-message"; export type OrderProps = { _type_:"order"; type:"dc"|"wnf"; addr:LocStr; reservation:Record; customer:UserAcctAsProp[t]; vendor:VendorAsProp[t]; items:VendorItemAsProp[t]; bags:(string|number)[]; tickets:string[]; mileage:number;//total number of miles over total number of customer rates:OrderRates; disc:number; tip:number; amt:OrderBreakdown; pmt:FinancialDocItemAsProp[t]; req:ServiceRequestAsProp[t]; score:number; published:Date; itemCt:number; }; export type OrderConfigKeys = |"customer"|"bags"|"req"|"type"|"addr"|"reservation"; export type OrderConfigOptKeys = |"vendor"|"items"|"score"|"rates"|"bags"|"tickets"|"mileage"|"pmt"|"disc"|"tip"; export type OrderInstanceKeys = OrderConfigKeys|OrderConfigOptKeys|"amt"; export type OrderJsonKeys = OrderInstanceKeys|"_type_"|"published"|"itemCt"; export type OrderPreviewKeys = |"customer"|"bags"|"tickets"|"itemCt"|"published"|"amt"|"req"; export type OrderSelfRefs = {}; export type OrderMethods = {getAmt:() => OrderBreakdown;}; export type OrderPropKeys = Keys>; export type OrderPropSelector< t extends Stages, k extends OrderPropKeys = undefined, j extends OrderPropKeys = undefined> = PropSelector,k,j>; export type OrderSignature = ModelSignature< OrderPropSelector<"C",OrderConfigKeys,OrderConfigOptKeys>, OrderPropSelector<"I",OrderInstanceKeys> & OrderMethods, OrderPropSelector<"J",OrderJsonKeys>, OrderPropSelector<"J",OrderPreviewKeys>, DocStatuses, OrderSelfRefs>; export type Order = Model; export type OrderAsProp = ModelBaseTypeSig< Extends<[IsArr],[true|1],string[],string>, Extends<[IsArr],[true|1],Order["instance"][],Order["instance"]>, Extends<[IsArr],[true|1],Order["preview"][],Order["preview"]>>; export type OrderRates = Record<"starchRate"|"transitRate"|"serviceRate"|"taxRate",number>; export type OrderBreakdown = Record<"starch"|"laundry"|"service"|"transit"|"tax"|"tip"|"disc"|"total",number>;