void BindBudget(int month, int organizecity, int feetype)
    {
        lb_Balance.Text = FNA_BudgetBLL.GetUsableAmount(month, organizecity, feetype).ToString("0.##");
        int city = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OrganizeCity", organizecity, 1);

        lb_DepartmentBalance.Text = FNA_BudgetBLL.GetUsableAmount(month, city, feetype, false).ToString();
    }
Esempio n. 2
0
    private void BindDropDown()
    {
        MCSTreeControl tr_OfficialCity = (MCSTreeControl)pl_detail.FindControl("CM_Client_OfficialCity");

        if (tr_OfficialCity != null)
        {
            if ((int)Session["OwnerType"] == 2 && (int)Session["OwnerClient"] > 0)
            {
                CM_Client c = new CM_ClientBLL((int)Session["OwnerClient"]).Model;
                if (c != null)
                {
                    int prov = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OfficialCity", c.OfficialCity, 1);
                    tr_OfficialCity.RootValue = prov.ToString();
                }
            }
        }

        if ((int)Session["OwnerType"] == 2 && (int)Session["OrganizeCity"] > 1)
        {
            DropDownList ddl_VisitRoute = (DropDownList)pl_detail.FindControl("CM_ClientManufactInfo_VisitRoute");
            if (ddl_VisitRoute != null)
            {
                ddl_VisitRoute.DataValueField = "ID";
                ddl_VisitRoute.DataTextField  = "Name";

                ddl_VisitRoute.DataSource = VST_RouteBLL.GetByOrganizeCity((int)Session["OrganizeCity"]);
                ddl_VisitRoute.DataBind();
                ddl_VisitRoute.Items.Insert(0, new ListItem("请选择...", "0"));
            }
        }
    }
    private void BindGrid()
    {
        lbl_message.Text = "费用报销审批汇总表";
        int id = (int)ViewState["ID"];

        FNA_FeeWriteOffBLL bll = new FNA_FeeWriteOffBLL(id);

        ViewState["Details"] = bll.Items.OrderBy(p => p.Client).ThenBy(p => p.AccountTitle).ThenBy(p => p.BeginMonth).ToList();

        FNA_FeeWriteOff writeoff = bll.Model;

        if (writeoff == null)
        {
            Response.Redirect("FeeWriteOffList.aspx");
        }

        BindGridPrint();
        string type = "";

        if (writeoff["InvoiceClassAB"] != "")
        {
            type = DictionaryBLL.GetDicCollections("FNA_InvoiceClassAB")[writeoff["InvoiceClassAB"]].Name;
        }
        // type = DictionaryBLL.Dictionary_Data_GetAlllList("TableName='FNA_InvoiceClassAB' AND Code='" + writeoff["InvoiceClassAB"] + "'")[0].Name;
        if (type == "")
        {
            type = "抵款";
        }
        span_sheetcode.InnerText    = writeoff.SheetCode;
        span_accountmonth.InnerText = new AC_AccountMonthBLL(writeoff.AccountMonth).Model.Name;
        if (bll.Model["InsteadPayStaff"] != "" && bll.Model["InsteadPayStaff"] != "0")
        {
            p_ddtype.InnerText    = "员工";
            span_client.InnerText = new Org_StaffBLL(int.Parse(bll.Model["InsteadPayStaff"])).Model.RealName;
        }
        else
        {
            span_client.InnerText = new CM_ClientBLL(writeoff.InsteadPayClient).Model.FullName;
        }
        int city5 = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OrganizeCity", writeoff.OrganizeCity, 5);

        span_orgnizecity.InnerText = TreeTableBLL.GetFullPathName("MCS_SYS.dbo.Addr_OrganizeCity", "ID", "Name", "SuperID", 1, city5 > 0 ? city5 : writeoff.OrganizeCity);
        span_type.InnerText        = type;
        span1.InnerText            = span2.InnerText = "1";

        //求费用核消金额合计
        decimal _totalcost = 0;

        foreach (FNA_FeeWriteOffDetail _detail in bll.Items)
        {
            _totalcost += _detail.WriteOffCost + _detail.AdjustCost;
        }

        lab_SubTotalCostCN.Text = MCSFramework.Common.Rmb.CmycurD(_totalcost.ToString());
        lab_SubTotalCost.Text   = _totalcost.ToString("#,##0.00");
        lab_SubTotalCost.Text   = lab_SubTotalCost.Text;
        lab_SubTotalCost.Text   = lab_SubTotalCost.Text;
    }
Esempio n. 4
0
    public void BindDropDown()
    {
        MCSTreeControl tr_OfficialCity = (MCSTreeControl)pl_detail.FindControl("CM_Client_OfficialCity");

        if (tr_OfficialCity != null)
        {
            if ((int)Session["OwnerType"] == 2 && (int)Session["OwnerClient"] > 0)
            {
                CM_Client c = new CM_ClientBLL((int)Session["OwnerClient"]).Model;
                if (c != null)
                {
                    int prov = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OfficialCity", c.OfficialCity, 1);
                    tr_OfficialCity.RootValue = prov.ToString();
                }
            }
        }
    }
Esempio n. 5
0
    protected void select_Client_SelectChange(object sender, MCSControls.MCSWebControls.SelectChangeEventArgs e)
    {
        LoadGiftApplyAmount();
        select_Receiver.SelectText  = "";
        select_Receiver.SelectValue = "0";
        int client = 0;

        int.TryParse(select_Client.SelectValue, out client);

        int OrganizePartCity_Level = ConfigHelper.GetConfigInt("OrganizePartCity-CityLevel");

        if (client > 0)
        {
            CM_ClientBLL _cmbll = new CM_ClientBLL(client);


            if (_cmbll != null && TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OrganizeCity", _cmbll.Model.OrganizeCity, OrganizePartCity_Level) !=
                TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OrganizeCity", int.Parse(tr_OrganizeCity.SelectValue), OrganizePartCity_Level))
            {
                MessageBox.Show(this, "该经销商不在本营业部内,不能为其申请赠品订单,请重新选择经销商!");
                select_Client.SelectText  = "";
                select_Client.SelectValue = "";
                return;
            }
            if (_cmbll != null && _cmbll.Model.FullName.Contains("[ERP已撤消]"))
            {
                MessageBox.Show(this, "该经销商在ERP中已撤销,请重新选择经销商!");
                select_Client.SelectText  = "";
                select_Client.SelectValue = "";
                return;
            }
            select_Receiver.Enabled = true;
            select_Receiver.PageUrl = "~/SubModule/CM/PopSearch/Search_SelectClient.aspx?ClientType=2&OrganizeCity=" + tr_OrganizeCity.SelectValue + "&ExtCondition=\"(CM_Client.ID=" + select_Client.SelectValue + "$OR$Supplier=" + select_Client.SelectValue + ")$AND$MCS_SYS.dbo.UF_Spilt2(~MCS_CM.dbo.CM_Client~,CM_Client.ExtPropertys,~DIClassify~)<>~2~\"";
        }
        else
        {
            select_Receiver.Enabled = false;
        }
    }
        /// <summary>
        /// 获取所有行政城市
        /// </summary>
        /// <param name="AuthKey"></param>
        /// <returns></returns>
        public static List <OfficialCity> GetAllOfficialCitys(UserInfo User)
        {
            LogWriter.WriteLog("OfficialCitySerice.GetAllOfficialCitys:UserName="******"MCS_SYS.dbo.Addr_OfficialCity", c.OfficialCity, 1);
                    if (prov > 0)
                    {
                        citys = Addr_OfficialCityBLL.GetModelList("Level<=3 AND Level1_SuperID=" + prov.ToString());
                    }
                }
            }

            if (citys == null)
            {
                citys = Addr_OfficialCityBLL.GetModelList("Level<=3");
            }

            List <OfficialCity> lists = new List <OfficialCity>(citys.Count);

            foreach (Addr_OfficialCity item in citys)
            {
                lists.Add(new OfficialCity(item));
            }
            return(lists);
        }
