loadStock.js 5.7 KB
Newer Older
doc_wei's avatar
doc_wei 已提交
1
/**
2
 * 根据规格加载当前库存
3
 *
doc_wei's avatar
doc_wei 已提交
4 5 6
 * @param rowNum 表格行坐标
 * @param depotId 仓库id
 */
7 8
function loadTockByDepotAndMUnit(rowNum, depotId) {
    // 获取当前选中的规格
doc_wei's avatar
doc_wei 已提交
9
    var normsId = $("#mUnitId" + rowNum).val();
10
    // 当规格不为空时
doc_wei's avatar
doc_wei 已提交
11
    if (!isNull(normsId)) {
doc_wei's avatar
doc_wei 已提交
12
        // 获取库存
doc_wei's avatar
doc_wei 已提交
13
        getStockAjaxByDepotAndNormsId(normsId, depotId, function (json) {
14
            $("#allStock" + rowNum).html(json.bean[normsId]);
doc_wei's avatar
doc_wei 已提交
15
        });
doc_wei's avatar
doc_wei 已提交
16
    } else {
17
        // 否则重置库存为空
18
        $("#allStock" + rowNum).html("");
doc_wei's avatar
doc_wei 已提交
19 20 21 22 23
    }
}

/**
 * 根据仓库id加载表格中已经选择的商品规格的库存
24
 *
doc_wei's avatar
doc_wei 已提交
25 26
 * @param depotId 仓库id
 */
27
function loadMaterialDepotStockByDepotId(depotId) {
doc_wei's avatar
doc_wei 已提交
28
    var normsIds = new Array();
29
    var normsIdIndex = {};
30
    $.each(initTableChooseUtil.getDataRowIndex('productList'), function (i, item) {
doc_wei's avatar
doc_wei 已提交
31
        // 获取行坐标
32
        var thisRowKey = item;
doc_wei's avatar
doc_wei 已提交
33 34 35 36
        var normsId = $("#mUnitId" + thisRowKey).val();
        if (!isNull(normsId)) {
            normsIds.push(normsId);
            normsIdIndex[thisRowKey] = normsId;
doc_wei's avatar
doc_wei 已提交
37 38
        }
    });
39
    if (normsIds.length == 0) {
doc_wei's avatar
doc_wei 已提交
40 41 42
        return;
    }
    // 获取库存
W
weizhiqiang 已提交
43
    getStockAjaxByDepotAndNormsId(normsIds.join(','), depotId, function (json) {
doc_wei's avatar
doc_wei 已提交
44 45
        var stockMation = json.bean;
        $.each(normsIdIndex, function (rowIndex, normsId) {
46
            $("#allStock" + rowIndex).html(stockMation[normsId]);
doc_wei's avatar
doc_wei 已提交
47
        });
doc_wei's avatar
doc_wei 已提交
48 49 50 51 52 53 54 55 56
    });
}

/**
 * 发送请求获取库存信息
 * @param normsIds 多规格id,逗号隔开
 * @param depotId 仓库id,可为空
 * @param callBack 回调函数
 */
57 58 59 60 61
function getStockAjaxByDepotAndNormsId(normsIds, depotId, callBack) {
    var params = {
        depotId: depotId,
        normsIds: normsIds
    };
doc_wei's avatar
doc_wei 已提交
62
    AjaxPostUtil.request({url: sysMainMation.erpBasePath + "material011", params: params, type: 'json', method: "POST", callback: function(json) {
63 64
        if(typeof(callBack) == "function") {
            callBack(json);
doc_wei's avatar
doc_wei 已提交
65 66
        }
    }});
67 68
}

69 70 71 72 73 74 75 76 77 78 79 80
// 判断选中的商品是否也在数组中
function inTableDataArrayByAssetarId(materialId, unitId, array) {
    var isIn = false;
    $.each(array, function(i, item) {
        if(item.mUnitId === unitId && item.materialId === materialId) {
            isIn = true;
            return false;
        }
    });
    return isIn;
}

