guoshuang 2 yıl önce
ebeveyn
işleme
81bda46875

+ 3 - 0
HH.YiDaSyncNC/App.config

@@ -42,6 +42,7 @@
     <add key="FormId_ZZSQ" value="FORM-0D007913C9234D92BADE92375CA464A2MHB2" />
     <add key="FormId_ZZDA" value="FORM-91E9DF06D7F14AEA9F71E1BB5410AA884D9C" />
     <add key="FormId_ZZHX" value="FORM-8FC638B3417E47ED86983AB9FD9CAA447V39" />
+    <add key="FormId_BZJ" value="FORM-DFAA5190BC4C45D69D8A8A5566DDCCEEK18H" />
 
     <!--NC写库主键配置-->
     <add key="xx_idcontrast" value="DINGTALKIDC" />
@@ -50,6 +51,8 @@
     <add key="so_saleorder" value="DINGTALKSAL" />
     <add key="so_saleorder_b" value="DINGTALKSAB" />
     <add key="po_order_bb" value="DINGTALKPBB" />
+    <add key="ct_bondapply" value="DINGTALKBDA" />
+    <add key="ct_bondapply_b" value="DINGTALKBDB" />
 
     <!--NC关键字段信息-->
     <!--集团组织主键-->

+ 614 - 0
HH.YiDaSyncNC/DataSync/BZJ_SyncService.cs