Esempio n. 7
0
    private void BindGrid()
    {
        ViewState["ClientID"] = int.Parse(select_Client.SelectValue);

        if (MCSTabControl1.SelectedIndex == 0)
        {
            DataTable dtSummary = FNA_FeeApplyBLL.GetSummaryTotalByDistributor((int)ViewState["ClientID"], int.Parse(ddl_BeginMonth.SelectedValue),
                                                                               int.Parse(ddl_EndMonth.SelectedValue), int.Parse(ddl_FeeType.SelectedValue));
            if (dtSummary.Rows.Count == 0)
            {
                gv_List.DataBind();
                return;
            }

            dtSummary = MatrixTable.Matrix(dtSummary, new string[] { "客户名称" },
                                           new string[] { "FeeTypeName", "AccountTitleName" }, "ApplyCost", true, true);
            dtSummary = MatrixTable.ColumnSummaryTotal(dtSummary, new int[] { 1 }, new string[] { "ApplyCost" });

            gv_List.DataSource = dtSummary;
            gv_List.DataBind();

            MatrixTable.GridViewMatric(gv_List);
        }
        else
        {
            string condition = " FNA_FeeApply.State =3 ";

            #region 组织查询条件
            //管理片区及所有下属管理片区
            CM_Client client = new CM_ClientBLL((int)ViewState["ClientID"]).Model;
            int       city   = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OrganizeCity", client.OrganizeCity, 2);
            if (city != 1)
            {
                Addr_OrganizeCityBLL orgcity = new Addr_OrganizeCityBLL(city);
                string orgcitys = orgcity.GetAllChildNodeIDs();
                if (orgcitys != "")
                {
                    orgcitys += ",";
                }
                orgcitys += city.ToString();

                condition += " AND FNA_FeeApply.OrganizeCity IN (" + orgcitys + ")";
            }

            //会计月条件
            condition += " AND FNA_FeeApply.AccountMonth BETWEEN " + ddl_BeginMonth.SelectedValue + " AND " + ddl_EndMonth.SelectedValue;

            //费用类型
            if (ddl_FeeType.SelectedValue != "0")
            {
                condition += " AND FNA_FeeApply.FeeType = " + ddl_FeeType.SelectedValue;
            }

            //指定经销商
            condition += " AND FNA_FeeApply.ID IN (SELECT ApplyID FROM MCS_FNA.dbo.FNA_FeeApplyDetail WHERE MCS_CM.dbo.uf_GetDistributorIDByClient(FNA_FeeApplyDetail.Client) =" + ViewState["ClientID"].ToString() + ")";
            #endregion

            gv_ListDetail.ConditionString = condition;
            gv_ListDetail.BindGrid();
        }
    }
    private void BindData()
    {
        FNA_BudgetExtraApply m = new FNA_BudgetExtraApplyBLL((int)ViewState["ID"]).Model;

        if (m != null)
        {
            pl_detail.BindData(m);

            if (m.ApproveTask > 0 || m.ApproveFlag == 1 || m.InsertStaff != (int)Session["UserID"])
            {
                lb_ApproveAmount.Text = (m.ExtraAmount - m.AdjustAmount).ToString("0.##");
                pl_detail.SetControlsEnable(false);
                bt_OK.Visible     = false;
                bt_Submit.Visible = false;

                //允许调整审批金额
                if (m.ApproveTask > 0 && m.ApproveFlag == 2 &&
                    Request.QueryString["Decision"] != null && Request.QueryString["Decision"] == "Y")
                {
                    TextBox tbx_AdjustAmount = (TextBox)pl_detail.FindControl("FNA_BudgetExtraApply_AdjustAmount");
                    tbx_AdjustAmount.Enabled = true;
                    bt_SaveAdjust.Visible    = true;
                }
            }

            if (!string.IsNullOrEmpty(m.ApproveTask.ToString()) && m.ApproveTask != 0)
            {
                bt_Submit.Visible = false;
            }

            if (m.ApproveFlag == 2)
            {
                tbl_BudgetInfo.Visible = true;
                BindBudget(m.AccountMonth, m.OrganizeCity, m.FeeType);
            }

            #region 获取当月该费用类型累计已批复扩增金额
            //lb_SumExtraInfo.Text = new Addr_OrganizeCityBLL(m.OrganizeCity).Model.Name +
            //    ":<b><font color=red>" + FNA_BudgetExtraApplyBLL.GetExtraAmount(m.AccountMonth, m.OrganizeCity, m.FeeType, false).ToString("0.##") + "</b></font>  ";

            //int staffcity = new Org_StaffBLL((int)Session["UserID"]).Model.OrganizeCity;
            //if (staffcity == 0) staffcity = 1;
            //if (staffcity != 1)
            //{
            //    staffcity = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OrganizeCity", m.OrganizeCity, new Addr_OrganizeCityBLL(staffcity).Model.Level);
            //}

            //lb_SumExtraInfo.Text += new Addr_OrganizeCityBLL(staffcity).Model.Name +
            //    ":<b><font color=red>" + FNA_BudgetExtraApplyBLL.GetExtraAmount(m.AccountMonth, staffcity, m.FeeType, true).ToString("0.##") + "</b></font>";
            #endregion

            #region 显示各扩增类型已批复扩增金额
            DropDownList ddl_ExtraType = (DropDownList)pl_detail.FindControl("FNA_BudgetExtraApply_ExtraType");
            foreach (ListItem item in ddl_ExtraType.Items)
            {
                if (item.Value != "0")
                {
                    lb_SumExtraInfo1.Text += item.Text + "总计:<b><font color=red>" + FNA_BudgetExtraApplyBLL.GetModelList("").Where(p => p.ApproveFlag == 1 && p.AccountMonth == m.AccountMonth && p.OrganizeCity == m.OrganizeCity && p.FeeType == m.FeeType && p["ExtraType"] == item.Value).Select(p => p.ExtraAmount - p.AdjustAmount).Sum().ToString() + "</b></font>  ";
                }
            }
            int staffcity = new Org_StaffBLL((int)Session["UserID"]).Model.OrganizeCity;
            if (staffcity == 0)
            {
                staffcity = 1;
            }
            if (staffcity != 1)
            {
                staffcity = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OrganizeCity", m.OrganizeCity, new Addr_OrganizeCityBLL(staffcity).Model.Level);
            }
            foreach (ListItem item in ddl_ExtraType.Items)
            {
                if (item.Value != "0")
                {
                    lb_SumExtraInfo2.Text += item.Text + "总计:<b><font color=red>" + FNA_BudgetExtraApplyBLL.GetModelList(" MCS_SYS.dbo.UF_IsChildOrganizeCity(" + staffcity.ToString() + ",OrganizeCity)=0").Where(p => p.ApproveFlag == 1 && p.AccountMonth == m.AccountMonth && p.OrganizeCity == m.OrganizeCity && p.FeeType == m.FeeType && p["ExtraType"] == item.Value).Select(p => p.ExtraAmount - p.AdjustAmount).Sum().ToString() + "</b></font>  ";
                }
            }
            #endregion
        }
    }
