Преглед изворни кода

新增售后数据,新增批量通过

zhuyiyi пре 2 недеља
родитељ
комит
face28156e

+ 31 - 12
SiteCore/Handler/sync.order.cs

@@ -52,6 +52,7 @@ using NPOI.POIFS.Properties;
 using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
 using static SiteCore.taoObj.Api_tmc_refund_info_Obj;
 using System.Threading.Tasks;
+using SiteCore.taoObj.WebApi;
 
 namespace SiteCore.Handler
 {
@@ -12179,22 +12180,40 @@ namespace SiteCore.Handler
                 string ctid = GetPostString("ctid");
                 if (ctid.Length > 0)
                 {
-                    CeErpTradeAfterSaleExtend ceErpTradeAfterSaleExtend = CeErpTradeAfterSaleExtend.getByTid(ctid);
-                    if (ceErpTradeAfterSaleExtend == null)
-                    {
-                        ceErpTradeAfterSaleExtend = new CeErpTradeAfterSaleExtend();
-                        ceErpTradeAfterSaleExtend.tid = ctid;
-                    }
-                    ceErpTradeAfterSaleExtend.AfterSalSend = 1;
-                    if (ceErpTradeAfterSaleExtend.ID > 0)
+                    List<string> list = new List<string>();
+                    string[] ctid_list = ctid.Split(',');
+                    foreach (var item in ctid_list)
                     {
-                        ceErpTradeAfterSaleExtend.Update();
+                        try
+                        {
+                            CeErpTradeAfterSaleExtend ceErpTradeAfterSaleExtend = CeErpTradeAfterSaleExtend.getByTid(item);
+                            if (ceErpTradeAfterSaleExtend == null)
+                            {
+                                ceErpTradeAfterSaleExtend = new CeErpTradeAfterSaleExtend();
+                                ceErpTradeAfterSaleExtend.tid = item;
+                            }
+                            ceErpTradeAfterSaleExtend.AfterSalSend = 1;
+                            if (ceErpTradeAfterSaleExtend.ID > 0)
+                            {
+                                ceErpTradeAfterSaleExtend.Update();
+                            }
+                            else
+                            {
+                                ceErpTradeAfterSaleExtend.Create();
+                            }
+                            LogHelper.addLog(item, CurrentUser.UserID, "跟单完成", 6, 4);
+                        }
+                        catch (Exception ex)
+                        {
+                            list.Add(item);
+                        }
                     }
-                    else
+
+                    if (list.Count > 0)
                     {
-                        ceErpTradeAfterSaleExtend.Create();
+                        returnSuccessMsg(list.Count + "个订单修改失败!" + string.Join(",", list));
+                        return;
                     }
-                    LogHelper.addLog(ctid, CurrentUser.UserID, "跟单完成", 6, 4);
                     returnSuccessMsg("修改成功!");
                     return;
 

+ 85 - 0
SiteCore/Handler/sync.orderReport.cs

@@ -2732,6 +2732,91 @@ namespace SiteCore.Handler
 
             }
 
+            sql.AppendFormat("SELECT s.ComName  ,o.AfterSaleReason, COUNT ( * ) AS AllOrder  FROM CE_ErpTradeCell o LEFT JOIN CE_ErpSupplier s ON s.ID = o.SupplierId  WHERE 1 = 1 AND o.AfterSaleState >= 1  AND o.AfterSaleResSupId > 0  {0}  GROUP BY o.AfterSaleReason, s.ComName ORDER BY s.ComName DESC", sqlDate);
+            DataTable dtafter = DbHelper.DbConn.ExecuteDataset(sql.ToString()).Tables[0];
+            DataTable dt = new DataTable();
+            dt.Columns.Add(new DataColumn("ComName", typeof(string)));
+            dt.Columns.Add(new DataColumn("AfterSaleReason1", typeof(string)));
+            dt.Columns.Add(new DataColumn("AfterSaleReason2", typeof(string)));
+            dt.Columns.Add(new DataColumn("AfterSaleReason3", typeof(string)));
+            dt.Columns.Add(new DataColumn("AfterSaleReason4", typeof(string)));
+            dt.Columns.Add(new DataColumn("AllOrder", typeof(string)));
+            dt.Columns.Add(new DataColumn("rate", typeof(string)));
+            DataRow dr_he = dt.NewRow();
+            dr_he[0] = "合计";
+            dr_he[1] = 0;
+            dr_he[2] = 0;
+            dr_he[3] = 0;
+            dr_he[4] = 0;
+            dr_he[5] = 0;
+            dr_he[6] = 0;
+            foreach (DataRow row in dtafter.Rows)
+            {
+                string reason = row["AfterSaleReason"].ToString();
+                string[] reason_list = reason.Split(new char[] { '|' });
+                DataRow dr = dt.NewRow();
+                dr[0] = row["ComName"];
+                if (reason_list.Length > 0)
+                {
+                    dr[1] = reason_list[0];
+                }
+                if (reason_list.Length > 1)
+                {
+                    dr[2] = reason_list[1];
+                }
+                if (reason_list.Length > 2)
+                {
+                    dr[3] = reason_list[2];
+                }
+                if (reason_list.Length > 3)
+                {
+                    dr[4] = reason_list[3];
+                }
+                dr[5] = row["AllOrder"];
+                dr[6] = 0;
+
+                dt.Rows.Add(dr);
+                dr_he[5] = Convert.ToDecimal(dr_he[5]) + Convert.ToDecimal(dr[5]);
+            }
+            foreach (DataRow row in dt.Rows)
+            {
+                row[6] = Math.Round(Math.Round(Convert.ToDecimal(row[5]) / Convert.ToDecimal(dr_he[5]), 4) * 100, 2);
+            }
+            dr_he[6] = 100;
+            dt.Rows.Add(dr_he);
+            DataView dv = new DataView(dt);
+            //dv.Sort = "AllOrder desc";
+            DataTable dtNew = dv.ToTable();
+            writeGridDataTableJson(dtNew.Rows.Count, dtNew);
+
+        }public void get_erp_aftersale_sup_product_gather()
+        {
+            string date1 = GetPostString("date1");
+            string date2 = GetPostString("date2");
+            string pay_date1 = GetPostString("pay_date1");
+            string pay_date2 = GetPostString("pay_date2");
+
+            if (date1.Length <= 0 && pay_date1.Length <= 0)
+            {
+                pay_date1 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0).ToString("yyyy-MM-dd HH:mm:ss");
+                pay_date2 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59).ToString("yyyy-MM-dd HH:mm:ss");
+            }
+
+            StringBuilder sql = new StringBuilder();
+
+            StringBuilder sqlDate = new StringBuilder();
+
+            if (date1.Length > 0)
+            {
+                sqlDate.AppendFormat("and o.HandleTime >= '{0}' AND o.HandleTime < '{1}'", date1, date2);
+
+            }
+            if (pay_date1.Length > 0)
+            {
+                sqlDate.AppendFormat("and o.pay_time >= '{0}' AND o.pay_time < '{1}'", pay_date1, pay_date2);
+
+            }
+
             sql.AppendFormat("SELECT s.ComName  ,p.PType,o.AfterSaleReason, COUNT ( * ) AS AllOrder  FROM CE_ErpTradeCell o LEFT JOIN CE_ErpSupplier s ON s.ID = o.SupplierId LEFT JOIN CE_ErpProduct p ON o.ProductId = p.id   WHERE 1 = 1 AND o.AfterSaleState >= 1  AND o.AfterSaleResSupId > 0  {0}  GROUP BY o.AfterSaleReason, s.ComName,p.PType   ORDER BY s.ComName DESC", sqlDate);
             DataTable dtafter = DbHelper.DbConn.ExecuteDataset(sql.ToString()).Tables[0];
             DataTable dt = new DataTable();

