using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace HH.YiDaSyncNC.Models { class KP_SyncServiceModel { public class DataModel { public string 集团 { get; set; } = "0"; public string 组织 { get; set; } public string 销售订单单据类型 { get; set; } = "30-Cxx-02"; public string 销售订单单据大类 { get; set; } = "30"; public string 销售发票单据类型 { get; set; } = "32-01"; public string 销售发票单据大类 { get; set; } = "32"; public string 应收单单据类型 { get; set; } = "F0"; public string 应收类型 { get; set; } = "D0"; public string 应收单单据大类 { get; set; } = "ys"; public string 业务流程 { get; set; } = "Cxx-xs-03"; public string 单据号 { get; set; } // 不传 public string 单据日期 { get; set; } public string 客户 { get; set; } public string 部门 { get; set; } public string 业务员 { get; set; } public string 币种 { get; set; } = "CNY"; public string 收款协议 { get; set; } public string 审批人 { get; set; } public string 审批时间 { get; set; } public string 制单人 { get; set; } public string 制单时间 { get; set; } public string 创建人 { get; set; } public string 创建时间 { get; set; } public string 国家 { get; set; } = "CN"; public string 项目 { get; set; } public string 数量 { get; set; } public string 价税合计 { get; set; } // ---------------------------------------------------------------------- public string 发票号 { get; set; } public string 发票类型 { get; set; } = "32-01"; public string 客户打印名称 { get; set; } public string 开票类型 { get; set; } public string OA单据号 { get; set; } public string 合同业务类型 { get; set; } public string 扣税类别 { get; set; } = "1"; public string 汇率 { get; set; } = "1"; public string 折扣 { get; set; } = "100"; public string 销售订单单据号 { get; set; } // --------- public string 销售订单主表id { get; set; } // --------- public string 销售发票主表id { get; set; } // --------- public string 年份 { get; set; } public string 月份 { get; set; } public List 明细 { get; set; } public class OrderB { public string 物料 { get; set; } public string 计量单位 { get; set; } public string 换算率 { get; set; } = "1.00/1.00"; public string 数量 { get; set; } public string 税码 { get; set; } public string 税率 { get; set; } public string 含税单价 { get; set; } public string 无税单价 { get; set; } public string 含税净价 { get; set; } public string 无税净价 { get; set; } public string 税额 { get; set; } public string 无税金额 { get; set; } public string 价税合计 { get; set; } // ---------------------------------------------- public string 开票内容 { get; set; } public string 行id { get; set; } public string 销售订单子表id { get; set; } // --------- public string 销售发票子表id { get; set; } // --------- } } public class ImportXml_销售订单 { /// /// 模板头部份 /// /// public static XElement TemplateHeade() { return new XElement(new XElement("ufinterface", new object[] { new XAttribute("sender","dingding"), new XAttribute("roottag",""), new XAttribute("replace","Y"), new XAttribute("isexchange","Y"), new XAttribute("groupcode","0"), new XAttribute("filename",""), new XAttribute("billtype","30"), new XAttribute("account","develop") })); } /// /// 组建表头xml /// /// 表头参数 /// public static XElement Header(DataModel item, string id) { var so_saleorder_b = new List(); if (item.明细 != null && item.明细.Count > 0) { var crowno = 10; // 行号 foreach (var itemData in item.明细) { so_saleorder_b.Add(new XElement("item", new object[] { new XElement("carorgvid",item.组织), new XElement("carorgid",item.组织), new XElement("csettleorgvid",item.组织), new XElement("csettleorgid",item.组织), new XElement("csendstockorgvid",item.组织), new XElement("csendstockorgid",item.组织), new XElement("creceivecustid",item.客户), new XElement("crececountryid",item.国家), new XElement("csendcountryid",item.国家), new XElement("ctaxcountryid",item.国家), new XElement("pk_group",item.集团), new XElement("pk_org",item.组织), new XElement("dbilldate",item.单据日期), new XElement("dreceivedate",Convert.ToDateTime(item.单据日期).AddDays(1).ToString("yyyy-MM-dd HH:mm:ss")), new XElement("dsenddate",Convert.ToDateTime(item.单据日期).AddDays(1).ToString("yyyy-MM-dd HH:mm:ss")), new XElement("crowno",crowno.ToString()), new XElement("cprojectid",item.项目), new XElement("fbuysellflag","1"), new XElement("flargesstypeflag","1"), new XElement("cmaterialvid",itemData.物料), new XElement("cmaterialid",itemData.物料), new XElement("cunitid",itemData.计量单位), new XElement("castunitid",itemData.计量单位), new XElement("cqtunitid",itemData.计量单位), new XElement("nastnum",itemData.数量), new XElement("vchangerate",itemData.换算率), new XElement("nqtunitnum",itemData.数量), new XElement("nnum",itemData.数量), new XElement("vqtunitrate",itemData.换算率), new XElement("ctaxcodeid",itemData.税码), new XElement("ntaxrate",itemData.税率), new XElement("ftaxtypeflag","1"), new XElement("ccurrencyid",item.币种), new XElement("nexchangerate","1"), new XElement("ndiscount","0"), new XElement("ndiscountrate","100"), new XElement("nitemdiscountrate","100"), new XElement("norigtaxprice",itemData.含税单价), new XElement("nqtorigtaxprice",itemData.含税单价), new XElement("nqttaxprice",itemData.含税单价), new XElement("ntaxprice",itemData.含税单价), new XElement("nqtorigprice",itemData.无税单价), new XElement("nqtorignetprice",itemData.无税单价), new XElement("norigprice",itemData.无税单价), new XElement("nprice",itemData.无税单价), new XElement("nqtprice",itemData.无税单价), new XElement("nqtorigtaxnetprc",itemData.含税净价), new XElement("norigtaxnetprice",itemData.含税净价), new XElement("nqttaxnetprice",itemData.含税净价), new XElement("ntaxnetprice",itemData.含税净价), new XElement("norignetprice",itemData.无税净价), new XElement("nnetprice",itemData.无税净价), new XElement("nqtnetprice",itemData.无税净价), new XElement("ntax",itemData.税额), new XElement("ncaltaxmny",itemData.无税金额), new XElement("norigmny",itemData.无税金额), new XElement("nmny",itemData.无税金额), new XElement("norigtaxmny",itemData.价税合计), new XElement("ntaxmny",itemData.价税合计), new XElement("norigdiscount","0"), new XElement("vbdef1",itemData.开票内容), new XElement("vbdef10",itemData.行id), })); crowno = crowno + 10; } } return new XElement("bill", new object[] { "", new XAttribute("id",id), new XElement("billhead", new object[] { new XElement("pk_group",item.集团), new XElement("pk_org",item.组织), new XElement("pk_org_v",item.组织), new XElement("ctrantypeid",item.销售订单单据类型), new XElement("vtrantypecode",item.销售订单单据类型), new XElement("cbiztypeid",item.业务流程), new XElement("vbillcode",""), new XElement("dbilldate",item.单据日期), new XElement("ccustomerid",item.客户), new XElement("cdeptvid",item.部门), new XElement("cdeptid",item.部门), new XElement("cemployeeid",""), new XElement("corigcurrencyid",item.币种), new XElement("cinvoicecustid",item.客户), new XElement("cpaytermid",item.收款协议), new XElement("ntotalnum",item.数量), new XElement("ntotalinvoicenum","1"), new XElement("ntotalweight","0"), new XElement("ntotalvolume","0"), new XElement("ntotalpiece",""), new XElement("ntotalorigmny",item.价税合计), new XElement("bcooptopoflag","N"), new XElement("fstatusflag","2"), new XElement("fpfstatusflag","1"), new XElement("approver",item.审批人), new XElement("taudittime",item.审批时间), new XElement("billmaker",item.制单人), new XElement("dmakedate",item.制单时间), new XElement("creator",item.创建人), new XElement("creationtime",item.创建时间), new XElement("modifier",""), new XElement("modifiedtime",""), new XElement("vdef4",item.开票类型), new XElement("vdef1",item.OA单据号), new XElement("vdef5",item.合同业务类型), new XElement("vdef8",item.客户打印名称), new XElement("so_saleorder_b",so_saleorder_b), }), }); } } public class ImportXml_销售发票 { /// /// 模板头部份 /// /// public static XElement TemplateHeade() { return new XElement(new XElement("ufinterface", new object[] { new XAttribute("sender","dingding"), new XAttribute("roottag",""), new XAttribute("replace","Y"), new XAttribute("isexchange","Y"), new XAttribute("groupcode","0"), new XAttribute("filename",""), new XAttribute("billtype","32"), new XAttribute("account","develop") })); } /// /// 组建表头xml /// /// 表头参数 /// public static XElement Header(DataModel item, string id) { var csaleinvoicebid = new List(); if (item.明细 != null && item.明细.Count > 0) { var crowno = 10; // 行号 foreach (var itemData in item.明细) { csaleinvoicebid.Add(new XElement("item", new object[] { new XElement("pk_group",item.集团), new XElement("pk_org",item.组织), new XElement("dbilldate",item.单据日期), new XElement("crowno",crowno.ToString()), new XElement("cmaterialvid",itemData.物料), new XElement("cmaterialid",itemData.物料), new XElement("cvendorid",""), new XElement("cprojectid",item.项目), new XElement("cproductorid",""), new XElement("castunitid",itemData.计量单位), new XElement("nastnum",itemData.数量), new XElement("cunitid",itemData.计量单位), new XElement("nnum",itemData.数量), new XElement("vchangerate",itemData.换算率), new XElement("cqtunitid",itemData.计量单位), new XElement("vqtunitrate",itemData.换算率), new XElement("nqtunitnum",itemData.数量), new XElement("bdiscountflag","N"), new XElement("blaborflag","N"), new XElement("blargessflag","N"), new XElement("pk_batchcode",""), new XElement("vbatchcode",""), new XElement("ctaxcodeid",itemData.税码), new XElement("ntaxrate",itemData.税率), new XElement("ftaxtypeflag","1"), new XElement("ndiscountrate",item.折扣), new XElement("nitemdiscountrate",item.折扣), new XElement("ninvoicedisrate",item.折扣), new XElement("norigtaxprice",itemData.含税单价), new XElement("nqtorigtaxprice",itemData.含税单价), new XElement("nqttaxprice",itemData.含税单价), new XElement("ntaxprice",itemData.含税单价), new XElement("nqtorigprice",itemData.无税单价), new XElement("nqtorignetprice",itemData.无税单价), new XElement("norigprice",itemData.无税单价), new XElement("nprice",itemData.无税单价), new XElement("nqtprice",itemData.无税单价), new XElement("nqtorigtaxnetprc",itemData.含税净价), new XElement("norigtaxnetprice",itemData.含税净价), new XElement("nqttaxnetprice",itemData.含税净价), new XElement("ntaxnetprice",itemData.含税净价), new XElement("norignetprice",itemData.无税净价), new XElement("nnetprice",itemData.无税净价), new XElement("nqtnetprice",itemData.无税净价), new XElement("ntax",itemData.税额), new XElement("ncaltaxmny",itemData.无税金额), new XElement("norigmny",itemData.无税金额), new XElement("nmny",itemData.无税金额), new XElement("norigtaxmny",itemData.价税合计), new XElement("ntaxmny",itemData.价税合计), new XElement("norigdiscount","0"), new XElement("ndiscount","0"), new XElement("norigsubmny","0"), new XElement("ngroupmny","0"), new XElement("ngrouptaxmny","0"), new XElement("nglobalmny","0"), new XElement("nglobaltaxmny","0"), new XElement("vfirsttype",item.销售订单单据类型), new XElement("vfirstcode",item.销售订单单据号), new XElement("vfirsttrantype",item.销售订单单据类型), new XElement("vfirstrowno",crowno.ToString()), new XElement("cfirstid",item.销售订单主表id), new XElement("cfirstbid",itemData.销售订单子表id), new XElement("vsrctype",item.销售订单单据大类), new XElement("vsrccode",item.销售订单单据号), new XElement("vsrctrantype",item.销售订单单据大类), new XElement("vsrcrowno",crowno.ToString()), new XElement("csrcid",item.销售订单主表id), new XElement("csrcbid",itemData.销售订单子表id), new XElement("copposesrcbid",""), new XElement("csaleorgid",item.组织), new XElement("csaleorgvid",item.组织), new XElement("carorgid",item.组织), new XElement("carorgvid",item.组织), new XElement("cordercustid",item.客户), new XElement("bfreecustflag","N"), new XElement("cfreecustid",""), new XElement("cdeptid",""), new XElement("cdeptvid",""), new XElement("cemployeeid",""), new XElement("cchanneltypeid",""), new XElement("creceivecustid",item.客户), new XElement("creceiveaddrid",""), new XElement("ctransporttypeid",""), new XElement("csendstockorgid",item.组织), new XElement("csendstockorgvid",item.组织), new XElement("csendstordocid",""), new XElement("cprodlineid",""), new XElement("ccostsubjid",""), new XElement("cctmanageid",""), new XElement("cvmivenderid",""), new XElement("vsumcode",""), new XElement("nshouldoutnum",""), new XElement("ntotaloutnum",""), new XElement("ntotalincomenum",""), new XElement("ntotalincomemny",""), new XElement("ntotalcostnum",""), new XElement("ntotalpaymny",""), new XElement("vrownote",""), new XElement("vbdef1",itemData.开票内容), new XElement("vbdef10",itemData.行id), new XElement("srcts",""), new XElement("srcbts",""), new XElement("ncanoutnum",""), new XElement("nsrcnum","1"), new XElement("cmarbascalssid",""), })); crowno = crowno + 10; } } return new XElement("bill", new object[] { "", new XAttribute("id",id), new XElement("billhead", new object[] { new XElement("pk_group",item.集团), new XElement("pk_org",item.组织), new XElement("pk_org_v",item.组织), new XElement("ctrantypeid",item.销售发票单据类型), new XElement("vtrantypecode",item.销售发票单据类型), new XElement("cbiztypeid",item.业务流程), new XElement("vbillcode",item.发票号), new XElement("dbilldate",item.单据日期), new XElement("cinvoicecustid",item.客户), new XElement("vprintcustname",item.客户打印名称), new XElement("ccustbankid",""), new XElement("ccustbankaccid",""), new XElement("cpaytermid","01"), new XElement("vcreditnum",""), new XElement("vgoldtaxcode",""), new XElement("btogoldtaxflag","Y"), new XElement("tgoldtaxtime",item.创建时间), new XElement("corigcurrencyid",item.币种), new XElement("nexchangerate","1"), new XElement("ccurrencyid",item.币种), new XElement("ngroupexchgrate",""), new XElement("nglobalexchgrate",""), new XElement("nhvoicedisrate",""), new XElement("ntotalastnum",item.数量), new XElement("ntotalorigsubmny",""), new XElement("ntotalorigmny",item.价税合计), new XElement("csendcountryid",item.国家), new XElement("crececountryid",item.国家), new XElement("ctaxcountryid",item.国家), new XElement("fbuysellflag","1"), new XElement("btriatradeflag","N"), new XElement("vvatcode",""), new XElement("vcustvatcode",""), new XElement("ctradewordid",""), new XElement("bsubunitflag","N"), new XElement("fopposeflag",""), new XElement("vopposesrccode",""), new XElement("copposesrcid",""), new XElement("vnote",""), //new XElement("fstatusflag","2"), //new XElement("approver",item.审批人), //new XElement("taudittime",item.审批时间), new XElement("fstatusflag","1"), new XElement("approver",""), new XElement("taudittime",""), new XElement("billmaker",item.制单人), new XElement("dmakedate",item.制单时间), new XElement("creator",item.创建人), new XElement("creationtime",item.创建时间), new XElement("modifier",""), new XElement("modifiedtime",""), new XElement("iprintcount",""), new XElement("vdef1",item.OA单据号), new XElement("vdef2",item.发票号), new XElement("vdef4",item.开票类型), new XElement("vdef5",item.合同业务类型), new XElement("csaleinvoicebid",csaleinvoicebid), }), }); } } public class ImportXml_应收单 { /// /// 模板头部份 /// /// public static XElement TemplateHeade() { return new XElement(new XElement("ufinterface", new object[] { new XAttribute("sender","dingding"), new XAttribute("roottag",""), new XAttribute("replace","Y"), new XAttribute("isexchange","Y"), new XAttribute("groupcode","0"), new XAttribute("filename",""), new XAttribute("billtype","F0"), new XAttribute("account","develop") })); } /// /// 组建表头xml /// /// 表头参数 /// public static XElement Header(DataModel item, string id) { var bodys = new List(); if (item.明细 != null && item.明细.Count > 0) { var crowno = 10; // 行号 foreach (var itemData in item.明细) { bodys.Add(new XElement("item", new object[] { new XElement("pk_group",item.集团), new XElement("pk_org",item.组织), new XElement("pk_pcorg",""), new XElement("pk_fiorg",item.组织), new XElement("sett_org",item.组织), new XElement("so_org",item.组织), new XElement("material",itemData.物料), new XElement("customer",item.客户), new XElement("postunit",itemData.计量单位), new XElement("postpricenotax",itemData.无税单价), new XElement("postquantity",itemData.数量), new XElement("postprice",itemData.含税单价), new XElement("pausetransact","N"), new XElement("billdate",item.单据日期), new XElement("pk_billtype",item.应收单单据类型), new XElement("billclass",item.应收单单据大类), new XElement("pk_tradetype",item.应收类型), new XElement("busidate",item.单据日期), new XElement("objtype","0"), new XElement("rowno",crowno.ToString()), new XElement("rowtype","0"), new XElement("direction","1"), new XElement("pk_currtype",item.币种), new XElement("rate",item.汇率), new XElement("money_de",itemData.价税合计), new XElement("local_money_de",itemData.价税合计), new XElement("quantity_de",itemData.数量), new XElement("money_bal",itemData.价税合计), new XElement("local_money_bal",itemData.价税合计), new XElement("quantity_bal",itemData.数量), new XElement("local_tax_de",itemData.税额), new XElement("notax_de",itemData.无税金额), new XElement("local_notax_de",itemData.无税金额), new XElement("price",itemData.无税单价), new XElement("taxprice",itemData.含税单价), new XElement("taxrate",itemData.税率), new XElement("top_billid",item.销售发票主表id), // new XElement("top_itemid",itemData.销售发票子表id), new XElement("top_billtype",item.销售发票单据大类), new XElement("top_tradetype",item.销售发票单据类型), new XElement("src_billid",item.销售订单主表id), new XElement("src_itemid",itemData.销售订单子表id), new XElement("src_billtype",item.销售订单单据大类), new XElement("src_tradetype",item.销售订单单据类型), new XElement("taxtype","1"), new XElement("pk_payterm",item.收款协议), new XElement("ordercubasdoc",item.客户), new XElement("purchaseorder",item.销售订单单据号), new XElement("invoiceno",item.发票号), new XElement("def1",itemData.开票内容), new XElement("def10",itemData.行id), new XElement("grouprate","0"), new XElement("globalrate","0"), new XElement("groupdebit","0"), new XElement("globaldebit","0"), new XElement("groupbalance","0"), new XElement("globalbalance","0"), new XElement("groupnotax_de","0"), new XElement("globalnotax_de","0"), new XElement("occupationmny","0"), new XElement("project",item.项目), new XElement("rececountryid",item.国家), new XElement("buysellflag","1"), new XElement("taxcodeid",itemData.税码), new XElement("caltaxmny",itemData.无税金额), })); crowno = crowno + 10; } } return new XElement("bill", new object[] { "", new XAttribute("id",id), new XElement("billhead", new object[] { new XElement("pk_group",item.集团), new XElement("pk_org",item.组织), new XElement("pk_fiorg",item.组织), new XElement("pk_pcorg",""), new XElement("sett_org",item.组织), new XElement("isreded","N"), new XElement("outbusitype",""), new XElement("officialprintuser",""), new XElement("officialprintdate",""), new XElement("approver",""), new XElement("taudittime",""), new XElement("billmaker",item.制单人), new XElement("dmakedate",item.制单时间), new XElement("creator",item.创建人), new XElement("creationtime",item.创建时间), new XElement("modifier",""), new XElement("modifiedtime",""), new XElement("pk_billtype",item.应收单单据类型), new XElement("custdelegate",""), new XElement("pk_corp",""), new XElement("pk_tradetype",item.应收类型), new XElement("pk_tradetype",item.应收类型), new XElement("ctrantypeid",item.销售发票单据类型), new XElement("vtrantypecode",item.销售发票单据类型), new XElement("pk_busitype",item.业务流程), new XElement("billclass",item.应收单单据大类), new XElement("accessorynum","0"), new XElement("subjcode",""), new XElement("isflowbill","N"), new XElement("confirmuser",""), new XElement("isinit","N"), new XElement("billno",item.OA单据号), new XElement("billdate",item.单据日期), new XElement("syscode","0"), new XElement("src_syscode","3"), new XElement("billstatus","-1"), new XElement("lastadjustuser",""), new XElement("money",item.价税合计), new XElement("local_money",item.价税合计), new XElement("rate",""), new XElement("billyear",item.年份), new XElement("billperiod",item.月份), new XElement("scomment",""), new XElement("effectstatus","10"), new XElement("effectuser",""), new XElement("effectdate",""), new XElement("lastapproveid",""), new XElement("so_org",item.组织), new XElement("customer",item.客户), new XElement("pk_currtype",item.币种), new XElement("sendcountryid",item.国家), new XElement("taxcountryid",item.国家), new XElement("coordflag",""), new XElement("inner_effect_date",""), new XElement("busidate",""), new XElement("def2",item.发票号), new XElement("def4",item.开票类型), new XElement("def5",item.合同业务类型), new XElement("bodys",bodys), }), }); } } } }