@@ -0,0 +1,614 @@
+using HH.YiDaSyncNC.Dtos;
+using HH.YiDaSyncNC.Dtos.NC;
+using HH.YiDaSyncNC.Helper;
+using HH.YiDaSyncNC.Models;
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace HH.YiDaSyncNC.DataSync
+{
+    class BZJ_SyncService
+    {
+        public string _AppType;
+        public string _SystemToken;
+        public string _UserId;
+        public string _FormId;
+        public SqlSugarClient _db;
+        public SqlSugarClient _db_nc;
+        public string _NCApiUrl;
+
+        public static string _Static_PK_ct_bondapply = ConfigurationManager.AppSettings["ct_bondapply"];
+        public static string _Static_PK_ct_bondapply_b = ConfigurationManager.AppSettings["ct_bondapply_b"];
+        public static string _Static_pk_org_jt = ConfigurationManager.AppSettings["pk_org_jt"];
+
+        public BZJ_SyncService(string AppType, string SystemToken, string UserId, string FormId, SqlSugarClient db, SqlSugarClient db_nc, string NCApiUrl)
+        {
+            _AppType = AppType;
+            _SystemToken = SystemToken;
+            _UserId = UserId;
+            _FormId = FormId;
+            _db = db;
+            _db_nc = db_nc;
+            _NCApiUrl = NCApiUrl;
+        }
+
+        public class IdCodeModel
+        {
+            public int sourceId { get; set; }
+            public string Id { get; set; }
+        }
+
+        public class FormItem
+        {
+            public string title { get; set; }
+        }
+
+        public void DataSync()
+        {
+            DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
+
+            // 宜搭全量数据Id
+            //var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lvituew9\":\"正常\"}");
+            //var idList = _dingTalkService.GetFormIdList("{\"textField_lvdosccc\":\"KP_2024071700252\"}");
+
+            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
+
+            LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
+
+            // 获取当前最大Id
+            var newId = 100000001;
+            var maxData = _db_nc.Queryable<bd_project>().OrderByDescending(obd => obd.pk_project).First();
+            if (maxData != null && maxData.pk_project.Contains(_Static_PK_ct_bondapply))
+            {
+                newId = Convert.ToInt32(maxData.pk_project.Replace(_Static_PK_ct_bondapply, "")) + 1;
+            }
+
+            #region 获取NC中选项数据的Id
+            var bd_customerDic = _db_nc.Queryable<bd_customer>().ToList();
+            var bd_incomeDic = _db_nc.Queryable<bd_income>().ToList();
+            var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
+            var bd_projectDic = _db_nc.Queryable<bd_project>().ToList();
+            var bd_materialDic = _db_nc.Queryable<bd_material>().ToList();
+            var bd_measdocDic = _db_nc.Queryable<bd_measdoc>().ToList();
+            var org_deptDic = _db_nc.Queryable<org_dept>().ToList();
+            var bd_psndocDic = _db_nc.Queryable<bd_psndoc>().ToList();
+            var sm_userDic = _db_nc.Queryable<sm_user>().ToList();
+            var bd_defdoc_kplx = _db_nc.Queryable<bd_defdoc>().Where(w => w.pk_defdoclist == "1001G1100000000016FV").ToList(); // 开票类型
+            var bd_defdoc_htywlx = _db_nc.Queryable<bd_defdoc>().Where(w => w.pk_defdoclist == "1001G1100000000010PV").ToList(); // 合同业务类型
+            #endregion
+
+            #region 接口方式
+            // 向NC插入数据
+            foreach (var item in idList)
+            {
+                string createTime = "";
+                string modifyTime = "";
+
+                var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
+
+                // 如果NC单据号为空,说明没有传入过NC,此时需要走此逻辑去创建销售订单等
+                if (ydDataSource.FirstOrDefault(f => f.Key == "textField_ltxyt75m").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["textField_ltxyt75m"].ToString()))
+                {
+                    continue;
+                }
+
+                var ncResData = new List<YiDaResDto>();
+
+
+                #region 表头
+                // 表头
+                var dataSource = new KP_SyncServiceModel.DataModel();
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lvc9x4vo").Value != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lvc9x4vo"].ToString()))
+                    {
+                        var tempData = org_orgsDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lvc9x4vo"].ToString());
+                        if (tempData != null)
+                        {
+                            dataSource.组织 = tempData.code; // 组织
+                        }
+                    }
+                }
+
+                dataSource.单据日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                if (!string.IsNullOrWhiteSpace(ydDataSource["dateField_lw5ud9bk"].ToString()))
+                {
+                    dataSource.单据日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lw5ud9bk"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
+                }
+
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "textField_lvdojfuj").Value != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(ydDataSource["textField_lvdojfuj"].ToString()))
+                    {
+                        var tempData = bd_customerDic.FirstOrDefault(f => f.code == ydDataSource["textField_lvdojfuj"].ToString());
+                        if (tempData != null)
+                        {
+                            dataSource.客户 = tempData.code; // 客户
+                        }
+                    }
+                }
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lvc9x4vq").Value != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lvc9x4vq"].ToString()))
+                    {
+                        var tempData = bd_incomeDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lvc9x4vq"].ToString());
+                        if (tempData != null)
+                        {
+                            dataSource.收款协议 = tempData.code; // 收款协议
+                        }
+                    }
+                }
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "departmentSelectField_lvc7mi3w").Value != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(ydDataSource["departmentSelectField_lvc7mi3w"].ToString()))
+                    {
+                        var tempData = org_deptDic.FirstOrDefault(f => f.name == JsonConvert.DeserializeObject<List<string>>(JsonConvert.SerializeObject(ydDataSource["departmentSelectField_lvc7mi3w"]))[0]);
+                        if (tempData != null)
+                        {
+                            dataSource.部门 = tempData.code; // 部门
+                        }
+                    }
+                }
+
+                dataSource.审批人 = "OA-NC";
+                dataSource.制单人 = "OA-NC";
+                dataSource.创建人 = "OA-NC";
+
+                dataSource.审批时间 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                dataSource.制单时间 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                dataSource.创建时间 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "textField_lvdntzul").Value != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(ydDataSource["textField_lvdntzul"].ToString()))
+                    {
+                        var tempData = bd_projectDic.FirstOrDefault(f => f.project_code == ydDataSource["textField_lvdntzul"].ToString());
+                        if (tempData != null)
+                        {
+                            dataSource.项目 = tempData.project_code; // 项目
+                        }
+                    }
+                }
+
+                dataSource.发票号 = ydDataSource["textField_lvd8pp35"].ToString();
+                dataSource.客户打印名称 = ydDataSource["selectField_lvdojfui"].ToString();
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lvc9x4vp").Value != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lvc9x4vp"].ToString()))
+                    {
+                        var tempName = ydDataSource["selectField_lvc9x4vp"].ToString();
+                        if (ydDataSource["selectField_lvc9x4vp"].ToString() == "增值税专票")
+                        {
+                            tempName = "增值税专用发票";
+                        }
+
+                        if (ydDataSource["selectField_lvc9x4vp"].ToString() == "增值税普票")
+                        {
+                            tempName = "增值税普通发票";
+                        }
+
+                        var tempData = bd_defdoc_kplx.FirstOrDefault(f => f.name == tempName);
+                        if (tempData != null)
+                        {
+                            dataSource.开票类型 = tempData.pk_defdoc; // 开票类型
+                        }
+                    }
+                }
+
+                dataSource.OA单据号 = ydDataSource["textField_lvdosccc"].ToString();
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lvc9x4vn").Value != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lvc9x4vn"].ToString()))
+                    {
+                        if (ydDataSource["selectField_lvc9x4vn"].ToString().Contains("一次性") || ydDataSource["selectField_lvc9x4vn"].ToString().Contains("工程订单"))
+                        {
+                            dataSource.合同业务类型 = "1001G11000000000113F";
+                        }
+                        else
+                        {
+                            var tempData = bd_defdoc_htywlx.FirstOrDefault(f => f.name == ydDataSource["selectField_lvc9x4vn"].ToString());
+                            if (tempData != null)
+                            {
+                                dataSource.合同业务类型 = tempData.pk_defdoc; // 合同业务类型
+                            }
+                        }
+                    }
+                }
+
+                dataSource.年份 = DateTime.Now.ToString("yyyy");
+                dataSource.月份 = DateTime.Now.ToString("MM");
+
+                #endregion
+
+                var detailList = new List<KP_SyncServiceModel.DataModel.OrderB>();
+
+                #region 大业主开票明细
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvc9x4vt").Value != null)
+                {
+                    if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvc9x4vt").Value != null)
+                    {
+                        var detailObjList1 = (List<object>)ydDataSource["tableField_lvc9x4vt"]; // 大业主开票明细
+
+                        if (detailObjList1.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList1.FirstOrDefault())["textField_lvdojfup"].ToString()))
+                        {
+
+                            foreach (var objItem in detailObjList1)
+                            {
+                                var detailItem = new KP_SyncServiceModel.DataModel.OrderB();
+
+                                if (!string.IsNullOrWhiteSpace(((Dictionary<string, object>)objItem)["associationFormField_lvynhq7p_id"].ToString()))
+                                {
+                                    var sourceStr = ((Dictionary<string, object>)objItem)["associationFormField_lvynhq7p_id"].ToString().Replace("\\", "");
+                                    var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
+                                    var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
+
+                                    var materialData = bd_materialDic.FirstOrDefault(f => f.name == b[0].title);
+
+                                    detailItem.物料 = materialData.code; // 物料
+
+                                    var unitCode = bd_measdocDic.FirstOrDefault(f => f.pk_measdoc == materialData.pk_measdoc);
+
+                                    detailItem.计量单位 = unitCode.code; // 计量单位
+                                }
+
+                                var hsdj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2v"].ToString());
+                                var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2z"].ToString());
+                                var wsdj = hsdj - se;
+                                var sl = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2w"].ToString());
+                                var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp30"].ToString());
+                                var jshj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2y"].ToString());
+
+                                // 含税单价
+                                detailItem.含税单价 = hsdj.ToString();
+
+                                // 无税单价
+                                detailItem.无税单价 = wsdj.ToString();
+
+                                //  含税净价
+                                detailItem.含税净价 = hsdj.ToString();
+
+                                // 无税净价
+                                detailItem.无税净价 = wsdj.ToString();
+
+                                // 税额
+                                detailItem.税额 = se.ToString();
+
+                                // 无税金额
+                                detailItem.无税金额 = wsje.ToString();
+
+                                // 数量
+                                detailItem.数量 = sl.ToString();
+
+                                // 价税合计
+                                detailItem.价税合计 = jshj.ToString();
+
+                                detailItem.换算率 = "1.00/1.00";
+                                detailItem.税码 = "CN04"; // 税率码 
+                                detailItem.税率 = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2x"].ToString()).ToString(); // 税率
+
+                                detailItem.开票内容 = ((Dictionary<string, object>)objItem)["textField_lvd8pp2t"].ToString();
+
+                                detailItem.行id = ((Dictionary<string, object>)objItem)["textField_lvdojfup"].ToString();
+
+                                detailList.Add(detailItem);
+                            }
+                        }
+                    }
+                }
+                #endregion
+
+                #region 工程订单开票明细
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvd8pp44").Value != null)
+                {
+                    var detailObjList2 = (List<object>)ydDataSource["tableField_lvd8pp44"]; // 工程订单开票明细
+                    if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvd8pp44").Value != null)
+                    {
+                        if (detailObjList2.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList2.FirstOrDefault())["textField_lvdojfur"].ToString()))
+                        {
+                            dataSource.项目 = "PM99001";
+
+                            foreach (var objItem in detailObjList2)
+                            {
+                                var detailItem = new KP_SyncServiceModel.DataModel.OrderB();
+
+                                if (!string.IsNullOrWhiteSpace(((Dictionary<string, object>)objItem)["associationFormField_lvynrr6a_id"].ToString()))
+                                {
+                                    var sourceStr = ((Dictionary<string, object>)objItem)["associationFormField_lvynrr6a_id"].ToString().Replace("\\", "");
+                                    var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
+                                    var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
+
+                                    var materialData = bd_materialDic.FirstOrDefault(f => f.name == b[0].title);
+
+                                    detailItem.物料 = materialData.code; // 物料
+
+                                    var unitCode = bd_measdocDic.FirstOrDefault(f => f.pk_measdoc == materialData.pk_measdoc);
+
+                                    detailItem.计量单位 = unitCode.code; // 计量单位
+                                }
+
+                                var hsdj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp3y"].ToString());
+                                var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp42"].ToString());
+                                var wsdj = hsdj - se;
+                                var sl = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp3z"].ToString());
+                                var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp43"].ToString());
+                                var jshj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp41"].ToString());
+
+                                // 含税单价
+                                detailItem.含税单价 = hsdj.ToString();
+
+                                // 无税单价
+                                detailItem.无税单价 = wsdj.ToString();
+
+                                //  含税净价
+                                detailItem.含税净价 = hsdj.ToString();
+
+                                // 无税净价
+                                detailItem.无税净价 = wsdj.ToString();
+
+                                // 税额
+                                detailItem.税额 = se.ToString();
+
+                                // 无税金额
+                                detailItem.无税金额 = wsje.ToString();
+
+                                // 数量
+                                detailItem.数量 = sl.ToString();
+
+                                // 价税合计
+                                detailItem.价税合计 = jshj.ToString();
+
+                                detailItem.换算率 = "1.00/1.00";
+                                detailItem.税码 = "CN04"; // 税率码 
+                                detailItem.税率 = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp40"].ToString()).ToString(); // 税率
+
+                                detailItem.开票内容 = ((Dictionary<string, object>)objItem)["textField_lvd8pp3w"].ToString();
+
+                                detailItem.行id = ((Dictionary<string, object>)objItem)["textField_lvdojfur"].ToString();
+
+                                detailList.Add(detailItem);
+                            }
+                        }
+                    }
+                }
+                #endregion
+
+                #region 小业主开票明细
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvdnme13").Value != null)
+                {
+                    var detailObjList3 = (List<object>)ydDataSource["tableField_lvdnme13"]; // 小业主
+                    if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvdnme13").Value != null)
+                    {
+                        if (detailObjList3.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList3.FirstOrDefault())["textField_lvdojfus"].ToString()))
+                        {
+
+                            foreach (var objItem in detailObjList3)
+                            {
+                                var detailItem = new KP_SyncServiceModel.DataModel.OrderB();
+
+                                if (!string.IsNullOrWhiteSpace(((Dictionary<string, object>)objItem)["associationFormField_lvynrr6c_id"].ToString()))
+                                {
+                                    var sourceStr = ((Dictionary<string, object>)objItem)["associationFormField_lvynrr6c_id"].ToString().Replace("\\", "");
+                                    var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
+                                    var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
+
+                                    var materialData = bd_materialDic.FirstOrDefault(f => f.name == b[0].title);
+
+                                    detailItem.物料 = materialData.code; // 物料
+
+                                    var unitCode = bd_measdocDic.FirstOrDefault(f => f.pk_measdoc == materialData.pk_measdoc);
+
+                                    detailItem.计量单位 = unitCode.code; // 计量单位
+                                }
+
+                                var hsdj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0w"].ToString());
+                                var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme10"].ToString());
+                                var wsdj = hsdj - se;
+                                var sl = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0x"].ToString());
+                                var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme11"].ToString());
+                                var jshj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0z"].ToString());
+
+                                // 含税单价
+                                detailItem.含税单价 = hsdj.ToString();
+
+                                // 无税单价
+                                detailItem.无税单价 = wsdj.ToString();
+
+                                //  含税净价
+                                detailItem.含税净价 = hsdj.ToString();
+
+                                // 无税净价
+                                detailItem.无税净价 = wsdj.ToString();
+
+                                // 税额
+                                detailItem.税额 = se.ToString();
+
+                                // 无税金额
+                                detailItem.无税金额 = wsje.ToString();
+
+                                // 数量
+                                detailItem.数量 = sl.ToString();
+
+                                // 价税合计
+                                detailItem.价税合计 = jshj.ToString();
+
+                                detailItem.换算率 = "1.00/1.00";
+                                detailItem.税码 = "CN04"; // 税率码 
+                                detailItem.税率 = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0y"].ToString()).ToString(); // 税率
+
+                                detailItem.开票内容 = ((Dictionary<string, object>)objItem)["textField_lvdnme0u"].ToString();
+
+                                detailItem.行id = ((Dictionary<string, object>)objItem)["textField_lvdojfus"].ToString();
+
+                                detailList.Add(detailItem);
+                            }
+                        }
+                    }
+                }
+                #endregion
+
+                dataSource.明细 = detailList;
+
+                dataSource.数量 = dataSource.明细.Sum(s => Convert.ToDecimal(s.数量)).ToString();
+                dataSource.价税合计 = dataSource.明细.Sum(s => Convert.ToDecimal(s.价税合计)).ToString();
+
+
+                var results_销售订单 = NCImportFunc.NCImport(KP_SyncServiceModel.ImportXml_销售订单.TemplateHeade(), KP_SyncServiceModel.ImportXml_销售订单.Header(dataSource, item + DateTime.Now.ToString("MMddHHmmss")), _NCApiUrl + "?account=LY01&groupcode=0");
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results_销售订单), "results_销售订单");
+
+                XElement xE_销售订单 = XElement.Parse(results_销售订单);
+                string resultcode_销售订单 = xE_销售订单.Element("sendresult").Element("resultcode").Value;
+                string resultdescription_销售订单 = xE_销售订单.Element("sendresult").Element("resultdescription")?.Value;
+
+                if (resultcode_销售订单 == "1")
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = xE_销售订单.Element("sendresult").Element("content").Value,
+                        log = "同步成功!"
+                    });
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + resultdescription_销售订单 + "】!"
+                    });
+
+                    continue;
+                }
+
+                // -------------------------------销售订单同步完,开始同步销售发票
+
+                var saleorderData = _db_nc.Queryable<so_saleorder>().First(f => f.csaleorderid == xE_销售订单.Element("sendresult").Element("content").Value);
+                var saleorderbData = _db_nc.Queryable<so_saleorder_b>().Where(f => f.csaleorderid == xE_销售订单.Element("sendresult").Element("content").Value).ToList();
+
+                dataSource.销售订单单据号 = saleorderData.vbillcode;
+                dataSource.销售订单主表id = saleorderData.csaleorderid;
+
+                foreach (var detailItem in dataSource.明细)
+                {
+                    detailItem.销售订单子表id = saleorderbData.FirstOrDefault(f => f.vbdef10 == detailItem.行id).csaleorderbid;
+                }
+
+                var results_销售发票 = NCImportFunc.NCImport(KP_SyncServiceModel.ImportXml_销售发票.TemplateHeade(), KP_SyncServiceModel.ImportXml_销售发票.Header(dataSource, item + DateTime.Now.ToString("MMddHHmmss")), _NCApiUrl + "?account=LY01&groupcode=0");
+
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results_销售发票), "results_销售发票");
+
+                XElement xE_销售发票 = XElement.Parse(results_销售发票);
+                string resultcode_销售发票 = xE_销售发票.Element("sendresult").Element("resultcode").Value;
+                string resultdescription_销售发票 = xE_销售发票.Element("sendresult").Element("resultdescription")?.Value;
+
+                if (resultcode_销售发票 == "1")
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = xE_销售发票.Element("sendresult").Element("content").Value,
+                        log = "同步成功!"
+                    });
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + resultdescription_销售发票 + "】!"
+                    });
+                }
+
+                // -------------------------------销售发票同步完,开始同步应收
+
+                var saleinvoicebData = _db_nc.Queryable<so_saleinvoice_b>().Where(f => f.csaleinvoiceid == xE_销售发票.Element("sendresult").Element("content").Value).ToList();
+                var squareinvbData = _db_nc.Queryable<so_squareinv_d>().Where(f => f.csquarebillid == xE_销售发票.Element("sendresult").Element("content").Value).ToList();
+
+                dataSource.销售发票主表id = xE_销售发票.Element("sendresult").Element("content").Value;
+
+                //foreach (var detailItem in dataSource.明细)
+                //{
+                //    var a = saleinvoicebData.FirstOrDefault(f => f.vbdef10 == detailItem.行id).csaleinvoicebid;
+                //    var b = squareinvbData.FirstOrDefault(f => f.csquarebillbid == a);
+                //    detailItem.销售发票子表id = b.csalesquaredid;
+                //}
+
+                var results_应收单 = NCImportFunc.NCImport(KP_SyncServiceModel.ImportXml_应收单.TemplateHeade(), KP_SyncServiceModel.ImportXml_应收单.Header(dataSource, item + "02"), _NCApiUrl + "?account=01&groupcode=0");
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results_应收单), "results_应收单");
+
+                XElement xE_应收单 = XElement.Parse(results_应收单);
+                string resultcode_应收单 = xE_应收单.Element("sendresult").Element("resultcode").Value;
+                string resultdescription_应收单 = xE_应收单.Element("sendresult").Element("resultdescription")?.Value;
+
+                var recitemData = _db_nc.Queryable<ar_recitem>().Where(w => w.pk_recbill == xE_应收单.Element("sendresult").Element("content").Value).ToList();
+
+                foreach (var recitem in recitemData)
+                {
+                    recitem.scomment = recitem.def1;
+
+                    _db_nc.Updateable(recitem).ExecuteCommand();
+                }
+
+
+                if (resultcode_应收单 == "1")
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = xE_应收单.Element("sendresult").Element("content").Value,
+                        log = "同步成功!"
+                    });
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + resultdescription_应收单 + "】!"
+                    });
+                }
+
+                var finalResData = new YiDaResDto();
+
+                if (ncResData.FirstOrDefault(f => !f.bSuccess) != null)
+                {
+                    finalResData.bSuccess = false;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE_销售订单.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+                else
+                {
+                    finalResData.bSuccess = true;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE_销售订单.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+
+                var ydRes = _dingTalkService.UpdateFormDataSyncDataById(finalResData, item);
+            }
+
+            #endregion
+        }
+    }
+}

