• Microsoft Dynamics CRM 2011 JS表单计算毛利JS判断


    /*
    说明:获取产品配置方案明细分组类型
    参数:IsBeiji 是否备机,IsDonate是否赠送,IsService是否服务,IsBaseService是否基本服务,TypeCode产品类型值
    输出:int
    1 正常销售产品
    2 备机
    3 赠送
    4 基本保修服务
    5 收费服务
    6 赠送服务
    7 赠送-其他公司产品
    注意:TypeCode 为产品配置方案明细中的 产品类型
    */
    function getGroupTypeCode(IsBeiji, IsDonate, IsService, IsBasicService, TypeCode) {
    if ((!IsBeiji) && (!IsDonate) && (!IsService) && (!IsBasicService) && TypeCode != 4) return 1;
    if (IsBeiji && (!IsDonate) && (!IsService) && (!IsBasicService) && TypeCode != 4) return 2;
    if ((!IsBeiji) && (IsDonate) && (!IsService) && (!IsBasicService) && TypeCode != 4) return 3;
    if ((!IsBeiji) && (!IsDonate) && (IsService) && (IsBasicService) && TypeCode != 4) return 4;
    if ((!IsBeiji) && (!IsDonate) && (IsService) && (!IsBasicService) && TypeCode != 4) return 5;
    if ((!IsBeiji) && (IsDonate) && (IsService) && (!IsBasicService) && TypeCode != 4) return 6;
    if ((!IsBeiji) && (!IsDonate) && (!IsService) && (!IsBasicService) && TypeCode == 4) return 7;
    }
    /*
    商务审批窗体的Ribbon按钮“计算毛利”在点击后需要检查产品配置方案明细后进行以下检查操作:
    步骤:
    1,获取当前记录下的所有配置方案明细记录;
    2,如果检查记录中不存在分组类型为“销售产品”、“收费服务”、“备机”的记录,则提示“没有可进行毛利计算的明细记录。”,不进行毛利对接;
    2,如果存在分组类型为“销售产品”、“收费服务”、“备机”的记录,则做以下检查:
    正常销售产品:类型=主机或模块,判断销售报价和最终用户单价是否有值;类型=配件,标选配等于选配,判断销售报价和最终用户单价
    收费服务:类型=主机或模块,判断销售报价是否有值;类型=配件,标选配等于选配,判断销售报价是否有值。
    备机:类型=主机或模块,判断备机年限是否有值;类型=配件,标选配等于选配,判断备机年限是否有值。
    注意:最终用户单价是否要录,与销售模式有关。(销售模式=直销时,不用判断最终用户单价;销售模式=非直销时,就要判断最终用户单价)
    */
    function CheckXsbjBeforeUpdateML() {
    debugger;
    var xsms = Xrm.Page.getAttribute("mp_xsms").getValue(); //获取销售模式的值
    var swspid = Xrm.Page.data.entity.getId(); //获取当前的商务审批ID
    if (swspid != null && swspid != undefined) { //判断当前商务审批ID不为null或没定义
    var r = new fwREST(); //需要引入fw_restJS函数库
    var rest_query = "mp_cppzfamxSet?$select=mp_lx,mp_xsbj,mp_zzyhdj,mp_bjnx,mp_isbj,mp_iszs,mp_isfw,mp_isjbfw,mp_bxp&$filter=(statecode/Value eq 0) and (mp_swsp/Id eq (guid'" + swspid + "'))"; //查询字符串 注意:mp_swsp为 一对多,多方的父ID。
    var array = r.get(rest_query);
    if (array.length < 1) {
    alert("没有明细记录");
    return false;
    }
    var a = 0, b = 0, c = 0;
    for (var i = 0; i < array.length; i++) {
    var lx = array[i].mp_lx.Value; //获取产品类型的值
    var xsbj = array[i].mp_xsbj.Value; //获取销售报价的值
    var zzyhdj = array[i].mp_zzyhdj.Value; //获取最终用户单价的值
    var bjnx = array[i].mp_bjnx; //获取备机年限的值
    var isbj = array[i].mp_isbj; //获取是否备机的值
    var iszs = array[i].mp_iszs; //获取是否赠送的值
    var isfw = array[i].mp_isfw; //获取是否服务的值
    var isjbfw = array[i].mp_isjbfw; //获取是否基本服务的值
    var bxp = array[i].mp_bxp.Value; //获取标选配的值

    //判断的是所有的指定的三个分组没有记录 要一条条判断。
    if ((getGroupTypeCode(isbj, iszs, isfw, isjbfw, lx) == 1)) a++;
    if ((getGroupTypeCode(isbj, iszs, isfw, isjbfw, lx) == 2)) b++;
    if ((getGroupTypeCode(isbj, iszs, isfw, isjbfw, lx) == 5)) c++;

    //判断的是指定的三个分组有记录 有记录的情况下,需要检查所有记录的分组类型
    //如果分组类型为“正常销售产品",类型=主机或模块,判断销售报价和最终用户单价是否有值;
    //类型=配件,标选配等于选配,判断销售报价和最终用户单价(销售模式=直销时,不用判断最终用户单价;销售模式=非直销时,就要判断最终用户单价)
    if ((getGroupTypeCode(isbj, iszs, isfw, isjbfw, lx) == 1)) {

    if (lx == 1) { //判断类型等于主机或模块

    if ((xsbj <= 0 || xsbj == null)) { //如果销售报价小于或等于0或为空
    alert("没有可进行毛利计算的明细记录");
    return false;
    }
    if (xsms != 2) { //如果销售模式为非直销
    if (zzyhdj <= 0 || zzyhdj == null) { //最终用户单价
    alert("产品明细中存在最终用户单价为空或0的记录,请填写完整后再进行毛利计算");
    return false;
    }
    }
    }

    if (lx == 2 && bxp == 0) { //如果产品类型为配件,标选配等于选配

    if ((xsbj <= 0 || xsbj == null)) { //如果销售报价小于或等于0或为空
    alert("没有可进行毛利计算的明细记录");
    return false;
    }

    if (xsms != 2) { //如果销售模式为非直销
    if (zzyhdj <= 0 || zzyhdj == null) { //最终用户单价
    alert("产品明细中存在销售报价为空或0的记录,请填写完整后再进行毛利计算");
    return false;
    }
    }
    }
    }

    //如果分组类型为“收费服务",类型=主机或模块,判断销售报价是否有值;类型=配件,标选配等于选配,判断销售报价是否有值
    if ((getGroupTypeCode(isbj, iszs, isfw, isjbfw, lx) == 5)) {

    if (lx == 1) { //判断类型等于主机或模块
    if ((xsbj <= 0 || xsbj == null)) { //如果销售报价小于或等于0或为空
    alert("没有可进行毛利计算的明细记录");
    return false;
    }
    }

    if (lx == 2 && bxp == 0) {//如果产品类型为配件,标选配等于选配
    if ((xsbj <= 0 || xsbj == null)) { //如果销售报价小于或等于0或为空
    alert("没有可进行毛利计算的明细记录");
    return false;
    }
    }
    }

    //如果分组类型为“备机",类型=主机或模块,判断备机年限是否有值;类型=配件,标选配等于选配,判断备机年限是否有值
    if ((getGroupTypeCode(isbj, iszs, isfw, isjbfw, lx) == 5)) {

    if (lx == 1) { //判断类型等于主机或模块
    if ((bjnx <= 0 || bjnx == null)) { //如果备机年限小于或等于0或为空
    alert("没有可进行毛利计算的明细记录");
    return false;
    }
    }

    if (lx == 2 && bxp == 0) { //如果产品类型为配件,标选配等于选配
    if ((bjnx <= 0 || bjnx == null)) { //如果备机年限小于或等于0或为空
    alert("没有可进行毛利计算的明细记录");
    return false;
    }
    }
    }

    } //for循环结尾
    if (a == 0 && b == 0 && c == 0) {
    alert("没有可进行毛利计算的明细记录,不进行毛利对接");
    return false;
    }
    return true;
    }
    }

    // 手动计算毛利
    function UpdateML_Swsp() {
    //检查是否满足条件

    if (!CheckXsbjBeforeUpdateML()) {
    return;
    }

    if (Xrm.Page.getAttribute("mp_zzspzt").getValue() == 3) {
    if (!confirm("注意!!当前审批状态为“已通过”,如果执行毛利计算,表单将会被退回为草稿状态,如果表单没有改动清不要重新计算毛利。您确认要继续操作吗?")) {
    return;
    }
    }

    if (Xrm.Page.getAttribute("mp_cppzfa").getValue() != null) {
    if (confirm("您确认要计算毛利吗?")) {
    var rest = new fwREST();
    var cppzfaId = Xrm.Page.getAttribute("mp_cppzfa").getValue()[0].id;
    var rest_cppzfa = "mp_cppzfaSet?$select=mp_bbh&$filter=(statecode/Value eq 0) and (mp_cppzfaId eq (guid'" + cppzfaId + "'))";
    var array_cppzfa = rest.get(rest_cppzfa);
    for (var i = 0; i < array_cppzfa.length; i++) {
    var bbh = array_cppzfa[i].mp_bbh;
    if (bbh == null || bbh == undefined) bbh = 0;
    var bbh = bbh + 1;
    rest.update("mp_cppzfa", cppzfaId, "{'mp_bbh':'" + bbh + "'}", OnloadSwspUI);
    }
    }
    }
    }

    检查是否有数据:

    http://IP地址/MPTest/XRMServices/2011/OrganizationData.svc/mp_cppzfamxSet?$select=mp_lx,mp_xsbj,mp_zzyhdj,mp_bjnx,mp_isbj,mp_iszs,mp_isfw,mp_isjbfw,mp_bxp&$filter=(statecode/Value eq 0) and (mp_swsp/Id eq (guid'24FFA3A7-1411-E211-9C85-D4AE52A300B9'))

  • 相关阅读:
    .NET Core中如何对Url进行编码和解码
    How to signout from an Azure Application?(转载)
    2016阿里安全峰会重点资料下载
    只有程序员才看懂的内涵图
    2016乌云白帽资料下载
    Python黑帽编程2.1 Python编程哲学
    Python黑帽编程2.2 数值类型
    Python黑帽编程 2.0 第二章概述
    PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
    乌云挂了,知识库的文章却在流传
  • 原文地址:https://www.cnblogs.com/allenhua/p/2738700.html
Copyright © 2020-2023  润新知