Esempio n. 9
0
        public void BindGrid()
        {
            FillDataSource();
            DataBind();
            Binded = true;

            if (PanelCode != "" && ViewState["TreeColumn"] != null)
            {
                Dictionary <string, UD_Panel_ModelFields> dicTreeColumnList = (Dictionary <string, UD_Panel_ModelFields>)ViewState["TreeColumn"];
                for (int i = 0; i < Columns.Count; i++)
                {
                    DataControlField column = Columns[i];

                    if (column.GetType().Name == "BoundField")
                    {
                        BoundField field = (BoundField)column;
                        if (!column.Visible)
                        {
                            continue;
                        }

                        foreach (GridViewRow row in Rows)
                        {
                            if (row.Cells[i].Text.StartsWith("1900-01-01"))
                            {
                                row.Cells[i].Text = "";
                            }
                        }

                        if (!dicTreeColumnList.ContainsKey(field.DataField))
                        {
                            continue;
                        }

                        UD_Panel_ModelFields     _panel_modelfields = dicTreeColumnList[field.DataField];
                        Dictionary <int, string> cachevalue         = new Dictionary <int, string>();

                        foreach (GridViewRow row in Rows)
                        {
                            int value = 0;
                            if (int.TryParse(row.Cells[i].Text, out value))
                            {
                                if (cachevalue.ContainsKey(value))
                                {
                                    row.Cells[i].Text = cachevalue[value];
                                }
                                else
                                {
                                    if (_panel_modelfields.TreeLevel == 100)
                                    {
                                        //显示全路径
                                        row.Cells[i].Text = TreeTableBLL.GetFullPathName(new UD_ModelFieldsBLL(_panel_modelfields.FieldID, true).Model.RelationTableName, value);
                                    }
                                    else
                                    {
                                        //显示父级
                                        if (_panel_modelfields.DisplayMode == 1)
                                        {
                                            row.Cells[i].Text = TreeTableBLL.GetSuperIDByLevel(new UD_ModelFieldsBLL(_panel_modelfields.FieldID, true).Model.RelationTableName, value, _panel_modelfields.TreeLevel).ToString();
                                        }
                                        else
                                        {
                                            row.Cells[i].Text = TreeTableBLL.GetSuperNameByLevel(new UD_ModelFieldsBLL(_panel_modelfields.FieldID, true).Model.RelationTableName, value, _panel_modelfields.TreeLevel);
                                        }
                                    }
                                    cachevalue.Add(value, row.Cells[i].Text);
                                }
                            }
                        }
                    }
                }
            }
        }
    public void BindDropDown()
    {
        #region 业务人员
        DropDownList ddlSalesMan = pl_detail.FindControl("CM_ClientSupplierInfo_Salesman") as DropDownList;
        if (ddlSalesMan != null)
        {
            ddlSalesMan.DataTextField  = "RealName";
            ddlSalesMan.DataValueField = "ID";
            IList <Org_Staff> listStaff = Org_StaffBLL.GetStaffList("Dimission=1 AND Position=1030 AND OwnerClient= " + Session["OwnerClient"].ToString());
            if (listStaff == null)
            {
                listStaff = new List <Org_Staff>(1);
            }
            listStaff.Insert(0, new Org_Staff {
                RealName = "请选择", ID = 0
            });
            ddlSalesMan.DataSource = listStaff;
            ddlSalesMan.DataBind();
        }
        #endregion

        #region 经销商自分渠道
        DropDownList ddlTDPChannel = pl_detail.FindControl("CM_ClientSupplierInfo_TDPChannel") as DropDownList;
        if (ddlTDPChannel != null)
        {
            ddlTDPChannel.DataTextField  = "Name";
            ddlTDPChannel.DataValueField = "ID";
            IList <CM_RTChannel_TDP> listChannel = CM_RTChannel_TDPBLL.GetModelList("OwnerClient= " + Session["OwnerClient"].ToString());
            if (listChannel == null)
            {
                listChannel = new List <CM_RTChannel_TDP>(1);
            }
            listChannel.Insert(0, new CM_RTChannel_TDP {
                Name = "请选择", ID = 0
            });
            ddlTDPChannel.DataSource = listChannel;
            ddlTDPChannel.DataBind();
        }
        #endregion

        #region 经销商所属区域
        DropDownList ddlTDPSalesArea = pl_detail.FindControl("CM_ClientSupplierInfo_TDPSalesArea") as DropDownList;
        if (ddlTDPSalesArea != null)
        {
            ddlTDPSalesArea.DataTextField  = "Name";
            ddlTDPSalesArea.DataValueField = "ID";
            IList <CM_RTSalesArea_TDP> listSalesArea = CM_RTSalesArea_TDPBLL.GetModelList("OwnerClient= " + Session["OwnerClient"].ToString());
            if (listSalesArea == null)
            {
                listSalesArea = new List <CM_RTSalesArea_TDP>(1);
            }
            listSalesArea.Insert(0, new CM_RTSalesArea_TDP {
                Name = "请选择", ID = 0
            });
            ddlTDPSalesArea.DataSource = listSalesArea;
            ddlTDPSalesArea.DataBind();
        }
        #endregion

        #region 经销商价表
        DropDownList ddlStandardPrice = pl_detail.FindControl("CM_ClientSupplierInfo_StandardPrice") as DropDownList;
        if (ddlStandardPrice != null)
        {
            ddlStandardPrice.DataTextField  = "Name";
            ddlStandardPrice.DataValueField = "ID";
            IList <PDT_StandardPrice> listPrice = PDT_StandardPriceBLL.GetAllPrice_BySupplier((int)Session["OwnerClient"]);
            if (listPrice == null)
            {
                listPrice = new List <PDT_StandardPrice>(1);
            }
            listPrice.Insert(0, new PDT_StandardPrice {
                Name = "请选择", ID = 0
            });
            ddlStandardPrice.DataSource = listPrice;
            ddlStandardPrice.DataBind();
        }
        #endregion

        #region 经销商自营路线
        DropDownList ddlVisitRoute = pl_detail.FindControl("CM_ClientSupplierInfo_VisitRoute") as DropDownList;
        if (ddlVisitRoute != null)
        {
            ddlVisitRoute.DataTextField  = "Name";
            ddlVisitRoute.DataValueField = "ID";
            IList <VST_Route> listRoute = VST_RouteBLL.GetRouteListByTDP((int)Session["OwnerClient"]);
            listRoute.Insert(0, new VST_Route {
                Name = "请选择", ID = 0
            });
            ddlVisitRoute.DataSource = listRoute;
            ddlVisitRoute.DataBind();
        }
        #endregion

        #region 行政城市默认为厂商所在省份
        MCSTreeControl tr_OfficialCity = (MCSTreeControl)pl_detail.FindControl("CM_Client_OfficialCity");
        if (tr_OfficialCity != null)
        {
            if ((int)Session["Manufacturer"] > 0)
            {
                CM_Client c = new CM_ClientBLL((int)Session["Manufacturer"]).Model;
                if (c != null)
                {
                    int prov = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OfficialCity", c.OfficialCity, 1);
                    tr_OfficialCity.RootValue = prov.ToString();
                }
            }
        }
        #endregion
    }
    private void BindData(PM_PromotorSalary m)
    {
        if (m != null)
        {
            ViewState["PromotorID"]       = m.Promotor;
            ViewState["PromotorSalaryID"] = m.ID;
        }

        #region 获取当前导购标准薪资、保底薪资、导购管理费
        if ((int)ViewState["PromotorID"] > 0)
        {
            decimal basepay = 0, minumumwage = 0, rtmanagecost = 0;
            new PM_PromotorBLL((int)ViewState["PromotorID"]).GetStdPay(out basepay, out minumumwage, out rtmanagecost);
            ViewState["BasePay"]      = basepay;
            ViewState["MinumumWage"]  = minumumwage;
            ViewState["RTManageCost"] = rtmanagecost;
        }
        #endregion
        PM_Promotor p = new PM_PromotorBLL((int)ViewState["PromotorID"]).Model;
        if (p == null)
        {
            Response.Redirect("PM_PromotorDetail.aspx");
        }
        if (m == null)
        {
            m              = new PM_PromotorSalary();
            m.Promotor     = (int)ViewState["PromotorID"];
            m.State        = 1;
            m.InsertStaff  = (int)Session["UserID"];
            m.RTManageCost = (decimal)ViewState["RTManageCost"];
            if (p["Classfiy"] == "1" || p["Classfiy"] == "2")
            {
                m.SeniorityPayMode = 1;
            }
        }
        if (p["State"] == "2")
        {
            bt_Add.Visible = false;
        }

        UC_DetailView1.BindData(m);
        chk_arrivetarget.Checked = m["ISArriveTarget"] == "1";
        UC_DetailView1.SetControlsEnable(m.State == 1);
        bt_OK.Enabled = m.State == 1;

        if (m.ID != 0)
        {
            bt_Delete.Enabled  = m.State == 1;
            bt_Submit.Enabled  = m.State == 1;
            bt_Approve.Enabled = m.State == 1;
        }
        else
        {
            bt_Submit.Enabled  = false;
            bt_Approve.Enabled = false;
            bt_Delete.Enabled  = false;
        }
        if (m.BasePayMode != 4 && m.BasePayMode != 5)
        {
            setdisabledfloatingcontorl(false);
        }


        //导购为新入职、或离职状态
        if (p.ApproveFlag == 2)
        {
            bt_Submit.Visible = false;
        }
        //if (p.Dimission == 2) bt_Add.Visible = false;

        if (m.RTManageCost > 0 && (decimal)ViewState["RTManageCost"] == m.RTManageCost)
        {
            TextBox tbx = (TextBox)UC_DetailView1.FindControl("PM_PromotorSalary_RTManageCost");
            if (tbx != null)
            {
                tbx.Enabled = false;
            }
        }
        if (m.State < 2)
        {
            #region 兼职导购的限定
            try
            {
                if (ddl_BasePayMode != null)
                {
                    if (p["Classfiy"] != "1" && p["Classfiy"] != "2")   //非专职、非流导,认为是兼职导购
                    {
                        //兼职
                        //ddl_BasePayMode.Items[0].Enabled = false;
                        //ddl_BasePayMode.Items[1].Enabled = false;
                        //ddl_BasePayMode.Items[2].Enabled = false;
                        SetControlsEnable(false);
                        ddl_BasePayMode.SelectedValue = "3";
                        ddl_BasePayMode.Enabled       = false;
                    }
                    else
                    {
                        Addr_OrganizeCityBLL _bll   = new Addr_OrganizeCityBLL(p.OrganizeCity);
                        string[]             city3s = Addr_OrganizeCityParamBLL.GetValueByType(1, 19).Split(new char[] { ',', ',', ';', ';' });
                        int city3ID = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OrganizeCity", p.OrganizeCity, ConfigHelper.GetConfigInt("OrganizePartCity-CityLevel"));

                        if (city3s.Contains(city3ID.ToString()))
                        {
                            ddl_BasePayMode.Items.Remove(new ListItem("浮动底薪(非华南)", "4"));
                        }
                        else
                        {
                            decimal AvgSales = 0, BaseFeeRate = 0;
                            int     SalaryDelayDays = ConfigHelper.GetConfigInt("SalaryDelayDays");
                            ddl_SalesType.Enabled = false;
                            new PM_PromotorSalaryBLL().GetFloatingInfo(p.ID, AC_AccountMonthBLL.GetMonthByDate(DateTime.Now.AddDays(-SalaryDelayDays)) - 1, out AvgSales, out BaseFeeRate);

                            if (AvgSales == 0 && BaseFeeRate == 0)//首两月不是固定底薪,不能选择浮动底薪
                            {
                                ddl_BasePayMode.Items.Remove(new ListItem("浮动底薪(非华南)", "4"));
                            }
                            else
                            {
                                ViewState["AvgSales"]    = AvgSales;
                                ViewState["BaseFeeRate"] = BaseFeeRate;
                            }

                            ddl_BasePayMode.Items.Remove(new ListItem("浮动底薪(华南)", "5"));
                        }
                        ddl_BasePayMode.Items.Remove(new ListItem("兼职底薪", "3"));
                        //50岁只能选择商保(5)或自购(8)
                        DateTime Birthday;
                        if (DateTime.TryParse(p["Birthday"], out Birthday) && Birthday.AddYears(50) < DateTime.Now)
                        {
                            foreach (ListItem item in ddl_InsuranceMode.Items)
                            {
                                if (item.Value != "5" && item.Value != "8" && item.Value != "0")
                                {
                                    item.Enabled = false;
                                }
                            }
                        }
                        //专职或流导
                        //ddl_BasePayMode.Items[3].Enabled = false;
                    }
                }
            }
            catch { }
            #endregion

            ddl_BasePayMode_SelectedIndexChanged(null, null);
            ddl_BasePaySubsidyMode_SelectedIndexChanged(null, null);
            ddl_InsuranceMode_SelectedIndexChanged(null, null);
            ddl_MinimumWageMode_SelectedIndexChanged(null, null);
        }
        BindGrid();
    }