+ 2 - 2
HH.YiDaSyncNC/DataSync/FK_SyncService.cs

@@ -49,7 +49,7 @@ namespace HH.YiDaSyncNC.DataSync
             DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
             // 宜搭全量数据Id
-            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"结付\",,\"selectField_lwiuvaws\":\"日常费用付款\"}");
+            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"结付\",\"selectField_lwiuvaws\":\"日常费用付款\"}");
 
             //var idList = _dingTalkService.GetFormIdList("{\"selectField_lwiuvaws\":\"日常费用付款\",\"selectField_lrnh633d\":\"结付\"}");
 
@@ -91,7 +91,7 @@ namespace HH.YiDaSyncNC.DataSync
 
                 dataSource.支付人 = "OA-NC";
 
-                if (!string.IsNullOrWhiteSpace(ydDataSource["dateField_lwitiobz"].ToString()))
+                if (ydDataSource.FirstOrDefault(f => f.Key == "dateField_lwitiobz").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["dateField_lwitiobz"].ToString()))
                 {
                     dataSource.支付日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lwitiobz"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
                 }

+ 14 - 4
HH.YiDaSyncNC/DataSync/FK_YF_SyncService.cs

@@ -49,11 +49,11 @@ namespace HH.YiDaSyncNC.DataSync
             DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
             // 宜搭全量数据Id