81
/**
doc_wei's avatar
doc_wei 已提交
82
 * 商品规格加载变化事件--组件使用
83 84
 *
 * @param form 表单对象
85 86 87
 * @param allChooseProduct 商品对象
 * @param unitPriceKey 单价显示的key,不用的单据类型展示不同的商品价格类型(零售价,最低售价,销售价等)
 * @param calcPriceCallback 计算价格回调的函数
88
 * @param callback 变化回调函数
89
 */
90
function mUnitChangeEvent(form, allChooseProduct, unitPriceKey, calcPriceCallback, callback) {
91 92 93
    // 商品规格加载变化事件
    form.on('select(selectUnitProperty)', function(data) {
        var thisRowValue = data.value;
doc_wei's avatar
doc_wei 已提交
94
        var thisRowKey = data.elem.id.replace("normsId", "").toString();
95 96 97
        // 当前当前行选中的商品信息
        if (!isNull(thisRowValue)) {
            var product = allChooseProduct["tr" + thisRowKey];
doc_wei's avatar
doc_wei 已提交
98
            $.each(product.materialNorms, function (j, bean) {
99 100 101
                if (thisRowValue == bean.id) {
                    var rkNum = parseInt($("#rkNum" + thisRowKey).val());
                    // 设置单价和金额
doc_wei's avatar
doc_wei 已提交
102
                    var unitPrice = parseFloat(bean[unitPriceKey]).toFixed(2);
103 104
                    $("#unitPrice" + thisRowKey).val(unitPrice);
                    $("#amountOfMoney" + thisRowKey).val((rkNum * parseFloat(unitPrice)).toFixed(2));
105 106 107
                    if (typeof callback == "function") {
                        callback(thisRowKey, bean);
                    }
108 109 110 111 112 113 114
                    return false;
                }
            });
        } else {
            // 重置单价以及金额为空
            $("#unitPrice" + thisRowKey).val("0.00");
            $("#amountOfMoney" + thisRowKey).val("0.00");
115 116 117
            if (typeof callback == "function") {
                callback(thisRowKey, null);
            }
118 119 120 121
        }
        var depotId = isNull($("#depotId").val()) ? "" : $("#depotId").val();
        // 加载库存
        loadTockByDepotAndMUnit(thisRowKey, depotId);
122 123 124 125 126 127
        if (typeof calcPriceCallback == "function") {
            calcPriceCallback();
        } else {
            // 计算价格
            calculatedTotalPrice();
        }
128 129 130 131 132 133 134 135
    });
}

/**
 * 初始化商品选择的监听事件
 *
 * @param form 表单对象
 * @param callback 回调函数
136
 * @param calcPriceCallback 计算价格回调的函数
137
 */
138
function initChooseProductBtnEnent (form, callback, calcPriceCallback) {
139
    var selOptionHtml = getFileContent('tpl/template/select-option.tpl');
140 141 142 143 144
    $("body").on("click", ".chooseProductBtn", function (e) {
        var trId = $(this).parent().parent().attr("trcusid");
        erpOrderUtil.openMaterialChooseChoosePage(function (chooseProductMation) {
            // 获取表格行号
            var thisRowKey = trId.replace("tr", "");
doc_wei's avatar
doc_wei 已提交
145
            // 产品名称赋值
doc_wei's avatar
doc_wei 已提交
146
            $("#materialId" + thisRowKey).val(chooseProductMation.name);
doc_wei's avatar
doc_wei 已提交
147 148 149
            $("#materialId" + thisRowKey).attr(initTableChooseUtil.chooseInputDataIdKey, chooseProductMation.id);
            // 规格赋值
            $("#normsId" + thisRowKey).html(getDataUseHandlebars(selOptionHtml, {rows: chooseProductMation.materialNorms}));
150 151 152 153
            form.render('select');
            if (typeof callback == "function") {
                callback(trId, chooseProductMation);
            }
154 155 156 157 158 159
            if (typeof calcPriceCallback == "function") {
                calcPriceCallback();
            } else {
                // 计算价格
                calculatedTotalPrice();
            }
160 161 162 163
        });
    });
}