晓海 曾 před 2 roky
rodič
revize
870cf43fd3

+ 2 - 0
HH.YiDaSyncNC/App.config

@@ -32,6 +32,7 @@
     <add key="FormCode_FYBXD" value="TPROC--J1A66U81S5VHPM8C8H1N1D11U8VL3VRWEHNRL3" />
     <add key="FormCode_CLBXD" value="TPROC--5L666481BADIN79I7U3PV7NY34HC3M0CL1XSL3" />
     <add key="FormCode_ZZSQ" value="TPROC--KW766OD1LVUH19EE9PQH67Q4JOZ03N5ULHNRL2" />
+    <add key="FormCode_FPRZD" value="TPROC--49866OC10V4L1RL8B5066DXHZCMK3O556F7WL0" />
     <!--表单-->
     <add key="FormId_FYBXD" value="FORM-0C15BF8B40EA475C898190288E3057D8UO5W" />
     <add key="FormId_CLBXD" value="FORM-0851B163795E4EB78728C70D85132BE4QTN5" />
@@ -43,6 +44,7 @@
     <add key="FormId_ZZDA" value="FORM-91E9DF06D7F14AEA9F71E1BB5410AA884D9C" />
     <add key="FormId_ZZHX" value="FORM-8FC638B3417E47ED86983AB9FD9CAA447V39" />
     <add key="FormId_BZJ" value="FORM-DFAA5190BC4C45D69D8A8A5566DDCCEEK18H" />
+    <add key="FormId_FPRZD" value="FORM-894C9445405B4A9FA8625DA1B7CDC6D6Y0B4" />
 
     <!--NC写库主键配置-->
     <add key="xx_idcontrast" value="DINGTALKIDC" />

+ 71 - 26
HH.YiDaSyncNC/DataSync/YF_FPRZ_SyncService.cs

@@ -45,8 +45,16 @@ namespace HH.YiDaSyncNC.DataSync
 
                 DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
-            
-                var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"预付\",\"selectField_lwiuvaws\":\"日常费用付款\"}");
+                var searchKey = new
+                {
+
+                    radioField_lycrvvtk = "Y",
+                    selectField_lrnh633d = "预付",
+
+
+                };
+
+                var idList = _dingTalkService.GetFormCodeList(JsonConvert.SerializeObject(searchKey));
                 //LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
 
                 LogHelper.WriteLog(JsonConvert.SerializeObject(idList), "发票入账数据");
@@ -66,37 +74,75 @@ namespace HH.YiDaSyncNC.DataSync
 
                 foreach (var item in idList)
                 {
-                    string createTime = "";
-                    string modifyTime = "";
+                    //string createTime = "";
+                    //string modifyTime = "";
 
-                    var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
+                    var ydDataSource = _dingTalkService.GetFormDataByCode(item);
 
-                    // 如果NC单据号不为空,说明付款单已经生成,此时才会进行发票入账,否则先等付款单生成后再执行
-                    if (ydDataSource.FirstOrDefault(f => f.Key == "textField_ltxyt75m").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["textField_ltxyt75m"].ToString()))
+                    LogHelper.WriteLog(JsonConvert.SerializeObject(ydDataSource), "发票入账数据执行");
+
+                    string jsonData = JsonConvert.SerializeObject(ydDataSource);
+                    YiDa_FPRZD thisYiDaData = JsonConvert.DeserializeObject<YiDa_FPRZD>(jsonData);
+
+                    if (string.IsNullOrWhiteSpace(thisYiDaData.textField_lzh0m1lg))
                     {
 
+                        LogHelper.WriteLog("供应商为空", "发票入账数据执行");
+                        continue;
+
                     }
-                    else
+                    if (string.IsNullOrWhiteSpace(thisYiDaData.textField_lzh0m1lh))
                     {
+
+                        LogHelper.WriteLog("成本组织为空", "发票入账数据执行");
                         continue;
+
                     }
+                    if (thisYiDaData.associationFormField_lzh0m1le_id is null)
+                    {
 
-                    LogHelper.WriteLog(JsonConvert.SerializeObject(ydDataSource), "发票入账数据执行");
+                        LogHelper.WriteLog("供应商为空", "发票入账数据执行");
+                        continue;
+
+                    }
+                    var 供应商编码 = thisYiDaData.textField_lzhtchrg;
+                    if (string.IsNullOrWhiteSpace(供应商编码))
+                    {
+
+                        LogHelper.WriteLog("供应商编码为空", "发票入账数据执行");
+                        continue;
+
+                    }
+                    if (thisYiDaData.tableField_lsx02qv5 is null || thisYiDaData.tableField_lsx02qv5.Count == 0)
+                    {
+
+                        LogHelper.WriteLog("发票明细为空", "发票入账数据执行");
+                        continue;
+
+                    }
+                    if (thisYiDaData.tableField_lrngrtgu is null || thisYiDaData.tableField_lrngrtgu.Count == 0)
+                    {
+
+                        LogHelper.WriteLog("入账明细为空", "发票入账数据执行");
+                        continue;
+
+                    }
+                    if (thisYiDaData.tableField_lsx02qv5.Any(s => string.IsNullOrWhiteSpace(s.textField_lsx02qv8)))
+                    {
+                        LogHelper.WriteLog("发票明细-发票号为空", "发票入账数据执行");
+                        continue;
+                    }
 
