/// <summary> /// 收款的新增和修改 /// Created:20170328(ChengMengjia) /// </summary> /// <param name="entity"></param> /// <returns></returns> public JsonResult SaveSK(Receivables entity) { JsonResult jsonreslut = new JsonResult(); try { if (string.IsNullOrEmpty(entity.ID)) { new Repository <Receivables>().Insert(entity, true); } else { new Repository <Receivables>().Update(entity, true); } jsonreslut.result = true; jsonreslut.msg = "保存成功!"; } catch (Exception ex) { LogHelper.WriteException(ex, LogType.BussinessDLL); jsonreslut.result = false; jsonreslut.msg = ex.Message; } return(jsonreslut); }
/// <summary> /// 计算业务员业绩 /// </summary> /// <param name="row"></param> /// <param name="recType"></param> /// <param name="rate"></param> /// <param name="isHold"></param> private void SalesPerformance(DataRow row, Receivables recType, double rate, PerformanceType type, bool isHold = false) { string sql = string.Empty; string salesID = string.Empty; string salesName = string.Empty; string deptID = string.Empty; deptID = GetDeptID(row["SalesID"].ToString(), row["ReceiptDate"].ToString()); //调岗时认购业务员也默认此部门,目前此字段无用 if (isHold) { salesID = row["SubscribeSalesID"].ToString(); salesName = row["SubscribeSalesName"].ToString(); } else { salesID = row["SalesID"].ToString(); salesName = row["SalesName"].ToString(); } string performance = Math.Round(double.Parse(row["RecSettleTotal"].ToString()) * rate / 100, 0, MidpointRounding.AwayFromZero).ToString(); sql = "insert into PerformanceDetail (SettleDID,SettleID,SalesID,SalesName,DeptID,ReceiptDate, " + "ReceiptTypeCode,ReceiptTypeName,ItemTypeCode,ItemTypeName,ReceiptAmount,Performance,PerformanceType,SalesType) " + " values ( " + row["ID"].ToString() + "," + row["SettleID"].ToString() + "," + salesID + ",'" + salesName + "'" + "," + deptID + ",'" + row["ReceiptDate"].ToString() + "'" + "," + (int)recType + ",'" + recType + "'" + "," + row["ItemTypeCode"].ToString() + ",'" + row["ItemTypeName"].ToString() + "'" + "," + row["RecSettleTotal"].ToString() + "," + performance + "," + (int)type + ",'员工'" + ")"; SqlHelper.ExecuteNonQuery(sql); }
//主管业务统计 private void MngPerformance(DataRow row, Receivables recType, string deptID, string recSalesID) { string sql = string.Empty; string salesID = string.Empty; string salesName = string.Empty; string recDate = row["ReceiptDate"].ToString(); //主管ID sql = string.Format("select SalesID, SalesName from JobTrack where JobType = '主管' and DeptID = {0} and ((BeginDate <= '{1}' and EndDate > '{1}') or (BeginDate <= '{1}' and EndDate is null))", deptID, recDate); DataTable dtMng = SqlHelper.ExecuteDataTable(sql); foreach (DataRow dr in dtMng.Rows) { salesID = dr["SalesID"].ToString(); salesName = dr["SalesName"].ToString(); if (salesID == recSalesID) { continue; //主管与员工为同一人时,不计算主管业务 } PerformanceType performanceType = PerformanceType.own; double rate = 100; sql = string.Format("select SalesID from JobTrack where DeptID = {0} and ((BeginDate <= '{1}' and EndDate > '{1}') or (BeginDate <= '{1}' and EndDate is null)) and SalesID = {2}", deptID, row["SubscribeDate"].ToString(), dr["SalesID"].ToString()); object objResult = SqlHelper.ExecuteScalar(sql); if (objResult == null) //认购时间与任职期间不匹配,为分配业绩 { drRate = dtRate.Select("Code = 1"); //allot rate = double.Parse(drRate[0]["Rate"].ToString()); performanceType = PerformanceType.allot; } string performance = Math.Round(double.Parse(row["RecSettleTotal"].ToString()) * rate / 100, 0, MidpointRounding.AwayFromZero).ToString(); sql = "insert into PerformanceDetail (SettleDID,SettleID,SalesID,SalesName,DeptID,ReceiptDate, " + "ReceiptTypeCode,ReceiptTypeName,ItemTypeCode,ItemTypeName,ReceiptAmount,Performance,PerformanceType, SalesType) " + " values ( " + row["ID"].ToString() + "," + row["SettleID"].ToString() + "," + salesID + ",'" + salesName + "'" + "," + deptID + ",'" + row["ReceiptDate"].ToString() + "'" + "," + (int)recType + ",'" + recType + "'" + "," + row["ItemTypeCode"].ToString() + ",'" + row["ItemTypeName"].ToString() + "'" + "," + row["RecSettleTotal"].ToString() + "," + performance + "," + (int)performanceType + ",'主管'" + ")"; SqlHelper.ExecuteNonQuery(sql); } string parentDeptID = GetParentDeptID(deptID); if ((parentDeptID != "") && (parentDeptID != "0")) { MngPerformance(row, recType, parentDeptID, recSalesID); } }
private void Performance() { string settleId = dataGridView_SettleMain.CurrentRow.Cells["ColSettleID"].Value.ToString(); string sql = string.Format("select ID, SettleID, ContractID, ItemTypeCode, ItemTypeName, SubscribeDate, SubscribeSalesID,SubscribeSalesName, ReceiptDate, SalesID, SalesName, RecSettleTotal, FirstSettle from SettleDetail where SettleID = {0}", settleId); DataTable dtSettleDetail = SqlHelper.ExecuteDataTable(sql); foreach (DataRow drSettle in dtSettleDetail.Rows) { double rate = 0; if (drSettle["FirstSettle"].ToString().Equals("1")) //成销 { PerformanceType performanceType = GetSalesPerformanceType(drSettle["SubscribeSalesID"].ToString(), drSettle["SalesID"].ToString()); switch (performanceType) { case PerformanceType.own: //个人 SalesPerformance(drSettle, Receivables.成销, 100, performanceType); break; case PerformanceType.allot: //分配 drRate = dtRate.Select("Code = 1"); //allot rate = double.Parse(drRate[0]["Rate"].ToString()); SalesPerformance(drSettle, Receivables.成销, rate, performanceType); break; case PerformanceType.hold: //调岗 drRate = dtRate.Select("Code = 2"); //hold rate = double.Parse(drRate[0]["Rate"].ToString()); SalesPerformance(drSettle, Receivables.成销, rate, performanceType, true); drRate = dtRate.Select("Code = 3"); //takeover rate = double.Parse(drRate[0]["Rate"].ToString()); SalesPerformance(drSettle, Receivables.成销, rate, performanceType); break; } string myid = drSettle["ID"].ToString(); Console.WriteLine("the ID: " + myid); string deptID = GetDeptID(drSettle["SalesID"].ToString(), drSettle["ReceiptDate"].ToString()); MngPerformance(drSettle, Receivables.成销, deptID, drSettle["SalesID"].ToString()); } else { sql = string.Format("select a.ID, a.SettleID, ItemTypeCode, ItemTypeName, SubscribeDate, SubscribeSalesID,SubscribeSalesName," + "b.SalesID, b.SalesName, RecDate as ReceiptDate, b.Amount as RecSettleTotal,TypeCode from SettleDetail a " + "inner join Receipt b on a.ContractID = b.ContractID and a.SettleID = b.SettleState " + "where a.ContractID = {0} and SettleState = {1}", drSettle["ContractID"].ToString(), settleId); DataTable dtReceipt = SqlHelper.ExecuteDataTable(sql); foreach (DataRow drReceipt in dtReceipt.Rows) { PerformanceType performanceType = GetSalesPerformanceType(drReceipt["SubscribeSalesID"].ToString(), drReceipt["SalesID"].ToString()); Receivables recType = (Receivables)int.Parse(drReceipt["TypeCode"].ToString()); switch (performanceType) { case PerformanceType.own: //个人 SalesPerformance(drReceipt, recType, 100, performanceType); break; case PerformanceType.allot: //分配 drRate = dtRate.Select("Code = 1"); //allot rate = double.Parse(drRate[0]["Rate"].ToString()); SalesPerformance(drReceipt, recType, rate, performanceType); break; case PerformanceType.hold: //调岗 drRate = dtRate.Select("Code = 2"); //hold rate = double.Parse(drRate[0]["Rate"].ToString()); SalesPerformance(drReceipt, recType, rate, performanceType, true); drRate = dtRate.Select("Code = 3"); //takeover rate = double.Parse(drRate[0]["Rate"].ToString()); SalesPerformance(drReceipt, recType, rate, performanceType); break; } string deptID = GetDeptID(drReceipt["SalesID"].ToString(), drSettle["ReceiptDate"].ToString()); MngPerformance(drReceipt, recType, deptID, drReceipt["SalesID"].ToString()); } } } }
/// <summary> /// 收款-保存 /// Created:20170328(ChengMengjia) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Click(object sender, EventArgs e) { Receivables entity = new Receivables(); entity.ID = txtSBatchNo.Tag == null ? "" : txtSBatchNo.Tag.ToString(); entity.PID = ProjectId; entity.BatchNo = txtSBatchNo.Text; ComboItem item = (ComboItem)cbSFinishStatus.SelectedItem; if (item != null) { entity.FinishStatus = int.Parse(item.Value.ToString()); } entity.Ratio = intSRatio.Value; decimal temp = 0; decimal.TryParse(txtAmount.Text, out temp); entity.Amount = temp; entity.Condition = txtSCondition.Text; entity.Remark = txtSRemark.Text; entity.InDate = dtSInDate.Value; entity.Explanation = txtExplanation.Text.ToString(); #region 判断空值 if (string.IsNullOrEmpty(entity.BatchNo)) { MessageHelper.ShowMsg(MessageID.W000000001, MessageType.Alert, "收款批次"); return; } //if (entity.FinishStatus == null) //{ // MessageHelper.ShowMsg(MessageID.W000000001, MessageType.Alert, "完成情况"); // return; //} //if (entity.Ratio == null) //{ // MessageHelper.ShowMsg(MessageID.W000000001, MessageType.Alert, "收款比例"); // return; //} //if (entity.Amount == null) //{ // MessageHelper.ShowMsg(MessageID.W000000001, MessageType.Alert, "收款金额"); // return; //} //if (string.IsNullOrEmpty(entity.Condition)) //{ // MessageHelper.ShowMsg(MessageID.W000000001, MessageType.Alert, "收款条件"); // return; //} //if (entity.InDate == null || entity.InDate == DateTime.Parse("0001/1/1 0:00:00")) //{ // MessageHelper.ShowMsg(MessageID.W000000001, MessageType.Alert, "收款日期"); // return; //} #endregion JsonResult result = bll.SaveSK(entity); MessageHelper.ShowRstMsg(result.result); if (result.result) { btnSClear_Click(sender, e); LoadSK(); } }