Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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()));
        }
Ejemplo n.º 3
0
        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()));
        }
Ejemplo n.º 4
0
        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()));
        }