-            // var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"预付\",\"selectField_lwiuvaws\":\"日常费用付款\"}");
+            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"预付\",\"selectField_lwiuvaws\":\"日常费用付款\"}");
 
             //var idList = _dingTalkService.GetFormIdList("{\"selectField_lwiuvaws\":\"日常费用付款\",\"selectField_lrnh633d\":\"结付\"}");
 
-            var idList = _dingTalkService.GetFormIdList("{\"textField_lvj2jklf\":\"FK2024072400058\"}");
+            // var idList = _dingTalkService.GetFormIdList("{\"textField_lvj2jklf\":\"FK2024072400058\"}");
 
             LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
 
@@ -71,6 +71,16 @@ namespace HH.YiDaSyncNC.DataSync
 
                 var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
 
+                // 如果NC单据号不为空,说明付款单已经生成
+                if (ydDataSource.FirstOrDefault(f => f.Key == "textField_ltxyt75m").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["textField_ltxyt75m"].ToString()))
+                {
+                    continue;
+                }
+                else
+                {
+                    
+                }
+
                 var ncResData = new List<YiDaResDto>();
 
                 #region 表头
@@ -90,7 +100,7 @@ namespace HH.YiDaSyncNC.DataSync
 
                 dataSource.支付人 = "OA-NC";
 
