import { ObjectId } from 'mongodb'; import { Attachment } from './attachment'; import { BaseModel } from './baseModel'; import { Customer } from './customer'; import { Delivery, DeliveryItem } from './delivery'; import { OperationCenter } from './operationCenter'; import { SKU } from './sku'; import { TaxComponent } from './taxComponent'; import { WalkInSale, WalkInSaleItem } from './walkInSale'; export interface Invoice extends BaseModel { date: Date; status: string; dueDate?: Date; code: string; operationCenter: OperationCenter | ObjectId; dcGstNumber?: string; customer: Customer | ObjectId; customerRemarks?: string; billTo: string; billingAddressLine1: string; billingAddressLine2?: string; billingAddressCity: string; billingAddressState: string; billingAddressCountry: string; billingAddressPincode: string; deliverTo: string; deliveryAddressLine1: string; deliveryAddressLine2?: string; deliveryAddressCity: string; deliveryAddressState: string; deliveryAddressCountry: string; deliveryAddressPincode: string; items: InvoiceItem[]; attachments?: Attachment[]; comments?: string; delivery?: Delivery | ObjectId; walkInSale?: WalkInSale | ObjectId; deliveryZohoId?: string; disableQuickBooks?: boolean; totalTax?: number; fieldwiseTaxSum?: { [key: string]: number; }; percentagewiseTaxSum?: { [key: number]: number; }; taxComponent?: TaxComponent[]; originalAmount?: number; amountAdjustment?: number; amount: number; invoiceType?: string; dueAmount?: number; paymentsAmount?: number; irn?: string; } export interface InvoiceItem extends BaseModel { invoice: Invoice | ObjectId; date: Date; operationCenter: OperationCenter | ObjectId; customer: Customer | ObjectId; sku: SKU | ObjectId; quantity: number; originalUnitPrice: number; unitPriceAdjustment?: number; unitPrice: number; originalAmount: number; amountAdjustment?: number; amount: number; comments?: string; hsn?: string; taxComponent: TaxComponent[]; taxValue: number; preTaxValue?: number; deliveryItem?: DeliveryItem | ObjectId; deliveryItemZohoId?: string; walkInSaleItem?: WalkInSaleItem | ObjectId; }