Esempio n. 12
0
        private static int DoGenerateSalary(int OrganizeCity, int DIClient, int AccountMonth, int Staff, string SalaryClassify, DataTable promotors)
        {
            if (promotors.Select("SalaryClassify=0").Length > 0)
            {
                return(-4);
            }
            string PMClassifys = SalaryClassify == "1" ? "1,4,5" : "3";//专职工资1,兼职工资2 (根据底薪模式进行筛选)


            #region 过滤促销员类别
            DataRow[] row_promotr = promotors.Select("SalaryClassify IN (" + PMClassifys + ")");
            if (row_promotr.Length == 0)
            {
                return(1);                        //该类别无促销员
            }
            #endregion

            AC_AccountMonth month     = new AC_AccountMonthBLL(AccountMonth).Model;
            int             monthDays = month.EndDate.Subtract(month.BeginDate).Days + 1;
            #region 生成工资单头信息
            PM_SalaryBLL bll = new PM_SalaryBLL();
            bll.Model.OrganizeCity  = OrganizeCity;
            bll.Model.AccountMonth  = AccountMonth;
            bll.Model.InputStaff    = Staff;
            bll.Model.State         = 1;
            bll.Model["Client"]     = DIClient.ToString();
            bll.Model["PMClassfiy"] = SalaryClassify;
            #endregion

            #region 依次为每个促销员计算工资单
            decimal target = 0; //目标销量
            foreach (DataRow row in row_promotr)
            {
                PM_Promotor p = new PM_PromotorBLL(int.Parse(row["Promotor"].ToString())).Model;

                if (row["ErrType"].ToString() == "1" || PM_Salary_GetStateByPromotor(p.ID, AccountMonth) > 0)
                {
                    continue;
                }

                PM_SalaryDetail detail = new PM_SalaryDetail();
                #region 获取促销员工资相关信息
                IList <PM_SalaryDataObject> PM_DataList = PM_SalaryDataObjectBLL.GetModelList("ApproveFlag=1 AND Promotor=" + p.ID.ToString() + " and AccountMonth=" + AccountMonth.ToString());
                if (PM_DataList.Count == 0)
                {
                    return(-3);                       //无出勤天数及调整信息
                }
                IList <PM_PromotorSalary> PM_Salary = PM_PromotorSalaryBLL.GetModelList("Promotor=" + p.ID.ToString() + " AND State=3 AND ApproveFlag=1");
                if (PM_Salary.Count == 0)
                {
                    return(-4);               //无薪酬定义
                }
                int[]  InsurancTyps  = { 1 }; //如果工资生成月是导购入职月且保险类型为【给予补贴】,则导购的社保方式为工伤
                string InsuranceMode = p.BeginWorkDate >= month.BeginDate && Array.IndexOf(InsurancTyps, PM_Salary[0].InsuranceMode) != -1 ? "2" : PM_Salary[0].InsuranceMode.ToString();


                #region 取终端门店导购费用协议管理内的管理费分摊比例及提成分摊比例

                #region 实时保存导购信息
                detail["OrganizeCity"] = p.OrganizeCity.ToString();
                detail["Dimission"]    = p.Dimission.ToString();
                IList <PM_PromotorInRetailer> rtlist = PM_PromotorInRetailerBLL.GetModelList("Promotor=" + p.ID.ToString());
                string rts = "";
                foreach (PM_PromotorInRetailer m in rtlist)
                {
                    rts += m.Client.ToString() + ",";
                }
                detail["RetailerS"]        = rts != "" ? rts.Substring(0, rts.Length - 1) : "";
                detail["BankName"]         = p["BankName"];
                detail["AccountCode"]      = p["AccountCode"];
                detail["Classfiy"]         = p["Classfiy"];
                detail["MobileNumber"]     = p.MobileNumber;
                detail["EndWorkDate"]      = p.EndWorkDate.ToString();
                detail["IDCode"]           = p["IDCode"];
                detail["RTManager"]        = rtlist.Count > 0 ? new CM_ClientBLL(rtlist[0].Client).Model.ClientManager.ToString() : "0";
                detail["BasePayMode"]      = PM_Salary[0].ID.ToString();
                detail["MonthDays"]        = monthDays.ToString();
                detail["InsuranceMode"]    = InsuranceMode;
                detail["InsuranceSubsidy"] = InsuranceMode == "1" ? PM_Salary[0].InsuranceSubsidy.ToString() : "0";
                detail["BeginWorkDate"]    = p.BeginWorkDate.ToString();
                #endregion
                decimal             PromotorCostRate  = 0;   //促管费分摊比例
                decimal             PromotorAwardRate = 100; //促销员提成分摊比例
                IList <CM_Contract> CM_ContractList   = CM_ContractBLL.GetModelList("Client=" + row["Client"].ToString() + " AND Classify=3 AND ApproveFlag=1 AND State IN (3,9) AND CM_Contract.EndDate >= '" + month.BeginDate.ToString("yyyy-MM-dd") + "'AND CM_Contract.BeginDate<='" + month.EndDate.ToString("yyyy-MM-dd") + "'");
                if (CM_ContractList.Count > 0)
                {
                    decimal.TryParse(CM_ContractList[0]["PromotorCostRate"], out PromotorCostRate);
                    decimal.TryParse(CM_ContractList[0]["PromotorAwardRate"], out PromotorAwardRate);
                }
                #endregion

                //保险
                IList <PM_StdInsuranceCost> InsuranceCostList = PM_StdInsuranceCostBLL.GetModelList("InsuranceMode=" + InsuranceMode);
                #endregion

                detail.Promotor = p.ID;

                #region 计算促销员提成
                //计算促销员当月实际销量数量或金额
                //DataTable dt = PM_Salary_GetActSalesVolume(AccountMonth, p.ID);

                target                    = PM_DataList[0].SalesTarget;
                detail.ActWorkDays        = PM_DataList[0].ActWorkDays;
                detail.ActSalesVolume     = PM_DataList[0].Data12;                                                                                                          //实际销售额
                detail["MixesSales"]      = PM_DataList[0].Data13.ToString();                                                                                               //冲调部销量
                detail["MilkPowderSales"] = PM_DataList[0].Data14.ToString();                                                                                               //奶粉部销量
                detail.Bonus              = PM_DataList[0].ActWorkDays > 0 && detail.ActSalesVolume > 0 ? Math.Round(PM_DataList[0].Data11 + PM_DataList[0].Data18, 1) : 0; //按销售数量提成,每一分对应一元  Data11总提成
                #endregion

                detail.Pay9 = 0;
                //底薪补贴
                decimal BasePaySubsidy = PM_Salary[0].BasePaySubsidyBeginDate <= month.EndDate && (PM_Salary[0].BasePaySubsidyEndDate == new DateTime(1900, 1, 1) || PM_Salary[0].BasePaySubsidyEndDate.AddDays(1) > month.BeginDate) ? PM_Salary[0].BasePaySubsidy : 0;
                detail.Pay2 = Math.Round(BasePaySubsidy / monthDays * detail.ActWorkDays, 0, MidpointRounding.AwayFromZero);

                #region 获取薪酬信息
                #region 计算底薪
                int basepaymode = PM_Salary[0].BasePayMode;
                if (basepaymode >= 4 && PM_DataList[0]["ISFloating"] != "1")//如果暂不执行浮动底薪,则执行固定底薪
                {
                    basepaymode = 1;
                }

                switch (basepaymode)
                {
                case 1:
                    //固定底薪
                    detail.Pay1 = detail.ActWorkDays > 0 ? Math.Round(PM_Salary[0].BasePay / monthDays * detail.ActWorkDays, 0, MidpointRounding.AwayFromZero) : 0;
                    break;

                case 2:
                    //坎级底薪
                    break;

                case 3:
                    //兼职底薪

                    /*
                     * 1.	底薪计算原则:总销量*8%(我司承担);
                     * 2.	提成计算原则:总销量*6%(根据以分摊的批复为准,默认为我司不承担。);
                     */
                    detail.Pay1 = PM_DataList[0].ActWorkDays > 0 ? Math.Round(PM_DataList[0].Data15 * 0.08m, 0, MidpointRounding.AwayFromZero) : 0;
                    if (detail.Pay1 > 900)
                    {
                        detail.Pay1 = 900;                       //2013-05-08 加入900上限
                    }
                    detail.Bonus = PM_DataList[0].ActWorkDays > 0 && PM_DataList[0].Data15 > 0 ? Math.Round(PM_DataList[0].Data11 + PM_DataList[0].Data18, 1, MidpointRounding.AwayFromZero) : 0;
                    break;

                case 4:    //非华南浮动底薪
                    detail.Pay1 = detail.ActWorkDays > 0 ? Math.Round(PM_Salary[0].BasePay / monthDays * detail.ActWorkDays, 0, MidpointRounding.AwayFromZero) : 0;
                    if (PM_Salary[0]["ISArriveTarget"] != "1" && decimal.Parse(detail["MilkPowderSales"]) >= decimal.Parse(PM_Salary[0]["FloatingTarget"]))
                    {
                        PM_Salary[0]["ISArriveTarget"] = "1";
                        PM_PromotorSalaryBLL _bll = new PM_PromotorSalaryBLL(PM_Salary[0].ID);
                        _bll.Model = PM_Salary[0];
                        _bll.Update();
                    }
                    #region 浮动底薪上限
                    //浮动底薪上限=ROUND(IF(底薪费率*浮动底薪上限任务量<(底薪标准+底薪补贴),(底薪标准+底薪补贴),IF(底薪费率*浮动底薪上限任务量>(底薪标准+底薪补贴)*1.5,(底薪标准+底薪补贴)*1.5,底薪费率*浮动底薪上限任务量)),0)

                    decimal FloatingBasePay = 0m;    //浮动底薪上限
                    if (decimal.Parse(PM_Salary[0]["BaseFeeRate"]) / 100m * decimal.Parse(PM_Salary[0]["FloatingTarget"]) < PM_Salary[0].BasePay + BasePaySubsidy)
                    {
                        FloatingBasePay = PM_Salary[0].BasePay + BasePaySubsidy;
                    }
                    else if (decimal.Parse(PM_Salary[0]["BaseFeeRate"]) / 100m * decimal.Parse(PM_Salary[0]["FloatingTarget"]) > (PM_Salary[0].BasePay + BasePaySubsidy) * 1.5m)
                    {
                        FloatingBasePay = (PM_Salary[0].BasePay + BasePaySubsidy) * 1.5m;
                    }
                    else
                    {
                        FloatingBasePay = decimal.Parse(PM_Salary[0]["BaseFeeRate"]) / 100m * decimal.Parse(PM_Salary[0]["FloatingTarget"]);
                    }
                    #endregion
                    if (PM_Salary[0]["ISArriveTarget"] == "1" && detail.ActWorkDays > 0 && decimal.Parse(PM_Salary[0]["FloatingTarget"]) > 0)
                    {
                        // 浮动底薪补贴= “当月奶粉部实销”÷(“浮动底薪上限任务量”÷会计月天数×实际出勤天数)×浮动底薪上限÷会计月天数×实际出勤天数-(底薪标准+底薪补贴)÷会计月天数×实际出勤天数
                        //a)	当“当月奶粉部实销”÷(“浮动底薪上限任务量”÷会计月天数×实际出勤天数)×浮动底薪上限>“浮动底薪上限”,按“浮动底薪上限”的1.0倍计算;
                        //b)	当“当月奶粉部实销”÷(“浮动底薪上限任务量”÷会计月天数×实际出勤天数)×浮动底薪上限<(“底薪标准”+ “底薪补贴”)的1.0倍,按(“底薪标准”+ “底薪补贴”)的1.0倍计算;

                        decimal compare = decimal.Parse(detail["MilkPowderSales"]) / (decimal.Parse(PM_Salary[0]["FloatingTarget"]) / monthDays * detail.ActWorkDays) * FloatingBasePay;
                        if (compare > FloatingBasePay)
                        {
                            compare = FloatingBasePay;
                        }
                        if (compare < PM_Salary[0].BasePay + BasePaySubsidy)
                        {
                            compare = PM_Salary[0].BasePay + BasePaySubsidy;
                        }

                        detail.Pay9 = (compare > PM_Salary[0].BasePay + BasePaySubsidy) ? ((compare - PM_Salary[0].BasePay - BasePaySubsidy) / monthDays * detail.ActWorkDays) : 0;
                    }
                    else if (detail.ActWorkDays > 0)
                    {
                        //浮动底薪补贴=当月奶粉部实销×底薪费率÷会计月天数×实际出勤天数-(底薪标准+底薪补贴)÷会计月天数×实际出勤天数
                        //a)	当“当月奶粉部实销×底薪费率”>(“底薪标准”+ “底薪补贴”)的1.5倍,按(“底薪标准”+ “底薪补贴”)的1.5倍计算;
                        //b)	当“当月奶粉部实销×底薪费率”<(底薪标准+底薪补贴)的1.0倍,按(“底薪标准”+ “底薪补贴”)的1.0倍计算;
                        decimal compare = decimal.Parse(detail["MilkPowderSales"]) * decimal.Parse(PM_Salary[0]["BaseFeeRate"]) / 100m;
                        if (compare > 1.5m * (PM_Salary[0].BasePay + BasePaySubsidy))
                        {
                            compare = 1.5m * (PM_Salary[0].BasePay + BasePaySubsidy);
                        }
                        if (compare < PM_Salary[0].BasePay + BasePaySubsidy)
                        {
                            compare = PM_Salary[0].BasePay + BasePaySubsidy;
                        }
                        detail.Pay9 = (compare > (PM_Salary[0].BasePay + BasePaySubsidy)) ? ((compare - PM_Salary[0].BasePay - BasePaySubsidy) / monthDays * detail.ActWorkDays) : 0;
                    }
                    //浮动底薪上限: “底薪标准”+“底薪补贴”+ “浮动底薪补贴”的最高限额为“底薪标准”+“底薪补贴”的1.5倍
                    if (PM_Salary[0].BasePay + BasePaySubsidy + detail.Pay9 > FloatingBasePay)
                    {
                        detail.Pay9 = FloatingBasePay - PM_Salary[0].BasePay - BasePaySubsidy;
                    }
                    detail.Pay9 = Math.Round(detail.Pay9, 0, MidpointRounding.AwayFromZero);
                    break;

                case 5:    //华南浮动底薪
                    detail.Pay1 = detail.ActWorkDays > 0 ? Math.Round(PM_Salary[0].BasePay / monthDays * detail.ActWorkDays, 0, MidpointRounding.AwayFromZero) : 0;
                    decimal sales = 0;
                    if (PM_Salary[0]["SalesType"] == "1")
                    {
                        sales = decimal.Parse(detail["MilkPowderSales"]);
                    }
                    else
                    {
                        sales = detail.ActSalesVolume;
                    }
                    //A.	(底薪标准+浮动底薪补贴100元)÷当月实销<=底薪费率
                    //B.	(底薪标准+浮动底薪补贴200元)÷当月实销<=底薪费率
                    //C.	(底薪标准+浮动底薪补贴300元)÷当月实销<=底薪费率
                    decimal FloatingSubsidy = decimal.Parse(PM_Salary[0]["BaseFeeRate"]) / 100m * sales - PM_Salary[0].BasePay;
                    if (FloatingSubsidy < 100)
                    {
                        FloatingSubsidy = 0;
                    }
                    else
                    {
                        FloatingSubsidy = FloatingSubsidy >= 300 ? 300 : (int)Math.Floor(FloatingSubsidy) / 100 * 100;
                    }
                    detail.Pay9 = FloatingSubsidy;
                    break;
                }
                detail.Pay9 = Math.Round(detail.Pay9, 0, MidpointRounding.AwayFromZero);
                #endregion

                #region 计算工龄工资
                //----------------------------工龄工资---------------------------------------------
                //1.陕西营业部-25、云南营业部-29、贵州营业部-31、冀南营业部-34、新疆营业部-30、甘肃营业部-49、冀北营业部-4240,北京营业部-37 销量>=0  50	100	150
                //2.浙江营业部-15、湘北营业部-17、东三省营业部-40、鲁东营业部-48、[黑龙江营业部-41]、[吉林营业部-50]、湘南营业部-4239	,销量>=4000元	 50	100	150
                //3.苏南营业部-12、苏北营业部-13、 湖北营业部-14、四川营业部-23、川南营业部-26、重庆营业部-27,销量>=5000元	                     50	100	150
                //4.皖北营业部-11、江西营业部-18、福建营业部-19、广州营业部-20、粤西营业部-21、粤东营业部-22、广西营业部-24、皖南营业部-4238
                //山西营业部-35、鲁西营业部-36、内蒙营业部-38、豫南营业部-46、豫北营业部-47,豫中营业部-4237,销量>=6000	 50	100	150
                //系统根据导购员的入职时间及福利标准得到工龄补贴标准,再用工龄补贴标准/30*天数(有销量限制的,当不足月的,按销量÷天数×30) 自动计算
                int PMOrganizeCity = TreeTableBLL.GetSuperIDByLevel("MCS_SYS.dbo.Addr_OrganizeCity", p.OrganizeCity, 3);
                if (PM_Salary[0].SeniorityPayMode == 1 && detail.ActWorkDays > 0)
                {
                    int[]    City1   = new int[] { 25, 29, 31, 34, 30, 49, 4240, 37 };
                    int[]    City2   = new int[] { 15, 17, 40, 48, 41, 50, 4239 };
                    int[]    City3   = new int[] { 12, 13, 14, 23, 26, 27 };
                    int[]    City4   = new int[] { 11, 18, 19, 20, 21, 22, 24, 35, 36, 38, 46, 47, 4237, 4238 };
                    DateTime Enddate = p.Dimission == 1 ? month.EndDate : p.EndWorkDate;
                    //计算工龄
                    int SeniorityYear = Enddate.Year - p.BeginWorkDate.Year - 1;

                    if (Enddate >= p.BeginWorkDate.AddYears(Enddate.Year - p.BeginWorkDate.Year))
                    {
                        SeniorityYear++;
                    }

                    SeniorityYear = SeniorityYear > 0 ? SeniorityYear : 0;
                    decimal Seniority = SeniorityYear * 50 > 150 ? 150 : SeniorityYear * 50;

                    if (Array.IndexOf(City1, PMOrganizeCity) != -1 || Array.IndexOf(City2, PMOrganizeCity) != -1 && detail.ActSalesVolume >= 4000 ||
                        (Array.IndexOf(City3, PMOrganizeCity) != -1 && detail.ActSalesVolume >= 5000) || (Array.IndexOf(City4, PMOrganizeCity) != -1 && detail.ActSalesVolume >= 6000))
                    {
                        detail.Pay3 = Math.Round(Seniority / monthDays * detail.ActWorkDays, 0, MidpointRounding.AwayFromZero);
                    }
                    else
                    {
                        detail.Pay3 = 0;
                    }
                }
                else
                {
                    detail.Pay3 = 0;
                }
                #endregion

                //--------------------------我司薪酬明细-----------------------------------------------
                if (InsuranceMode == "1" && PM_Salary[0].InsuranceSubsidy > 0)
                {
                    detail.Pay5 = Math.Round(Convert.ToDecimal(PM_Salary[0].InsuranceSubsidy) / monthDays * detail.ActWorkDays, 0, MidpointRounding.AwayFromZero);
                }
                detail.Pay6  = Math.Round(detail.Bonus * (100 - PromotorAwardRate) / 100, 0, MidpointRounding.AwayFromZero);
                detail.Pay7  = Math.Round(PM_DataList[0].Data10, 1, MidpointRounding.AwayFromZero);                                      //奖惩项
                detail.Pay8  = InsuranceCostList.Count > 0 ? Math.Round(InsuranceCostList[0].StaffCost, 1, MidpointRounding.AwayFromZero) : 0;
                detail.Pay17 = Math.Round(PM_Salary[0].DIFeeSubsidy / monthDays * detail.ActWorkDays, 1, MidpointRounding.AwayFromZero); //我司通讯补贴2014-05-12修改
                for (int i = 1; i < 11; i++)
                {
                    detail.Sum1 += Math.Round(decimal.Parse(detail["Pay" + i.ToString()]), 1);
                }
                detail.Sum1 += detail.Pay17;//我司通讯补贴算导购实得
                //--------------------------我司薪酬明细-----------------------------------------------
                //  社保费用额
                detail.Pay12 = InsuranceCostList.Count > 0 ? Math.Round(InsuranceCostList[0].StaffCost + InsuranceCostList[0].CompanyCost, 1, MidpointRounding.AwayFromZero) : 0;

                if (InsuranceMode == "8")
                {
                    detail.Pay13 = Math.Round(PM_DataList[0].Data17, 1, MidpointRounding.AwayFromZero);                                          //自购保险
                }
                detail.Pay14 = InsuranceCostList.Count > 0 ? Math.Round(InsuranceCostList[0].ServiceCost, 0, MidpointRounding.AwayFromZero) : 0; //派遣服务费

                //--------------------------经销商结构-----------------------------------------------
                detail.Pay16 = Math.Round(PM_Salary[0].DIBasePaySubsidy / monthDays * detail.ActWorkDays, 1, MidpointRounding.AwayFromZero);

                detail.Pay18 = Math.Round(detail.Bonus * PromotorAwardRate / 100, 1, MidpointRounding.AwayFromZero);
                detail.Pay19 = Math.Round(PM_DataList[0].Data19, 1, MidpointRounding.AwayFromZero);

                #region 当总销量为0时,底薪,浮动底薪补贴,我司底薪补贴,工龄工资,保底补贴,社保补贴,我司承担提成,经销商底薪补贴,经销商结构→费用补贴,经销商承担提成 都将数据刷为0
                if (detail.ActSalesVolume == 0)
                {
                    detail.Pay1  = 0;
                    detail.Pay2  = 0;
                    detail.Pay7  = 0;
                    detail.Pay9  = 0;
                    detail.Pay3  = 0;
                    detail.Pay4  = 0;
                    detail.Pay5  = 0;
                    detail.Pay6  = 0;
                    detail.Pay16 = 0;
                    detail.Pay17 = 0;
                    detail.Pay18 = 0;
                }
                #endregion
                //经销商承担薪资合计
                detail.Sum3 = Math.Round(detail.Pay16 + detail.Pay18 + detail.Pay19, 0, MidpointRounding.AwayFromZero);


                #region 计算保底补贴
                //导购实得薪资小计<保底工资       保底补贴=保底标准/30*出勤天数-(底薪+底薪补贴+工龄工资+我司承担提成+浮动底薪补贴+经销薪资合计)
                detail.Sum4 = Math.Round(detail.Pay1 + detail.Pay2 + detail.Pay3 + detail.Pay6 + detail.Pay9 + detail.Sum3, 1, MidpointRounding.AwayFromZero);
                if (detail.ActSalesVolume > 0 && detail.ActWorkDays > 0 && PM_Salary[0].MinimumWageBeginDate <= month.EndDate && detail.Sum4 < PM_Salary[0].MinimumWage &&
                    (PM_Salary[0].MinimumWageEndDate == new DateTime(1900, 1, 1) || PM_Salary[0].MinimumWageEndDate.AddDays(1) > month.BeginDate))
                {
                    detail.Pay4 = Math.Round((PM_Salary[0].MinimumWage / monthDays * detail.ActWorkDays - detail.Sum4), 1, MidpointRounding.AwayFromZero);
                    if (detail.Pay4 < 0)
                    {
                        detail.Pay4 = 0;
                    }
                }

                //重新计算我司实发额
                detail.Sum1 = 0;
                for (int i = 1; i < 11; i++)
                {
                    if (i == 8)
                    {
                        continue;
                    }
                    detail.Sum1 += Math.Round(decimal.Parse(detail["Pay" + i.ToString()]), 1, MidpointRounding.AwayFromZero);
                }
                detail.Sum1 += detail.Pay17;//我司通讯补贴算导购实得
                #endregion
                //含税工资额
                detail.Pay11 = Math.Round(detail.Sum1 - detail.Pay8, 1, MidpointRounding.AwayFromZero);//减社保代扣额
                detail.Tax   = Math.Round(ComputeIncomeTax(detail.Pay11), 0, MidpointRounding.AwayFromZero);
                detail.Sum1  = Math.Round(detail.Pay11 - detail.Tax, 1, MidpointRounding.AwayFromZero);
                detail["PayAdjust_Approve"] = "0";

                if (detail.Sum1 < 0)
                {
                    detail["PayAdjust_Approve"] = (-detail.Sum1).ToString();
                    detail["Remark"]            = "实得薪资小计不能为负,进行冲抵:" + detail["PayAdjust_Approve"];
                    detail.Sum1  = 0;
                    detail.Pay11 = detail.Sum1;
                }
                if (detail.Sum3 < 0)
                {
                    detail.Sum3 = 0;
                }
                //重新计算导购实得薪资小计
                detail.Sum4 = Math.Round(detail.Sum1 + detail.Sum3, 1, MidpointRounding.AwayFromZero);

                #endregion

                //我司导购费用小计
                detail.Sum2 = Math.Round(detail.Pay11 + detail.Pay12 + detail.Pay14 + detail.Pay13, 1, MidpointRounding.AwayFromZero);

                //导购薪资合计
                detail.TotalSalary = Math.Round(detail.Sum2 + detail.Sum3, 1, MidpointRounding.AwayFromZero);
                //----------------------------------管理费明细-----------------------------------------
                #region 判断是否要生成管理费申请单
                DataRow[] rows = promotors.Select("Promotor=" + p.ID);
                if (decimal.Parse(rows[0]["PMFee"].ToString()) > 0)
                {
                    detail["PMFee"]           = detail.ActWorkDays == 0 ? "0" : (Math.Round(decimal.Parse(rows[0]["PMFee"].ToString()) + PM_DataList[0].Data20, 1, MidpointRounding.AwayFromZero)).ToString();
                    detail["IsGeneratePMFee"] = "2";
                }
                else
                {
                    detail["PMFee"] = detail.ActWorkDays == 0 ? "0" : (PM_Salary[0].RTManageCost + PM_DataList[0].Data20).ToString("0.0");
                }
                #endregion

                detail["PMFee1"]     = PM_DataList[0].Data30.ToString("0.0");
                detail["PMFee2"]     = (decimal.Parse(detail["PMFee"]) * (100 - PromotorCostRate) / 100).ToString("0.0");
                detail.CoPMFee       = decimal.Parse(detail["PMFee1"]) + decimal.Parse(detail["PMFee2"]);
                detail.DIPMFee       = decimal.Parse(detail["PMFee"]) * PromotorCostRate / 100;
                detail.PMFeeTotal    = detail.CoPMFee + detail.DIPMFee;
                detail["FlagCancel"] = "2";

                bll.Items.Add(detail);
            }
            #endregion

            if (bll.Items.Count > 0)
            {
                return(bll.Add());
            }
            else
            {
                return(0);
            }
        }