+ 3 - 3
Web/EAfterSale/Handling.aspx

@@ -56,8 +56,8 @@
             for (var rec of rows) {
                 list.push(rec.ctid)
             }
-            if (!confirm("批量通过售后单,确认?")) return;
-            postAjax("aftersale_batch_audit_master", "ctids=" + list.join(","), function (data) {
+            if (!confirm("批量完成跟单,确认?")) return;
+            postAjax("aftersale_documentary_finish", "ctid=" + list.join(","), function (data) {
                 resultShow(data, "grid.reload();");
             });
         }
@@ -87,7 +87,7 @@
 </asp:Content>
 <asp:Content ID="Content2" ContentPlaceHolderID="btn" runat="Server">
     <a id="btnExport" runat="server" class="mini-button mini-button-success" iconcls="icon-folder" onclick="exportFn()">导出</a>
-    <a id="btnBatchverify" runat="server" class="mini-button mini-button-success" iconcls="icon-folder" onclick="batchverify()">批量通过</a>
+    <a id="btnBatchverify" runat="server" class="mini-button mini-button-success" iconcls="icon-folder" onclick="batchverify()">批量完成跟单</a>
     <div class="hz">
         <span id="normon">
             <a id="id_waitHandle" style="color: red; margin-left: 10px;" href="javascript:searchWaitFn();">(0)</a>

+ 17 - 1
Web/ECharts/AfterSaleGather.aspx

@@ -470,12 +470,28 @@
                         </div>
                     </div>
                 </div>
+                <div id="sup_product_after_grid_panel" class="mini-panel mini-panel-info" title="产品售后原因" style="width: 50%; padding: 0px">
+                    <div id="sup_product_after_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
+                        emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_sup_product_gather">
+                        <div property="columns">
+                            <div field="ComName" name="ComName" width="60" align="center" headeralign="center">车间名称</div>
+                            <div field="PType" name="PType" width="60" align="center" headeralign="center">产品名称</div>
+                            <div field="AfterSaleReason1" name="AfterSaleReason1" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因1</div>
+                            <div field="AfterSaleReason2" name="AfterSaleReason2" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因2</div>
+                            <div field="AfterSaleReason3" name="AfterSaleReason3" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因3</div>
+                            <div field="AfterSaleReason4" name="AfterSaleReason3" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因4</div>
+                            <div field="AllOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后数量</div>
+                            <div field="rate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后率</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div style="display: flex; gap: 10px">
                 <div id="sup_after_grid_panel" class="mini-panel mini-panel-info" title="售后原因" style="width: 50%; padding: 0px">
                     <div id="sup_after_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
                         emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_sup_gather">
                         <div property="columns">
                             <div field="ComName" name="ComName" width="60" align="center" headeralign="center">车间名称</div>
-                            <div field="PType" name="PType" width="60" align="center" headeralign="center">产品名称</div>
                             <div field="AfterSaleReason1" name="AfterSaleReason1" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因1</div>
                             <div field="AfterSaleReason2" name="AfterSaleReason2" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因2</div>
                             <div field="AfterSaleReason3" name="AfterSaleReason3" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因3</div>