public static string GetSubjectDocType(this ArtrnDbf artrn, DbfDataSet dataset) { var isrun = dataset.Isrun.Where(i => i.prefix == artrn.docnum.Substring(0, 2)).FirstOrDefault(); if (isrun != null) { switch (isrun.doctyp) { case "IV": return(DoctypSubject.INV.ToString()); case "HS": return(DoctypSubject.INV.ToString()); case "CN": return(DoctypSubject.CRN.ToString()); case "DR": return(DoctypSubject.DBN.ToString()); default: return(string.Empty); } } else { return(string.Empty); } }
public static string GetDocType(this ArtrnDbf artrn, DbfDataSet dataset) { var isrun = dataset.Isrun.Where(i => i.prefix == artrn.docnum.Substring(0, 2)).FirstOrDefault(); if (isrun != null) { switch (isrun.doctyp) { case "IV": return(Doctyp.Tax_Invoice.ToString()); case "HS": return(Doctyp.Tax_Invoice.ToString()); case "CN": return(Doctyp.Credit_Note.ToString()); case "DR": return(Doctyp.Debit_Note.ToString()); default: return(string.Empty); } } else { return(string.Empty); } }
public static StdDocumentName GetDocName(this ArtrnDbf artrn, DbfDataSet dataset) { //try //{ IsrunDbf isrun = dataset.Isrun.Where(i => i.prefix == artrn.docnum.Substring(0, 2)).FirstOrDefault(); //var x = dataset.Isrun.OrderBy(d => d.doctyp).Select(d => d.doctyp).ToArray<string>(); StdDocumentName docName = null; if (isrun != null) { switch (isrun.doctyp) { case "IV": if (artrn.srv_vattyp == ((int)VAT_TYPE.ACQUISITION).ToString() && artrn.vatamt > 0) { docName = new StdDocumentName(StdDocumentName.TYPE._T02); } else { docName = new StdDocumentName(StdDocumentName.TYPE._380); } break; case "HS": docName = new StdDocumentName(StdDocumentName.TYPE._T03); break; case "CN": docName = new StdDocumentName(StdDocumentName.TYPE._81); break; case "DR": docName = new StdDocumentName(StdDocumentName.TYPE._80); break; default: docName = new StdDocumentName(StdDocumentName.TYPE._388); break; } } return(docName); //} //catch (Exception ex) //{ // return null; //} }
public JsonModel(string data_path, string docnum) { using (StreamReader rdr = File.OpenText(@"Res\Countries.json")) { countries = (List <Country>) new JsonSerializer().Deserialize(rdr, typeof(List <Country>)); } using (StreamReader rdr = File.OpenText(@"Res\Cities.json")) { cities = (List <CitySubDivision>) new JsonSerializer().Deserialize(rdr, typeof(List <CitySubDivision>)); //List<CitySubDivision> cities_json = (List<CitySubDivision>)new JsonSerializer().Deserialize(rdr, typeof(List<CitySubDivision>)); //province = new List<Province>(); //foreach (var p in cities_json.GroupBy(c => c.provinceId)) //{ // province.Add(new Province // { // id = p.First().provinceId, // name = p.First().provinceName, // cities = cities_json.Where(c => c.provinceId == p.First().provinceId).GroupBy(c => c.CityId).Select(g => new City // { // id = g.First().CityId, // name = g.First().CityName, // subDivisions = cities_json.Where(c => c.CityId == g.First().CityId).Select(sd => new SubDivision { id = sd.SubDivisionId, name = sd.SubDivisionName, latitude = sd.Latitude, longitude = sd.Longitude }).ToList() // }).ToList() // }); //} } DbfDataSet dataset = new DbfDataSet(data_path); IsinfoDbf isinfo = dataset.Isinfo; ArtrnDbf artrn = dataset.Artrn.Where(a => a.docnum == docnum).FirstOrDefault(); StdDocumentName docName = artrn.GetDocName(dataset); ArmasDbf armas = dataset.Armas.Where(a => a.cuscod == artrn.cuscod).FirstOrDefault(); CitySubDivision sellerCity = this.cities.Where(c => (isinfo.addr01 + " " + isinfo.addr02).Contains(c.provinceName) && (isinfo.addr01 + " " + isinfo.addr02).Contains(c.CityName) && (isinfo.addr01 + " " + isinfo.addr02).Contains(c.SubDivisionName)).FirstOrDefault(); CitySubDivision buyerCity = this.cities.Where(c => (armas.addr01 + " " + armas.addr02 + " " + armas.addr03).Contains(c.provinceName) && (armas.addr01 + " " + armas.addr02 + " " + armas.addr03).Contains(c.CityName) && (armas.addr01 + " " + armas.addr02 + " " + armas.addr03).Contains(c.SubDivisionName)).FirstOrDefault(); ArtrnDbf refDoc = null; if (docName.type == StdDocumentName.TYPE._80 || docName.type == StdDocumentName.TYPE._81) { refDoc = dataset.Artrn.Where(a => a.docnum == artrn.sonum).FirstOrDefault(); } else { refDoc = dataset.Artrn.Where(a => a.docnum == artrn.youref).FirstOrDefault(); } StdDocumentName refDocName = refDoc != null?refDoc.GetDocName(dataset) : null; List <StcrdDbf> stcrd = dataset.Stcrd.Where(s => s.docnum == docnum).ToList(); List <IstabDbf> qucod = dataset.Istab.Where(i => i.tabtyp == "20" && stcrd.Select(s => s.tqucod).ToList <string>().Contains(i.typcod)).ToList(); // Create DocumentDetail for export to JSON this.DocumentDetail = new DocumentDetail { ID = artrn.docnum, CreationDateTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.GetCultureInfo("en-US")), IssueDateTime = artrn.docdat.Value.ToString("yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.GetCultureInfo("en-US")), SpecifiedCIDocument = "ETDA", Name = docName != null ? docName.Name : string.Empty, TypeCode = docName != null ? docName.typeCode : string.Empty, Purpose = docName.type == StdDocumentName.TYPE._80 || docName.type == StdDocumentName.TYPE._81 ? artrn.youref : string.Empty, Note = new Note { Subject = docName.type == StdDocumentName.TYPE._80 || docName.type == StdDocumentName.TYPE._81 ? string.Empty : "หมายเหตุ", Content = docName.type == StdDocumentName.TYPE._80 || docName.type == StdDocumentName.TYPE._81 ? string.Empty : artrn.youref } }; this.SellerTradeParty = new SellerTradeParty { PostalCITradeAddress = new PostalTradeAddress { LineOne = isinfo.addr01, LineTwo = isinfo.addr02, CountryID = countries.Where(c => c.Name.ToLower() == "thailand").First().Code, PostcodeCode = isinfo.GetZipcod(), CountrySubDivisionID = string.Empty, CityID = sellerCity != null ? sellerCity.CityId : string.Empty, //string.Empty, CitySubDivisionID = sellerCity != null ? sellerCity.SubDivisionId : string.Empty, //string.Empty, Address = string.Empty, }, Name = string.Empty, TaxID = isinfo.taxid, BranchCode = isinfo.GetOrgnumString(), CompleteNumber = isinfo.GetTelFax().telNum, //"*****@*****.**", URIID = string.Empty, //"www.esg.co.th", Telephone = isinfo.GetTelFax().telNum, Fax = isinfo.GetTelFax().faxNum, }; this.BuyerTradeParty = new BuyerTradeParty { PersonName = armas.contact, Name = armas.prenam + " " + armas.cusnam, TaxID = armas.taxid, BranchCode = armas.GetOrgnumString(), CompleteNumber = armas.GetTelFax().telNum, //"*****@*****.**", URIID = string.Empty, //"www.esg.co.th", Telephone = armas.GetTelFax().telNum, Fax = armas.GetTelFax().faxNum, PostalTradeAddress = new PostalTradeAddress { CountryID = countries.Where(c => c.Name.ToLower() == "thailand").First().Code, LineOne = armas.addr01, LineTwo = armas.addr02 + " " + armas.addr03 + " " + armas.zipcod, PostcodeCode = armas.zipcod, CountrySubDivisionID = string.Empty, CityID = buyerCity != null ? buyerCity.CityId : string.Empty, //string.Empty, CitySubDivisionID = buyerCity != null ? buyerCity.SubDivisionId : string.Empty, //string.Empty, Address = string.Empty } }; this.IncludedSupplyChainTradeLineItem = new List <LineItem>(); int item_count = 0; foreach (StcrdDbf st in stcrd) { this.IncludedSupplyChainTradeLineItem.Add(new LineItem { LineID = (++item_count).ToString(), Name = st.stkdes, ChargeAmount = st.unitpr.ToString(), BilledQuantity = st.trnqty.ToString(), UnitCode = "", UnitName = qucod.Where(q => q.typcod == st.tqucod).First().typdes, ChargeIndicator = st.discamt > 0 ? "true" : "false", ActualAmount = st.discamt > 0 ? st.discamt.ToString() : "0", NetLineTotalAmount = st.trnval.ToString(), GlobalID = "", ProductID = st.stkcod }); } this.ReferencedDocument = new List <RefDocs>(); if (refDoc != null) { this.ReferencedDocument.Add(new RefDocs { IssuerAssignedID = refDoc.docnum, IssueDateTime = refDoc.docdat.Value.ToString("yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.GetCultureInfo("en-US")), ReferenceTypeCode = refDocName != null ? refDocName.typeCode : string.Empty }); } this.ApplicableHeaderTradeSettlement = new ApplicableHeaderTradeSettlement { SpecifiedTradeAllowanceCharge = new SpecifiedTradeAllowanceCharge { ChargeIndicator = artrn.discamt > 0 ? "true" : "false", ActualAmount = artrn.discamt > 0 ? artrn.discamt.ToString() : "0" }, InvoiceCurrencyCode = "THB", ApplicableTradeTax = new ApplicableTradeTax { CalculatedRate = artrn.vatrat.ToString(), //"7.00", BasisAmount = artrn.total.ToString(), VatAmount = artrn.vatamt.ToString(), TypeCode = "VAT" }, SpecifiedTradeSettlementHeaderMonetarySummation = new SpecifiedTradeSettlementHeaderMonetarySummation { LineTotalAmount = artrn.amount.ToString(), //string.Empty, GrandTotalAmountCharactor = string.Empty, TaxTotalAmount = artrn.vatamt.ToString(), //string.Empty, GrandTotalAmount = (artrn.total + artrn.vatamt).ToString() //string.Empty } }; }