コード例 #1
0
        public static string Serialize(this TaxTransfer input)
        {
            var output = new StringBuilder();

            output.Append($"{input.ShopifyOrderId}");
            input.ShopifyRefundIds.ForEach(x => output.Append($"{SerializationDelimter}{x.ToString()}"));

            output.Append(Environment.NewLine);
            output.Append($"{input.NetTaxableFreight:0.0000}{SerializationDelimter}" +
                          $"{input.NetFreightTax:0.0000}{SerializationDelimter}" +
                          $"{input.NetTaxableAmount:0.0000}{SerializationDelimter}" +
                          $"{input.NetTotalTax:0.0000}");

            output.Append(Environment.NewLine);

            output.Append($"{FreightSymbol}{SerializationDelimter}{input.FreightTaxLines.Serialize()}");
            output.Append(Environment.NewLine);

            foreach (var line in input.LineItems)
            {
                output.Append($"{line.ItemID}{SerializationDelimter}{line.TaxLines.Serialize()}");
                output.Append(Environment.NewLine);
            }

            return(output.ToString());
        }
コード例 #2
0
        public static TaxTransfer DeserializeTaxSnapshot(this string input)
        {
            var output = new TaxTransfer();
            var lines  = input.Split(new [] { Environment.NewLine }, StringSplitOptions.None);

            var firstLineRaw = lines[0].SplitByDelimiter();

            output.ShopifyOrderId   = firstLineRaw[0].ToLong();
            output.ShopifyRefundIds = firstLineRaw.Skip(1).Select(x => x.ToLong()).ToList();

            var secondLineRaw = lines[1].SplitByDelimiter();

            output.NetTaxableFreight = secondLineRaw[0].ToDecimal();
            output.NetFreightTax     = secondLineRaw[1].ToDecimal();
            output.NetTaxableAmount  = secondLineRaw[2].ToDecimal();
            output.NetTotalTax       = secondLineRaw[3].ToDecimal();

            var thirdLineRaw = lines[2].SplitByDelimiter();

            output.FreightTaxLines = thirdLineRaw.Skip(1).ToList().DeserializeSnapshotTaxLines();

            output.LineItems = new List <TaxTransferLineItem>();

            foreach (var lineRaw in lines.Skip(3).Select(x => x.SplitByDelimiter()))
            {
                if (lineRaw[0] == String.Empty)
                {
                    break;
                }
                var lineItem = new TaxTransferLineItem();
                lineItem.ItemID   = lineRaw[0];
                lineItem.TaxLines = lineRaw.Skip(1).ToList().DeserializeSnapshotTaxLines();

                output.LineItems.Add(lineItem);
            }

            return(output);
        }