-                if (!string.IsNullOrWhiteSpace(ydDataSource["dateField_lwitiobz"].ToString()))
+                if (ydDataSource.FirstOrDefault(f => f.Key == "dateField_lwitiobz").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["dateField_lwitiobz"].ToString()))
                 {
                     dataSource.支付日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lwitiobz"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
                 }
@@ -173,7 +183,7 @@ namespace HH.YiDaSyncNC.DataSync
                     continue;
                 }
 
-                var results = NCImportFunc.NCImport(FK_YF_SyncServiceModel.ImportXml.TemplateHeade(), FK_YF_SyncServiceModel.ImportXml.Header(dataSource, item+"2"), _NCApiUrl + "?account=01&groupcode=0");
+                var results = NCImportFunc.NCImport(FK_YF_SyncServiceModel.ImportXml.TemplateHeade(), FK_YF_SyncServiceModel.ImportXml.Header(dataSource, item + "03"), _NCApiUrl + "?account=LY01&groupcode=0");
 
                 LogHelper.WriteLog(JsonConvert.SerializeObject(results), "results");
 

+ 22 - 15
HH.YiDaSyncNC/DataSync/YF_FPRZ_SyncService.cs

@@ -45,16 +45,12 @@ namespace HH.YiDaSyncNC.DataSync
 
                 DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