Esempio n. 13
0
        /// <summary>
        /// 获取数据源
        /// </summary>
        /// <param name="ParamValue"></param>
        /// <param name="CacheTime"></param>
        /// <returns></returns>
        public DataTable GetData(Dictionary <string, object> ParamValue, bool LoadFromCache, out DateTime CacheTime)
        {
            DataTable dt = null;

            CacheTime = DateTime.Now;

            if (LoadFromCache)
            {
                dt = Rpt_DataSet_DataCacheBLL.LoadDataSetCache(_m.ID, ParamValue, out CacheTime);
            }

            if (dt == null || dt.Rows.Count == 0)
            {
                SqlParameter[] param = MakeParams(ParamValue);

                Rpt_DataSource source = new Rpt_DataSourceBLL(_m.DataSource).Model;
                string         conn   = "";

                if (source.ConnectionString != "")
                {
                    conn = MCSFramework.Common.DataEncrypter.DecryptData(source.ConnectionString);
                }

                switch (_m.CommandType)
                {
                case 1:
                    dt = _dal.GetDataFromSQL(conn, _m.CommandText, param);
                    break;

                case 2:
                    dt = _dal.GetDataFromStoreProcedure(conn, _m.CommandText, param);
                    break;

                case 3:
                    Dictionary <string, Rpt_DataSetFields> dicTreeColumnList;
                    dt = _dal.GetDataFromSQL(conn, GenarateSelectSQL(out dicTreeColumnList), param);

                    #region 处理树形字段,显示指定层级的内容
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        DataColumn column = dt.Columns[i];

                        if (!dicTreeColumnList.ContainsKey(column.ColumnName))
                        {
                            continue;
                        }

                        DataColumn newcolumn = dt.Columns.Add("_" + column.ColumnName, Type.GetType("System.String"));

                        Rpt_DataSetFields        field      = dicTreeColumnList[column.ColumnName];
                        Dictionary <int, string> cachevalue = new Dictionary <int, string>();

                        foreach (DataRow row in dt.Rows)
                        {
                            int value = 0;
                            if (int.TryParse(row[column].ToString(), out value))
                            {
                                if (cachevalue.ContainsKey(value))
                                {
                                    row[newcolumn] = cachevalue[value];
                                }
                                else
                                {
                                    if (field.TreeLevel == 100)
                                    {
                                        //显示全路径
                                        row[newcolumn] = TreeTableBLL.GetFullPathName(new UD_ModelFieldsBLL(field.FieldID, true).Model.RelationTableName, value);
                                    }
                                    else
                                    {
                                        //显示父级
                                        if (field.DisplayMode == 1)
                                        {
                                            row[newcolumn] = TreeTableBLL.GetSuperIDByLevel(new UD_ModelFieldsBLL(field.FieldID, true).Model.RelationTableName, value, field.TreeLevel).ToString();
                                        }
                                        else
                                        {
                                            row[newcolumn] = TreeTableBLL.GetSuperNameByLevel(new UD_ModelFieldsBLL(field.FieldID, true).Model.RelationTableName, value, field.TreeLevel);
                                        }
                                    }
                                    cachevalue.Add(value, row[newcolumn].ToString());
                                }
                            }
                        }
                        int order = column.Ordinal;
                        dt.Columns.Remove(column);
                        newcolumn.SetOrdinal(order);
                        newcolumn.ColumnName = newcolumn.ColumnName.Substring(1);
                    }
                    #endregion

                    break;

                default:
                    break;
                }

                if (_m.CommandType == 1 || _m.CommandType == 2)
                {
                    #region 加入计算列字段
                    IList <Rpt_DataSetFields> computefields = this.GetFields().Where(p => p.IsComputeField == "Y").ToList();
                    foreach (Rpt_DataSetFields field in computefields)
                    {
                        Type ColumnType;
                        switch (field.DataType)
                        {
                        case 1:         //整型(int)
                            ColumnType = Type.GetType("System.Int32");
                            break;

                        case 2:         //小数(decimal)
                            ColumnType = Type.GetType("System.Decimal");
                            break;

                        case 3:         //字符串(varchar)
                        case 6:         //字符串(nvarchar)
                            ColumnType = Type.GetType("System.String");
                            break;

                        case 4:         //日期(datetime)
                            ColumnType = Type.GetType("System.DateTime");
                            break;

                        case 5:         //GUID(uniqueidentifier)
                            ColumnType = Type.GetType("System.Guid");
                            break;

                        default:
                            ColumnType = Type.GetType("System.Decimal");
                            break;
                        }
                        try
                        {
                            dt.Columns.Add(field.FieldName, ColumnType, field.Expression);
                        }
                        catch { }
                    }
                    #endregion
                }

                if (dt != null && dt.Rows.Count < 200000)    //只对20万行以下的数据表进行缓存
                {
                    try
                    {
                        Rpt_DataSet_DataCacheBLL.SaveDataSetCache(_m.ID, ParamValue, dt);
                        CacheTime = DateTime.Now;
                    }
                    catch { System.GC.Collect(); }
                }
            }

            return(dt);
        }