public override (string, DeviceStatus) AddItem( string itemText, decimal unitPrice, TaxGroup taxGroup, decimal quantity = 0m, decimal priceModifierValue = 0m, PriceModifierType priceModifierType = PriceModifierType.None) { string PriceModifierTypeToProtocolValue() { switch (priceModifierType) { case PriceModifierType.None: return("0"); case PriceModifierType.DiscountPercent: return("2"); case PriceModifierType.DiscountAmount: return("4"); case PriceModifierType.SurchargePercent: return("1"); case PriceModifierType.SurchargeAmount: return("3"); default: return(""); } } // Protocol: {PluName}<SEP>{TaxCd}<SEP>{Price}<SEP>{Quantity}<SEP>{DiscountType}<SEP>{DiscountValue}<SEP>{Department}<SEP> var itemData = string.Join("\t", itemText.WithMaxLength(Info.ItemTextMaxLength), GetTaxGroupText(taxGroup), unitPrice.ToString("F2", CultureInfo.InvariantCulture), quantity.ToString(CultureInfo.InvariantCulture), PriceModifierTypeToProtocolValue(), priceModifierValue.ToString("F2", CultureInfo.InvariantCulture), "0", ""); return(Request(CommandFiscalReceiptSale, itemData)); }
public virtual (string, DeviceStatus) AddItem( string uniqueSaleNumber, string itemText, decimal unitPrice, TaxGroup taxGroup, decimal quantity = 0m, decimal priceModifierValue = 0m, PriceModifierType priceModifierType = PriceModifierType.None, bool reversalReceipt = false) { var itemData = new StringBuilder() .Append(reversalReceipt ? "24": "44") .Append(uniqueSaleNumber) .Append(IcpDecimal(quantity, 8, 3)) .Append(IcpDecimal(999, 8, 0)) .Append(IcpDecimal(unitPrice, 8, 2)) .Append("0") .Append(GetTaxGroupText(taxGroup)) .Append("00") .Append(itemText.WithMaxLength(Info.ItemTextMaxLength)); var(response, status) = Request(itemData.ToString()); if (!status.Ok || priceModifierType == PriceModifierType.None) { return(response, status); } var priceModifierIsPercent = priceModifierType == PriceModifierType.DiscountPercent || priceModifierType == PriceModifierType.SurchargePercent; var priceModifierIsDiscount = priceModifierType == PriceModifierType.DiscountPercent || priceModifierType == PriceModifierType.DiscountAmount; var priceModifierData = new StringBuilder() .Append(priceModifierIsPercent ? "47" : "46") .Append(priceModifierIsDiscount ? "0": "1") .Append(IcpDecimal(priceModifierValue, priceModifierIsPercent ? 4 : 8, 2)); return(Request(priceModifierData.ToString())); }
public override (string, DeviceStatus) AddItem( int department, string itemText, decimal unitPrice, TaxGroup taxGroup, decimal quantity = 0, decimal priceModifierValue = 0, PriceModifierType priceModifierType = PriceModifierType.None, int ItemCode = 999) { if (department <= 0) { return(base.AddItem(department, itemText, unitPrice, taxGroup, quantity, priceModifierValue, priceModifierType)); } var itemData = new StringBuilder() .Append(department).Append("@") .Append(unitPrice.ToString("F2", CultureInfo.InvariantCulture)); if (quantity != 0) { itemData .Append('*') .Append(quantity.ToString(CultureInfo.InvariantCulture)); } if (priceModifierType != PriceModifierType.None) { itemData .Append( priceModifierType == PriceModifierType.DiscountPercent || priceModifierType == PriceModifierType.SurchargePercent ? ',' : '$') .Append(( priceModifierType == PriceModifierType.DiscountPercent || priceModifierType == PriceModifierType.DiscountAmount ? -priceModifierValue : priceModifierValue).ToString("F2", CultureInfo.InvariantCulture)); } return(Request(DaisyCommandFiscalReceiptSaleDepartment, itemData.ToString())); }
public override (string, DeviceStatus) AddItem( string itemText, decimal unitPrice, TaxGroup taxGroup, decimal quantity = 0, decimal priceModifierValue = 0, PriceModifierType priceModifierType = PriceModifierType.None) // Protocol [<L1>][<Lf><L2>]<Tab><TaxCd><[Sign]Price>[*<Qwan>][,Perc|;Abs] { var itemData = new StringBuilder() .Append(itemText.WithMaxLength(Info.ItemTextMaxLength)) .Append('\t').Append(GetTaxGroupText(taxGroup)) .Append(unitPrice.ToString("F2", CultureInfo.InvariantCulture)); if (quantity != 0) { itemData .Append('*') .Append(quantity.ToString(CultureInfo.InvariantCulture)); } if (priceModifierType != PriceModifierType.None) { itemData .Append( priceModifierType == PriceModifierType.DiscountPercent || priceModifierType == PriceModifierType.SurchargePercent ? ',' : ';') .Append(( priceModifierType == PriceModifierType.DiscountPercent || priceModifierType == PriceModifierType.DiscountAmount ? -priceModifierValue : priceModifierValue).ToString("F2", CultureInfo.InvariantCulture)); } return(Request(CommandFiscalReceiptSale, itemData.ToString())); }