-                // 宜搭全量数据Id
-                var serchKeyListJson = new
-                {
-                    radioField_lycrvvtk = "Y",
-                    selectField_lrnh633d = "预付",
-                    textField_lvj2jklf= "FK2024072400058"
-
-                };
-                var idList = _dingTalkService.GetFormIdList(JsonConvert.SerializeObject(serchKeyListJson));
+            
+                var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"预付\",\"selectField_lwiuvaws\":\"日常费用付款\"}");
                 //LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(idList), "发票入账数据");
+
                 #region 获取NC中选项数据的Id
                 var bd_customerDic = _db_nc.Queryable<bd_customer>().ToList();
                 var bd_incomeDic = _db_nc.Queryable<bd_income>().ToList();
@@ -74,10 +70,21 @@ namespace HH.YiDaSyncNC.DataSync
                     string modifyTime = "";
 
                     var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
-                    string jsonData = JsonConvert.SerializeObject(ydDataSource);
-                    YiDa_SKDNC thisYiDaData = JsonConvert.DeserializeObject<YiDa_SKDNC>(jsonData);
 
+                    // 如果NC单据号不为空,说明付款单已经生成,此时才会进行发票入账,否则先等付款单生成后再执行
+                    if (ydDataSource.FirstOrDefault(f => f.Key == "textField_ltxyt75m").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["textField_ltxyt75m"].ToString()))
+                    {
 
+                    }
+                    else
+                    {
+                        continue;
+                    }
+
+                    LogHelper.WriteLog(JsonConvert.SerializeObject(ydDataSource), "发票入账数据执行");
+
+                    string jsonData = JsonConvert.SerializeObject(ydDataSource);
+                    YiDa_SKDNC thisYiDaData = JsonConvert.DeserializeObject<YiDa_SKDNC>(jsonData);
 
                     //if (!thisYiDaData.textField_lw7f953v.Contains("晨莲物业")) continue;//测试
                     if (string.IsNullOrWhiteSpace(thisYiDaData.selectField_lvywoqmb)) continue;
