public string EdiEncode(InvoiceModel invoice) { List <string> segments = new List <string>(); segments.Add("UNH+1+INVOIC:D:96A:UN:EAN008"); //numer faktury segments.Add("BGM+380+" + invoice.Number + "+" + invoice.Type); //data wystawienia faktury segments.Add("DTM+137:" + invoice.SaleDate.ToString("yyyyMMdd") + ":102"); //dane dostawcy segments.Add("NAD+SU+4012345500004::9++" + Edi.Filter(invoice.ProviderName) + ":::::+" + Edi.Filter(invoice.ProviderAddress.Street) + " " + invoice.ProviderAddress.Number + ":::+" + Edi.Filter(invoice.ProviderAddress.City) + "++" + invoice.ProviderAddress.PostCode + "+" + invoice.ProviderAddress.CountryCode ); segments.Add("RFF+VA:" + invoice.ProviderNip); //dane nabywcy segments.Add("NAD+BY+4012345500004::9++" + Edi.Filter(invoice.BuyerName) + ":::::+" + Edi.Filter(invoice.BuyerAddress.Street) + " " + invoice.BuyerAddress.Number + ":::+" + Edi.Filter(invoice.BuyerAddress.City) + "++" + invoice.BuyerAddress.PostCode + "+" + invoice.BuyerAddress.CountryCode ); segments.Add("RFF+VA:" + invoice.BuyerNip); //miejsce dostwy if (invoice.DeliveryName != null && invoice.DeliveryAddress != null) { segments.Add("NAD+DP+4012345500004::9++" + Edi.Filter(invoice.DeliveryName) + ":::::+" + Edi.Filter(invoice.DeliveryAddress.Street) + " " + invoice.DeliveryAddress.Number + ":::+" + Edi.Filter(invoice.DeliveryAddress.City) + "++" + invoice.DeliveryAddress.PostCode + "+" + invoice.DeliveryAddress.CountryCode ); } // segments.Add("PAT+1"); //data płatności segments.Add("DTM+13:" + invoice.PaymentDate.ToString("yyyyMMdd") + ":102"); //wypisanie towarów/usług foreach (InvoiceProductModel p in invoice.Products) { //numer pozycji towarowej na fakturze++globalny numer towaru segments.Add("LIN+" + p.ItemNumber + "++" + p.Number); //nazwa towaru/uslugi segments.Add("IMD+C++" + p.Type + "::9:" + Edi.Filter(p.Name)); //ilość segments.Add("QTY+" + p.QuantityType + ":" + p.Quantity); //sumaryczna wartość towarów segments.Add("MOA+" + p.SumAmountType + ":" + p.SumAmountNet + ":PLN"); //cena jednostkowa netto segments.Add("PRI+AAA:" + p.UnitPriceNet); } //liczba pozycji towarowych segments.Add("CNT+" + invoice.ProductQuntity + ":120"); //kwota do zapłaty segments.Add("MOA+77:" + invoice.AmountGross); //kwota netto segments.Add("MOA+79:" + invoice.AmountNet); //kwota podatku segments.Add("MOA+124:" + invoice.AmountTax); //kwota opodatkowana segments.Add("MOA+125:" + invoice.AmountTax); //stawka podatku segments.Add("TAX+7+VAT+++:::" + invoice.Tax + "+S"); //liczba segmentow w komunikacie segments.Add("UNT+" + (segments.Count() + 1) + "+1"); return(String.Join("'", segments)); }