示例#1
0
文件: Helper.cs 项目: wee2tee/MPA3
        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);
            }
        }
示例#2
0
文件: Helper.cs 项目: wee2tee/MPA3
        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);
            }
        }
示例#3
0
文件: Helper.cs 项目: wee2tee/MPA3
        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;
            //}
        }
示例#4
0
        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
                }
            };
        }