@@ -111,9 +118,9 @@ namespace HH.YiDaSyncNC.DataSync
                     string 制单人 = "OA-NC";
 
 
-                    //if (string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7erc7d)) continue;
+                    if (string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7erc7d)) continue;
 
-                    string 发票拼接 = string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7erc7d) ? "test001/test002" : thisYiDaData.textField_lw7erc7d;
+                    string 发票拼接 = string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7erc7d) ? "" : thisYiDaData.textField_lw7erc7d;
 
                     // 表头
                     var headModel = new FKGL_SyncServiceModel.DataModel.voucher_header()
@@ -194,7 +201,7 @@ namespace HH.YiDaSyncNC.DataSync
 
                     //借方分录 应交增值税\应交税费 - 进项税
                     var sjSum = thisYiDaData.tableField_lrngrtgu.Sum(s => s.numberField_lvxa4v08);
-                    if(sjSum >0)
+                    if (sjSum > 0)
                     {
                         detailList.Add(new FKGL_SyncServiceModel.DataModel.voucher_body()
                         {
@@ -272,7 +279,7 @@ namespace HH.YiDaSyncNC.DataSync
                     xElement.Add(FKGL_SyncServiceModel.ImportXml_凭证.Header(headModel));//添加表头数据
                     xElement.Element("voucher").Element("voucher_head").Element("details").Add(FKGL_SyncServiceModel.ImportXml_凭证.Bodydebit(detailList));
                     //生成凭证
-                    var results_凭证 = NCImportFunc.NCImport2(xElement, _NCApiUrl + "?account=01&groupcode=0");
+                    var results_凭证 = NCImportFunc.NCImport2(xElement, _NCApiUrl + "?account=LY01&groupcode=0");
 
                     LogHelper.WriteLog(JsonConvert.SerializeObject(results_凭证), "results_凭证");
 

+ 2 - 0
HH.YiDaSyncNC/HH.YiDaSyncNC.csproj

@@ -137,6 +137,7 @@
     <Compile Include="DataSync\HKD_GL_SyncService.cs" />
     <Compile Include="DataSync\KH_SyncService.cs" />
     <Compile Include="DataSync\GYS_SyncService.cs" />
+    <Compile Include="DataSync\BZJ_SyncService.cs" />
     <Compile Include="DataSync\KP_TP_SyncService.cs" />
     <Compile Include="DataSync\KP_SyncService.cs" />
     <Compile Include="DataSync\YF_FPRZ_SyncService.cs" />
@@ -208,6 +209,7 @@
     <Compile Include="Models\FK_XZ_SyncServiceModel.cs" />
     <Compile Include="Models\FK_SyncServiceModel.cs" />
     <Compile Include="Models\HKD_GL_SyncServiceModel.cs" />
+    <Compile Include="Models\BZJ_SyncServiceModel.cs" />
     <Compile Include="Models\XSFP_SyncServiceModel.cs" />
     <Compile Include="Models\KP_SyncServiceModel.cs" />
     <Compile Include="Models\CGDD_SyncServiceModel.cs" />

+ 312 - 0
HH.YiDaSyncNC/Models/BZJ_SyncServiceModel.cs

@@ -0,0 +1,312 @@
+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 BZJ_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<OrderB> 明细 { 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_应收单
+        {
+            /// <summary>
+            /// 模板头部份
+            /// </summary>
+            /// <returns></returns>
+            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")
+                }));
+            }
+
+            /// <summary>
+            /// 组建表头xml
+            /// </summary>
+            /// <param name="item">表头参数</param>
+            /// <returns></returns>
+            public static XElement Header(DataModel item, string id)
+            {
+                var bodys = new List<XElement>();
+
+                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),
+                    }),
+                });
+            }
+        }
+    }
+}

