import{a as n}from"./chunk-3DEA4WWC.js";var o=class{ID;VariantID;Quantity;Cost;Price;UnitPriceMinimum;Expense;UnitPriceOriginal;Discount;DiscountAmount;CouponDiscount;Note;Taxable;LoyaltyPoint;EntityID;UnitQuantity;VariantUnitQuantity;UnitQuantityPrice;PriceTypeID;PriceNote;Index;Splited;InventoryTypeID;TypeID;Variant;EntityName;SalesID;SalesName;PriceBookID;Serial;UnitExpense;UnitCost;UnitPrice;Checked;SplitQuantity;PurchaseOrderID;isMaxInventory;SerialSource;Sales;SalesCommission;isCopyPromotionName;isCopyProdDesc;get Total(){let t=this.GrossTotal-this.DiscountPercentAmount;this.validateDiscountAmount(t);let i=this.DiscountAmount*this.Quantity;return t-i}validateDiscountAmount(t){let i=this.Quantity%1===0;t>0&&this.DiscountAmount>t&&i&&(this.DiscountAmount=t)}get GrossTotal(){let t=this.Price*(this.Quantity*this.UnitQuantity);return t||0}get DiscountPercentAmount(){return this.Discount?this.GrossTotal*this.Discount/100:0}get TotalAfterDiscountPerQuantity(){let t=this.DiscountPercentAmount/(this.Quantity*this.UnitQuantity),i=this.DiscountAmount,e=this.Price-t-i;return e||0}constructor(){this.EntityID=n.GuidEmpty,this.ID=n.GuidEmpty,this.Note="",this.SplitQuantity=0,this.SalesID="",this.Quantity=1}patchByVariant(t,i,e){this.PriceTypeID=t.PriceTypeID,this.Variant=t,this.VariantID=t.ID,this.isCopyPromotionName=e,this.isCopyProdDesc=i||this.isCopyProdDesc,this.SalesCommission=t.SalesCommission,this.UnitQuantity=t.UnitQuantity,t.UnitQuantity>1&&(this.UnitQuantityPrice=this.Variant.UnitPrice/this.Variant.UnitQuantity),this.Price=t.UnitPrice,this.UnitPrice=t.UnitPrice,this.UnitPriceMinimum=t.UnitPriceMinimum,this.Cost=t.UnitCost,this.UnitCost=t.UnitCost,this.Expense=t.UnitCost,this.Discount=t.PriceDiscount,this.UnitPriceOriginal=t.UnitPriceOriginal,this.DiscountAmount=0,this.CouponDiscount=0,this.Taxable=t.Taxable,this.InventoryTypeID=t.TypeID,this.LoyaltyPoint=t.LoyaltyPoint,this.VariantUnitQuantity=t.VariantUnitQuantity,this.SalesID="",this.setByVariantType(t),this.setItemNote(t)}patchByVariantAdjustment(t,i,e){this.PriceTypeID=t.PriceTypeID,this.Variant=t,this.VariantID=t.ID,this.isCopyPromotionName=e,this.isCopyProdDesc=this.isCopyProdDesc=i,this.setItemNote(t),this.UnitQuantity=t.UnitQuantity,t.UnitQuantity>1&&(this.UnitQuantityPrice=this.Variant.UnitPrice/this.Variant.UnitQuantity),this.Price=t.UnitPrice,this.UnitPrice=t.UnitPrice,this.UnitCost=t.UnitCost,this.Expense=t.UnitCost,this.Discount=t.PriceDiscount,this.UnitPriceOriginal=t.UnitPriceOriginal,this.DiscountAmount=0,this.Taxable=t.Taxable,this.InventoryTypeID=t.TypeID,this.LoyaltyPoint=t.LoyaltyPoint,this.VariantUnitQuantity=t.VariantUnitQuantity,this.SalesID="",this.setByVariantType(t),this.setItemNote(t)}setByVariantType(t){switch(t.TypeID){case 11:t.Config&&(this.Cost=this.Total/this.Quantity);break;case 9:this.Serial=t.Serial;break}}setItemNote(t){t.TypeID!=9&&(this.isCopyProdDesc&&(this.Note=t.Description),this.isCopyPromotionName&&n.IsNotEmpty(t.PriceNote)&&(this.Note=n.IsNotEmpty(t.PriceNote)?`${this.Note} ${t.PriceNote}`:this.Note,this.PriceNote=t.PriceNote))}pricebookUpdate(t,i,e){let s=this.getSelectedPricebook(t);s&&(this.PriceBookID=t,this.Price=s.UnitPrice,this.Discount=s.PriceDiscount,this.PriceTypeID=2,s.UnitCost==null?this.Cost=this.Variant.UnitCost:this.Cost=s.UnitCost,this.assignItemNote(s.Name,e),this.PriceNote=s.Name)}assignItemNote(t,i=!0){i&&(this.Note?.includes(this.PriceNote)?this.Note=this.Note?.replace(this.PriceNote,t):this.Note=`${t} ${this.Note?this.Note:""}`)}getSelectedPricebook(t){if(this.Variant.PriceBook){let i=this.Variant.PriceBook.filter(e=>e.ID==t);if(i.length)return i[0]}return null}checkMatchSerialWithQuantity(){let t=!0;if(this.isSerialType()){let i=this.Quantity,e=this.calculateSerialQty();i!==e&&(t=!1)}return t}calculateSerialQty(){let t=0;return this.Serial&&this.Serial.forEach(i=>{t+=i.Quantity}),t}isSerialType(){let t=!1;return this.Variant?.TypeID===9&&(t=!0),t}removeEnterNote(){this.Note&&(this.Note=this.Note.replace(/\n/g,""))}get getItemAfterDiscount(){let t=this.getDiscPercentagePerItem();return this.DiscountAmount<t?t-this.DiscountAmount:0}getDiscPercentagePerItem(){let t=this.Price;return this.Discount>0&&(t=(100-this.Discount)/100*this.Price),t}};var r=class extends o{PromotionGift;PromotionID;TotalWithoutDiscount;AvailableInventory;HasCustomerDiscount;ItemTemporaryID;constructor(){super(),this.PromotionGift=!1,this.isMaxInventory=!1}};export{o as a,r as b};