-                    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;
                     //取值 宜搭表单的某个字段当作凭证日期 如果 支付完成时间 为null,就用 提交时间
                     DateTime 凭证日期 = DateTime.Now;
                     //thisYiDaData.dateField_lwitiobz is null
                     //    ? UnixTimeHelper.ConvertMillisecondsToDateTime(thisYiDaData.dateField_lviv4sfy)
                     //    : UnixTimeHelper.ConvertMillisecondsToDateTime((long)thisYiDaData.dateField_lwitiobz);
                     string 组织 = "";
-                    if (!string.IsNullOrWhiteSpace(thisYiDaData.selectField_lvywoqmb))
+                    if (!string.IsNullOrWhiteSpace(thisYiDaData.textField_lzh0m1lh))
                     {
-                        var tempData = org_orgsDic.FirstOrDefault(f => f.name == thisYiDaData.selectField_lvywoqmb);
+                        var tempData = org_orgsDic.FirstOrDefault(f => f.name == thisYiDaData.textField_lzh0m1lh);
                         if (tempData != null)
                         {
                             组织 = tempData.code; // 组织
@@ -105,9 +151,9 @@ namespace HH.YiDaSyncNC.DataSync
 
 
                     string 账簿 = "";
-                    if (!string.IsNullOrWhiteSpace(thisYiDaData.selectField_lvywoqmb))
+                    if (!string.IsNullOrWhiteSpace(thisYiDaData.textField_lzh0m1lh))
                     {
-                        var tempData = org_accountingbookDic.FirstOrDefault(f => f.name == thisYiDaData.selectField_lvywoqmb + "-蓝云账簿");
+                        var tempData = org_accountingbookDic.FirstOrDefault(f => f.name == thisYiDaData.textField_lzh0m1lh + "-蓝云账簿");
                         if (tempData != null)
                         {
                             账簿 = tempData.code; // 账簿
@@ -118,9 +164,8 @@ namespace HH.YiDaSyncNC.DataSync
                     string 制单人 = "OA-NC";
 
 
-                    if (string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7erc7d)) continue;
 
-                    string 发票拼接 = string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7erc7d) ? "" : thisYiDaData.textField_lw7erc7d;
+                    string 发票拼接 = string.Join("/", thisYiDaData.tableField_lsx02qv5.Select(s => s.textField_lsx02qv8).ToList());
 
                     // 表头
                     var headModel = new FKGL_SyncServiceModel.DataModel.voucher_header()
@@ -139,8 +184,8 @@ namespace HH.YiDaSyncNC.DataSync
                     int index = 1;
                     foreach (var dataObj in thisYiDaData.tableField_lrngrtgu)
                     {
-                        var 项目编码 = dataObj.radioField_lypfw8rv == "项目" ? dataObj.textField_lypfw8rw : "";
-                        var 部门编码 = dataObj.radioField_lypfw8rv == "机关" ? dataObj.textField_lypfw8rw : "";
+                        var 项目编码 = dataObj.radioField_ly71lpio == "项目" ? dataObj.textField_ly7257rx : "";
+                        var 部门编码 = dataObj.radioField_ly71lpio == "机关" ? dataObj.textField_ly7257rx : "";
 
                         var assList = new List<FKGL_SyncServiceModel.DataModel.ass>();
                         if (!string.IsNullOrWhiteSpace(项目编码))
@@ -165,8 +210,8 @@ namespace HH.YiDaSyncNC.DataSync
                         detailList.Add(new FKGL_SyncServiceModel.DataModel.voucher_body()
                         {
                             detailindex = index,
-                            accsubjcode = dataObj.textField_lwitioce,//科目编码 预付账款
-                            pk_accasoa = dataObj.textField_lwitioce,//科目编码 
+                            accsubjcode = dataObj.textField_lrnh633r,//科目编码 预付账款
+                            pk_accasoa = dataObj.textField_lrnh633r,//科目编码 
                             explanation = dataObj.textField_lvxa4v05,//摘要 
                             verifydate = 凭证日期.ToString("yyyy-MM-dd"),
                             price = "0.00000000",
@@ -246,8 +291,8 @@ namespace HH.YiDaSyncNC.DataSync
                         verifydate = 凭证日期.ToString("yyyy-MM-dd"),
                         price = "0.00000000",
                         excrate2 = "1",
-                        creditamount = thisYiDaData.numberField_lvua3j18.ToString(),//贷方金额 
-                        localcreditamount = thisYiDaData.numberField_lvua3j18.ToString(),//贷方金额 
+                        creditamount = thisYiDaData.numberField_lu2habj9.ToString(),//贷方金额 
+                        localcreditamount = thisYiDaData.numberField_lu2habj9.ToString(),//贷方金额 
                         debitquantity = "0.00000000",
                         debitamount = "0.00000000",
                         groupdebitamount = "0.00000000",
@@ -270,7 +315,7 @@ namespace HH.YiDaSyncNC.DataSync
                                     new FKGL_SyncServiceModel.DataModel.ass()
                                     {
                                         pk_Checktype ="0019",//0019-供应商辅助核算
-                                        pk_Checkvalue = thisYiDaData.textField_lwitiobt,//供应商编码
+                                        pk_Checkvalue = 供应商编码,//供应商编码
                                     }
                                 },
                     });

+ 94 - 0
HH.YiDaSyncNC/Dtos/YIDA/YiDa_FPRZD.cs

@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HH.YiDaSyncNC.Dtos.YIDA
+{
+    public class YiDa_FPRZD
+    {
+        /// <summary>
+        /// 关联供应商 供应商编码
+        /// </summary>
+        public string associationFormField_lzh0m1le_id { get; set; }
+        /// <summary>
+        /// 供应商编号
+        /// </summary>
+        public string textField_lzhtchrg { get; set; }
+        /// <summary>
+        /// 供应商名称
+        /// </summary>
+        public string textField_lzh0m1lg { get; set; }
+        /// <summary>
+        /// 成本组织
+        /// </summary>
+        public string textField_lzh0m1lh { get; set; }
+        /// <summary>
+        /// 关联预付单
+        /// </summary>
+        public object tableField_lzgzznq8 { get; set; }
+        /// <summary>
+        /// 入账明细
+        /// </summary>
+        public List<RZMX> tableField_lrngrtgu { get; set; }
+        /// <summary>
+        /// 发票明细
+        /// </summary>
+        public List<FPMX> tableField_lsx02qv5 { get; set; }
+        /// <summary>
+        /// 发票金额合计
+        /// </summary>
+        public decimal numberField_lu2habj9 { get; set; }
+    }
+    public class RZMX
+    {
+
+        /// <summary>
+        /// 摘要
+        /// </summary>
+        public string textField_lvxa4v05 { get; set; }
+        /// <summary>
+        /// 项目/部门(成本分摊)
+        /// </summary>
+        public object selectField_ly7257rv { get; set; }
+        /// <summary>
+        /// 项目/部门ID
+        /// </summary>
+        public string textField_ly7257rx { get; set; }
+        /// <summary>
+        /// 项目/部门类型
+        /// </summary>
+        public string radioField_ly71lpio { get; set; }
+        /// <summary>
+        /// 科目编码
+        /// </summary>
+        public string textField_lrnh633r { get; set; }
+        /// <summary>
+        /// 金额
+        /// </summary>
+        public decimal numberField_lvua3j17 { get; set; }
+        /// <summary>
+        /// 税金
+        /// </summary>
+        public decimal numberField_lvxa4v08 { get; set; }
+        /// <summary>
+        /// 无税金额
+        /// </summary>
+        public decimal numberField_lvxa4v09 { get; set; }
+    }
+
+
+    public class FPMX
+    {
+        /// <summary>
+        /// 发票号
+        /// </summary>
+        public string textField_lsx02qv8 { get; set; }
+    }
+
+    public class GYS
+    {
+        public string title { get; set; }
+    }
+}

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

@@ -186,6 +186,7 @@
     <Compile Include="Dtos\SyncRecord_XMD.cs" />
     <Compile Include="Dtos\SyncRecord_WL.cs" />
     <Compile Include="Dtos\YiDaResDto.cs" />
+    <Compile Include="Dtos\YIDA\YiDa_FPRZD.cs" />
     <Compile Include="Dtos\YIDA\YiDa_FYBXD.cs" />
     <Compile Include="Dtos\YIDA\YiDa_SKDNC.cs" />
     <Compile Include="Dtos\YIDA\YiDa_ZZDA.cs" />

+ 8 - 6
HH.YiDaSyncNC/Program.cs

@@ -51,6 +51,8 @@ namespace HH.YiDaSyncNC
         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_FormCode_FPRZD = ConfigurationManager.AppSettings["FormCode_FPRZD"];
+        public static string _Static_FormId_FPRZD = ConfigurationManager.AppSettings["FormId_FPRZD"];
 
         public static string _Static_NCApiUrl = ConfigurationManager.AppSettings["NCApiUrl"];
 
@@ -81,8 +83,8 @@ namespace HH.YiDaSyncNC
                 #endregion
 
                 #region 开票
-                KP_SyncService kp_SyncService = new KP_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_KP, db, db_nc, _Static_NCApiUrl);
-                kp_SyncService.DataSync();
+                //KP_SyncService kp_SyncService = new KP_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_KP, db, db_nc, _Static_NCApiUrl);
+                //kp_SyncService.DataSync();
 
                 // 退票
                 //KP_TP_SyncService kp_tp_SyncService = new KP_TP_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_KP, db, db_nc, _Static_NCApiUrl);
@@ -116,12 +118,12 @@ namespace HH.YiDaSyncNC
                 //fkyf_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_FPRZD, 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);