+ 21 - 14
HH.YiDaSyncNC/Program.cs

@@ -50,6 +50,7 @@ namespace HH.YiDaSyncNC
         public static string _Static_FormId_ZZDA = ConfigurationManager.AppSettings["FormId_ZZDA"];
         public static string _Static_FormId_ZZHX = ConfigurationManager.AppSettings["FormId_ZZHX"];
         public static string _Static_FormId_ZZSQ = ConfigurationManager.AppSettings["FormId_ZZSQ"];
+        public static string _Static_FormId_BZJ = ConfigurationManager.AppSettings["FormId_BZJ"];
 
         public static string _Static_NCApiUrl = ConfigurationManager.AppSettings["NCApiUrl"];
 
@@ -88,7 +89,6 @@ namespace HH.YiDaSyncNC
                 //kp_tp_SyncService.DataSync();
                 #endregion
 
-
                 #region 采购订单
                 // 采购订单
                 //CGDD_SyncService cgdd_SyncService = new CGDD_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_CGDD, db, db_nc, _Static_NCApiUrl);
@@ -105,8 +105,8 @@ namespace HH.YiDaSyncNC
                 //fk_SyncService.DataSync();
 
                 // 费用报销付款
-                FK_FYBX_SyncService fk_fybx_SyncService = new FK_FYBX_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FYBX, db, db_nc, _Static_NCApiUrl);
-                fk_fybx_SyncService.DataSync();
+                //FK_FYBX_SyncService fk_fybx_SyncService = new FK_FYBX_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FYBX, db, db_nc, _Static_NCApiUrl);
+                //fk_fybx_SyncService.DataSync();
 
                 // 付款单 预付类型 生成凭证 zxh
                 //FKGL_SyncService fkgl_SyncService = new FKGL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
@@ -114,27 +114,34 @@ namespace HH.YiDaSyncNC
                 // 付款单 预付类型 生成应付单 zxh 没用
                 //FKYF_SyncService fkyf_SyncService = new FKYF_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
                 //fkyf_SyncService.DataSync();
-                // 暂支申请  生成凭证 zxh
-                //ZZD_GL_SyncService zzsq_SyncService = new ZZD_GL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZZSQ, db, db_nc, _Static_NCApiUrl);
-                //zzsq_SyncService.DataSync();
-                // 还款单  生成凭证 zxh
-                //HKD_GL_SyncService hkd_SyncService = new HKD_GL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZZHX, db, db_nc, _Static_NCApiUrl);
-                //hkd_SyncService.DataSync();
-
 
                 // 付款单(预付)
-                //FK_YF_SyncService fk_yf_SyncService = new FK_YF_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
-                //fk_yf_SyncService.DataSync();
+                FK_YF_SyncService fk_yf_SyncService = new FK_YF_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
+                fk_yf_SyncService.DataSync();
 
                 // 预付 发票入账  生成凭证 zxh
-                //YF_FPRZ_SyncService yf_fprz_SyncService = new YF_FPRZ_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
-                //yf_fprz_SyncService.DataSync();
+                YF_FPRZ_SyncService yf_fprz_SyncService = new YF_FPRZ_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
+                yf_fprz_SyncService.DataSync();
 
                 // 费用报销单 zxh 用不到
                 //BX_SyncService bx_SyncService = new BX_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FYBX, db, db_nc, _Static_NCApiUrl);
                 //bx_SyncService.DataSyncFYBX();
                 #endregion
 
+                #region 借还款
+                // 暂支申请  生成凭证 zxh
+                //ZZD_GL_SyncService zzsq_SyncService = new ZZD_GL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZZSQ, db, db_nc, _Static_NCApiUrl);
+                //zzsq_SyncService.DataSync();
+                // 还款单  生成凭证 zxh
+                //HKD_GL_SyncService hkd_SyncService = new HKD_GL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZZHX, db, db_nc, _Static_NCApiUrl);
+                //hkd_SyncService.DataSync();
+                #endregion
+
+                #region 保证金
+                //BZJ_SyncService bzj_SyncService = new BZJ_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_BZJ, db, db_nc, _Static_NCApiUrl);
+                //bzj_SyncService.DataSync();
+                #endregion
+
                 Environment.Exit(0);
             }
             catch (Exception ex)