//初始化界面
$(function () {
    var depotList = null;
    var depotID = null;
    var supplierList = null;
    var supplierID = null;
    var personList = null;
    var personID = null;
    var ProjectSearch = null;
    var userBusinessList = null;
    var userdepot = null;
    var depotHeadMaxId = null; //获取最大的Id
    var accepId = null; //保存的主表id
    var url;
    var depotHeadID = 0;
    var preTotalPrice = 0; //前一次加载的金额
    var orgDepotHead = "";
    var editIndex = undefined;
    var listTitle = ""; //单据标题
    var listType = ""; //入库 出库
    var listSubType = ""; //采购 销售等
    var payTypeTitle = "";//付款 收款
    var organUrl = ""; //组织数据接口地址
    var amountNum = ""; //单据编号开头字符
    var depotString = ""; //店铺列表
    var orgDefaultId = 0; //单位默认编号
    var orgDefaultList; //存储查询出来的会员列表
    //初始化系统基础信息
    getType();
    initSystemData_UB();
    initSelectInfo_UB();
    initSystemData_depot();
    initSelectInfo_depot();
    initSelectInfo_supplier();
    initSystemData_person();
    initSelectInfo_person();
    initSystemData_account();
    initSelectInfo_account();
    initSupplier(); //供应商
    initTableData();
    ininPager();
    initForm();
    bindEvent();//绑定操作事件
});
//根据单据名称获取类型
function getType() {
    listTitle = $("#tablePanel").prev().text();
    depotString = "|";
    //改变宽度和高度
    $("#searchPanel").panel({width: webW - 2});
    $("#tablePanel").panel({width: webW - 2});
    var supUrl = path + "/supplier/findBySelect_sup.action"; //供应商接口
    var cusUrl = path + "/supplier/findBySelect_cus.action"; //客户接口
    var retailUrl = path + "/supplier/findBySelect_retail.action"; //散户接口
    if (listTitle === "采购入库列表") {
        listType = "入库";
        listSubType = "采购";
        payTypeTitle = "付款";
        organUrl = supUrl;
        amountNum = "CGRK";
    }
    else if (listTitle === "零售退货列表") {
        listType = "入库";
        listSubType = "零售退货"; //注：用预付款购买的产品不能退货
        payTypeTitle = "付款";
        organUrl = retailUrl;
        amountNum = "LSTH";
    }
    else if (listTitle === "销售退货列表") {
        listType = "入库";
        listSubType = "销售退货";
        payTypeTitle = "付款";
        organUrl = cusUrl;
        amountNum = "XSTH";
    }
    else if (listTitle === "其它入库列表") {
        listType = "入库";
        listSubType = "其它";
        payTypeTitle = "隐藏";
        organUrl = supUrl;
        amountNum = "QTRK";
    }
    else if (listTitle === "零售出库列表") {
        listType = "出库";
        listSubType = "零售";
        payTypeTitle = "收款";
        organUrl = retailUrl;
        amountNum = "LSCK";
    }
    else if (listTitle === "销售出库列表") {
        listType = "出库";
        listSubType = "销售";
        payTypeTitle = "收款";
        organUrl = cusUrl;
        amountNum = "XSCK";
    }
    else if (listTitle === "采购退货列表") {
        listType = "出库";
        listSubType = "采购退货";
        payTypeTitle = "收款";
        organUrl = supUrl;
        amountNum = "CGTH";
    }
    else if (listTitle === "其它出库列表") {
        listType = "出库";
        listSubType = "其它";
        payTypeTitle = "隐藏";
        organUrl = cusUrl;
        amountNum = "QTCK";
    }
    else if (listTitle === "调拨出库列表") {
        listType = "出库";
        listSubType = "调拨";
        payTypeTitle = "隐藏";
        organUrl = supUrl;
        amountNum = "DBCK";
    }
}
//初始化系统基础信息
function initSystemData_UB() {
    $.ajax({
        type: "post",
        url: path + "/userBusiness/getBasicData.action",
        data: ({
            KeyId: kid,
            Type: "UserDepot"
        }),
        //设置为同步
        async: false,
        dataType: "json",
        success: function (systemInfo) {
            if (systemInfo) {
                userBusinessList = systemInfo.showModel.map.userBusinessList;
                var msgTip = systemInfo.showModel.msgTip;
                if (msgTip == "exceptoin") {
                    $.messager.alert('提示', '查找UserBusiness异常,请与管理员联系！', 'error');
                    return;
                }
            }
            else {
                userBusinessList = null;
            }
        }
    });

}
//初始化页面选项卡
function initSelectInfo_UB() {

    if (userBusinessList != null) {
        if (userBusinessList.length > 0) {
            //用户对应的仓库列表 [1][2][3]...
            userdepot = userBusinessList[0].value;
        }
    }
}


//初始化系统基础信息
function initSystemData_depot() {
    $.ajax({
        type: "post",
        url: path + "/depot/getBasicData.action",
        //设置为同步
        async: false,
        dataType: "json",
        success: function (systemInfo) {
            depotList = systemInfo.showModel.map.depotList;
            supplierList = systemInfo.showModel.map.supplierList;
            var msgTip = systemInfo.showModel.msgTip;
            if (msgTip == "exceptoin") {
                $.messager.alert('提示', '查找系统基础信息异常,请与管理员联系！', 'error');
                return;
            }
        }
    });
}
//初始化页面选项卡
function initSelectInfo_depot() {
    var options = "";

    if (depotList != null) {
        options = "";
        for (var i = 0; i < depotList.length; i++) {
            var depot = depotList[i];

            if (userdepot != null) {
                if (userdepot.indexOf("[" + depot.id + "]") != -1) {
                    options += '<option value="' + depot.id + '">' + depot.name + '</option>';
                    depotString = depotString + depot.id + ",";
                }
            }
        }
        depotString = depotString.substring(1, depotString.length - 1);
        $("#ProjectId").empty().append(options);
        $("#AllocationProjectId").empty().append(options);
        $("#searchProjectId").empty().append('<option value="">全部</option>').append(options);
    }
}

//初始化页面选项卡中客户、供应商下拉列表
function initSelectInfo_supplier() {
    var options = "";

    if (supplierList != null) {
        options = "";
        for (var i = 0; i < supplierList.length; i++) {
            var supplier = supplierList[i];
            options += '<option value="' + supplier.id + '">' + supplier.supplier + '</option>';
        }
        $("#searchOrganId").empty().append('<option value="">全部</option>').append(options);
    }
}

//初始化供应商、客户、散户信息
function initSupplier() {
    $('#OrganId').combobox({
        url: organUrl,
        valueField: 'id',
        textField: 'supplier',
        onLoadSuccess: function (res) {
            var data = $(this).combobox('getData');
            for (var i = 0; i <= data.length; i++) {
                if (data && data[i] && data[i].supplier === "非会员") {
                    orgDefaultId = data[i].id;
                }
            }
            if (listSubType === "零售") {
                orgDefaultList = res;
            }
        },
        onSelect: function (rec) {
            if (listSubType === "零售") {
                var option = "";
                if (rec.supplier !== "非会员" && rec.advanceIn > 0) {
                    option = '<option value="预付款">预付款(' + rec.advanceIn + ')</option>';
                    option += '<option value="现付">现付</option>';
                }
                else {
                    option += '<option value="现付">现付</option>';
                }
                $("#payType").empty().append(option);
            }
        }
    });
}

//初始化系统基础信息
function initSystemData_person() {
    $.ajax({
        type: "post",
        url: path + "/person/getBasicData.action",
        //设置为同步
        async: false,
        dataType: "json",
        success: function (systemInfo) {
            personList = systemInfo.showModel.map.personList;
            var msgTip = systemInfo.showModel.msgTip;
            if (msgTip == "exceptoin") {
                $.messager.alert('提示', '查找系统基础信息异常,请与管理员联系！', 'error');
                return;
            }
        }
    });
}
//初始化页面选项卡
function initSelectInfo_person() {
    var options1 = "";

    if (personList != null) {
        for (var i = 0; i < personList.length; i++) {
            var person = personList[i];
            if (0 == i) {
                personID = person.id;
            }
            if (person.type == "仓管员") {
                options1 += '<option value="' + person.id + '">' + person.name + '</option>';
            }
        }
        $("#HandsPersonId").empty().append(options1);
    }
}
//获取账户信息
function initSystemData_account() {
    $.ajax({
        type: "post",
        url: path + "/account/getAccount.action",
        //设置为同步
        async: false,
        dataType: "json",
        success: function (systemInfo) {
            accountList = systemInfo.showModel.map.accountList;
            var msgTip = systemInfo.showModel.msgTip;
            if (msgTip == "exceptoin") {
                $.messager.alert('提示', '查找账户信息异常,请与管理员联系！', 'error');
                return;
            }
        }
    });
}
//获取账户信息
function initSelectInfo_account() {
    var options = "";
    if (accountList != null) {
        options = "";
        for (var i = 0; i < accountList.length; i++) {
            var account = accountList[i];
            options += '<option value="' + account.id + '" data-currentAmount="' + account.currentAmount + '">' + account.name + '</option>';
        }
        $("#AccountId").empty().append(options);
    }
}

//防止表单提交重复
function initForm() {
    $('#depotHeadFM').form({
        onSubmit: function () {
            return false;
        }
    });
}

//初始化表格数据
function initTableData() {
    var hideType = undefined;
    if (payTypeTitle === "隐藏") {
        hideType = true; //隐藏当前列
    }
    $('#tableData').datagrid({
        //iconCls:'icon-save',
        //width:700,
        height: heightInfo,
        rownumbers: false,
        //动画效果
        animate: false,
        //选中单行
        singleSelect: true,
        collapsible: false,
        selectOnCheck: false,
        //fitColumns:true,
        //单击行是否选中
        //checkOnSelect : false,
        //url: path + '/depotHead/findBy.action?pageSize=' + initPageSize,
        pagination: true,
        //交替出现背景
        striped: true,
        //loadFilter: pagerFilter,
        pageSize: 5,
        pageList: initPageNum,
        columns: [[
            {field: 'Id', width: 35, align: "center", checkbox: true},
            {field: 'OrganId', width: 5, hidden: true},
            //{title: '单据编号', field: 'Number', width: 100},
            {title: '单据日期 ', field: 'OperTime', width: 100},
            //{title: '创建时间', field: 'CreateTime', width: 100},
            //{title: '操作员', field: 'OperPersonName', width: 80},
            {title: '客户', field: 'OrganName', width: 100},
            {title: '商品信息', field: 'MaterialInfo', width: 100},
            {title: '合计', field: 'TotalPrice', width: 50},
            {title: payTypeTitle, field: 'ChangeAmount', width: 50, hidden: hideType},
            {title: '单据备注', field: 'Remark', width: 150},
            {
                title: '操作', field: 'op', align: "center", width: 180, formatter: function (value, rec) {
                var str = '';
                var rowInfo = rec.Id + 'AaBb' + rec.ProjectId + 'AaBb' + rec.Number + 'AaBb' + rec.OperPersonName
                    + 'AaBb' + rec.OperTime + 'AaBb' + rec.OrganId + 'AaBb' + rec.HandsPersonId
                    + 'AaBb' + rec.AccountId + 'AaBb' + rec.ChangeAmount + 'AaBb' + rec.Remark
                    + 'AaBb' + rec.ProjectName + 'AaBb' + rec.OrganName + 'AaBb' + rec.HandsPersonName
                    + 'AaBb' + rec.AccountName + 'AaBb' + rec.TotalPrice + 'AaBb' + rec.AllocationProjectId
                    + 'AaBb' + rec.AllocationProjectName + 'AaBb' + rec.payType;
                if (1 == value) {
                    str += '<a onclick="showDepotHead(\'' + rowInfo + '\');" style="text-decoration:none;color:black;" href="javascript:void(0)"><span class="action-show">查看</span></a>';
                    str += '<a onclick="editDepotHead(\'' + rowInfo + '\');" style="text-decoration:none;color:black;" href="javascript:void(0)"><span class="action-edit">编辑</span></a>';
                    str += '<a onclick="deleteDepotHead(' + rec.Id + ',' + rec.OrganId + ',' + rec.TotalPrice + ');" style="text-decoration:none;color:black;" href="javascript:void(0)"><span class="action-delete">删除</span></a>';
                }
                return str;
            }
            }
        ]],
        toolbar: [
            {
                id: 'addDepotHead',
                text: '增加',
                iconCls: 'icon-add',
                handler: function () {
                    addDepotHead();
                }
            },
            {
                id: 'deleteDepotHead',
                text: '删除',
                iconCls: 'icon-remove',
                handler: function () {
                    batDeleteDepotHead();
                }
            }
        ],
        onLoadError: function () {
            $.messager.alert('页面加载提示', '页面加载异常，请稍后再试！', 'error');
            return;
        }
    });
}

//初始化表格数据-商品列表-编辑状态
function initTableData_material(type, TotalPrice) {
    $('#materialData').datagrid({
        height: 300,
        rownumbers: false,
        //动画效果
        animate: false,
        //选中单行
        singleSelect: true,
        collapsible: false,
        selectOnCheck: false,
        //fitColumns:true,
        //单击行是否选中
        //checkOnSelect : false,
        pagination: true,
        //交替出现背景
        striped: true,
        showFooter: true,
        //loadFilter: pagerFilter,
        onClickRow: onClickRow,
        pageSize: 50,
        pageList: [50, 100, 150],
        columns: [[
            {field: 'Id', width: 35, align: "center", checkbox: true},
            {
                title: '商品名称', field: 'MaterialId', width: 230,
                formatter: function (value, row, index) {
                    return row.MaterialName;
                },
                editor: {
                    type: 'combobox',
                    options: {
                        valueField: 'Id',
                        textField: 'MaterialName',
                        method: 'get',
                        url: path + "/material/findBySelect.action",
                        onSelect: function (rec) {
                            if (rec) {
                                $.ajax({
                                    url: path + "/material/findById.action",
                                    type: "get",
                                    dataType: "json",
                                    data: {
                                        "MaterialID": rec.Id
                                    },
                                    success: function (res) {
                                        if (res && res.rows && res.rows[0]) {
                                            var retailPrice = res.rows[0].RetailPrice; //零售价格
                                            var presetPriceOne = res.rows[0].PresetPriceOne; //价格1
                                            var presetPriceTwo = res.rows[0].PresetPriceTwo; //价格2
                                            var TotalPrice = 0;
                                            var allPrice = 0;
                                            var body = $("#depotHeadFM .datagrid-body");
                                            var footer = $("#depotHeadFM .datagrid-footer");
                                            var input = ".datagrid-editable-input";
                                            body.find("[field='OperNumber']").find(input).val(1);
                                            if (listSubType == "零售" || listSubType == "零售退货") {
                                                body.find("[field='UnitPrice']").find(input).val(retailPrice);
                                                body.find("[field='AllPrice']").find(input).val(retailPrice);
                                                allPrice = retailPrice;
                                            }
                                            else if (listTitle == "销售出库列表" || listTitle == "采购退货列表" || listTitle == "其它出库列表" || listTitle == "调拨出库列表") {
                                                body.find("[field='UnitPrice']").find(input).val(presetPriceOne);
                                                body.find("[field='AllPrice']").find(input).val(presetPriceOne);
                                                allPrice = presetPriceOne;
                                            }
                                            body.find("[field='AllPrice']").each(function () {
                                                if ($(this).find("div").text() !== "") {
                                                    TotalPrice = TotalPrice + parseFloat($(this).find("div").text().toString());
                                                }
                                            });
                                            TotalPrice = TotalPrice + allPrice;
                                            footer.find("[field='AllPrice']").find("div").text((TotalPrice).toFixed(2));
                                            if (listSubType == "零售" || listSubType == "零售退货") {
                                                $("#ChangeAmount, #getAmount").val((TotalPrice).toFixed(2));
                                                $("#backAmount").val(0);
                                            }
                                        }
                                    },
                                    error: function () {
                                        $.messager.alert('页面加载提示', '页面加载异常，请稍后再试！', 'error');
                                    }
                                });
                            }
                        }
                    }
                }
            },
            {title: '数量', field: 'OperNumber', editor: 'validatebox', width: 50},
            {title: '单价', field: 'UnitPrice', editor: 'validatebox', width: 50},
            {title: '金额', field: 'AllPrice', editor: 'validatebox', width: 50},
            {title: '备注', field: 'Remark', editor: 'validatebox', width: 150}
        ]],
        toolbar: [
            {
                id: 'append',
                text: '新增',
                iconCls: 'icon-add',
                handler: function () {
                    append(); //新增
                }
            },
            {
                id: 'delete',
                text: '删除',
                iconCls: 'icon-remove',
                handler: function () {
                    removeit(); //删除
                }
            },
            {
                id: 'reject',
                text: '撤销',
                iconCls: 'icon-undo',
                handler: function () {
                    reject(); //撤销
                }
            }
        ],
        onLoadError: function () {
            $.messager.alert('页面加载提示', '页面加载异常，请稍后再试！', 'error');
            return;
        }
    });
    $.ajax({
        type: "post",
        url: path + '/depotItem/findBy.action?HeaderId=' + depotHeadID,
        dataType: "json",
        success: function (res) {
            var AllPrice = 0
            if (type === "edit") {
                AllPrice = TotalPrice;
            }
            var array = [];
            array.push({
                "AllPrice": AllPrice
            });
            res.footer = array;
            $("#materialData").datagrid('loadData', res);

        },
        error: function () {
            $.messager.alert('查询提示', '查询数据后台异常，请稍后再试！', 'error');
        }
    });
}

//初始化表格数据-商品列表-查看状态
function initTableData_material_show(TotalPrice) {
    $('#materialDataShow').datagrid({
        height: 300,
        rownumbers: true,
        //动画效果
        animate: false,
        //选中单行
        singleSelect: true,
        collapsible: false,
        selectOnCheck: false,
        //fitColumns:true,
        //单击行是否选中
        //checkOnSelect : false,
        pagination: true,
        //交替出现背景
        striped: true,
        showFooter: true,
        //loadFilter: pagerFilter,
        onClickRow: onClickRow,
        pageSize: 50,
        pageList: [50, 100, 150],
        columns: [[
            {title: '商品名称', field: 'MaterialName', width: 230},
            {title: '数量', field: 'OperNumber', width: 50},
            {title: '单价', field: 'UnitPrice', width: 50},
            {title: '金额', field: 'AllPrice', width: 50},
            {title: '备注', field: 'Remark', width: 150}
        ]],
        onLoadError: function () {
            $.messager.alert('页面加载提示', '页面加载异常，请稍后再试！', 'error');
            return;
        }
    });
    $.ajax({
        type: "post",
        url: path + '/depotItem/findBy.action?HeaderId=' + depotHeadID,
        dataType: "json",
        success: function (res) {
            var AllPrice = TotalPrice;
            var array = [];
            array.push({
                "AllPrice": AllPrice
            });
            res.footer = array;
            $("#materialDataShow").datagrid('loadData', res);

        },
        error: function () {
            $.messager.alert('查询提示', '查询数据后台异常，请稍后再试！', 'error');
        }
    });
}

//分页信息处理
function ininPager() {
    try {
        var opts = $("#tableData").datagrid('options');
        var pager = $("#tableData").datagrid('getPager');
        pager.pagination({
            onSelectPage: function (pageNum, pageSize) {
                opts.pageNumber = pageNum;
                opts.pageSize = pageSize;
                pager.pagination('refresh',
                    {
                        pageNumber: pageNum,
                        pageSize: pageSize
                    });
                showDepotHeadDetails(pageNum, pageSize);
            }
        });
    }
    catch (e) {
        $.messager.alert('异常处理提示', "分页信息异常 :  " + e.name + ": " + e.message, 'error');
    }
}

//删除单据信息
function deleteDepotHead(depotHeadID, thisOrganId, totalPrice) {
    $.messager.confirm('删除确认', '确定要删除此单据信息吗？', function (r) {
        if (r) {
            $.ajax({
                type: "post",
                url: path + "/depotHead/delete.action",
                dataType: "json",
                data: ({
                    depotHeadID: depotHeadID,
                    clientIp: clientIp
                }),
                success: function (tipInfo) {
                    var msg = tipInfo.showModel.msgTip;
                    if (msg == '成功') {
                        //加载完以后重新初始化
                        $("#searchBtn").click();
                    }
                    else
                        $.messager.alert('删除提示', '删除单据信息失败，请稍后再试！', 'error');
                },
                //此处添加错误处理
                error: function () {
                    $.messager.alert('删除提示', '删除单据信息异常，请稍后再试！', 'error');
                    return;
                }
            });

            //更新会员的预收款信息
            if (listSubType === "零售") {
                $.ajax({
                    type: "post",
                    url: path + "/supplier/updateAdvanceIn.action",
                    dataType: "json",
                    data: {
                        SupplierID: thisOrganId, //会员id
                        AdvanceIn: totalPrice  //删除时同时返还用户的预付款
                    },
                    success: function (res) {
                        if (res) {
                            //保存会员预收款成功
                        }
                    },
                    error: function () {
                        $.messager.alert('提示', '保存信息异常，请稍后再试！', 'error');
                        return;
                    }
                });
            }
        }
    });
}

//批量删除单据信息
function batDeleteDepotHead() {
    var row = $('#tableData').datagrid('getChecked');
    if (row.length == 0) {
        $.messager.alert('删除提示', '没有记录被选中！', 'info');
        return;
    }
    if (row.length > 0) {
        $.messager.confirm('删除确认', '确定要删除选中的' + row.length + '条单据信息吗？', function (r) {
            if (r) {
                var ids = "";
                for (var i = 0; i < row.length; i++) {
                    if (i == row.length - 1) {
                        ids += row[i].Id;
                        break;
                    }
                    //alert(row[i].id);
                    ids += row[i].Id + ",";
                }
                //批量更新会员的预收款信息
                for (var i = 0; i < row.length; i++) {
                    if (listSubType === "零售") {
                        $.ajax({
                            type: "post",
                            url: path + "/supplier/updateAdvanceIn.action",
                            dataType: "json",
                            data: {
                                SupplierID: row[i].OrganId, //会员id
                                AdvanceIn: row[i].TotalPrice  //删除时同时返还用户的预付款
                            },
                            success: function (res) {
                                if (res) {
                                    //保存会员预收款成功
                                }
                            },
                            error: function () {
                                $.messager.alert('提示', '保存信息异常，请稍后再试！', 'error');
                                return;
                            }
                        });
                    }
                }
                //批量删除
                $.ajax({
                    type: "post",
                    url: path + "/depotHead/batchDelete.action",
                    dataType: "json",
                    async: false,
                    data: ({
                        depotHeadIDs: ids,
                        clientIp: clientIp
                    }),
                    success: function (tipInfo) {
                        var msg = tipInfo.showModel.msgTip;
                        if (msg == '成功') {
                            //加载完以后重新初始化
                            $("#searchBtn").click();
                            $(":checkbox").attr("checked", false);
                        }
                        else
                            $.messager.alert('删除提示', '删除单据信息失败，请稍后再试！', 'error');
                    },
                    //此处添加错误处理
                    error: function () {
                        $.messager.alert('删除提示', '删除单据信息异常，请稍后再试！', 'error');
                        return;
                    }
                });
            }
        });
    }
}
//新增信息
function addDepotHead() {
    $("#clientIp").val(clientIp);
    $('#depotHeadFM').form('clear');
    var thisDate = getNowFormatDate(); //当前日期
    $("#OperTime").val(thisDate);
    var thisNumber = getNowFormatDateNum(); //根据时间生成编号
    $("#Number").val(amountNum + thisNumber).focus();
    var addTitle = listTitle.replace("列表", "信息");
    $('#depotHeadDlg').dialog('open').dialog('setTitle', '<img src="' + path + '/js/easyui-1.3.5/themes/icons/edit_add.png"/>&nbsp;增加' + addTitle);
    $(".window-mask").css({width: webW, height: webH});

    orgDepotHead = "";
    depotHeadID = 0;
    initTableData_material("add"); //商品列表
    reject(); //撤销下、刷新商品列表
    url = path + '/depotHead/create.action';

    //零售单据修改收款时，自动计算找零
    if (listSubType == "零售" || listSubType == "零售退货") {
        $("#payType").val("现付");
        $("#OrganId").combobox("setValue", orgDefaultId); //自动默认选择非会员
        //当会员卡号长度超过10位后，自动点击下拉框，用于兼容刷卡器
        $("#OrganId").next().find("input").off("keyup").on("keyup", function () {
            var self = this;
            if ($(this).val().length === 10) {
                setTimeout(function () {
                    $(".combo-panel .combobox-item-selected").click();
                    //更新付款类型，加载会员的预付款的金额
                    for (var i = 0; i < orgDefaultList.length; i++) {
                        var rec = orgDefaultList[i];
                        if (rec.supplier == $(self).val()) {
                            var option = "";
                            if (rec.supplier !== "非会员" && rec.advanceIn > 0) {
                                option = '<option value="预付款">预付款(' + rec.advanceIn + ')</option>';
                                option += '<option value="现付">现付</option>';
                            }
                            else {
                                option += '<option value="现付">现付</option>';
                            }
                            $("#payType").empty().append(option);
                        }
                    }
                }, 500);
            }
        });
        var getAmount = $("#depotHeadFM .get-amount");
        var changeAmount = $("#depotHeadFM .change-amount");
        var backAmount = $("#depotHeadFM .back-amount");
        getAmount.val(0);
        changeAmount.val(0);
        backAmount.val(0); //时间初始化
        getAmount.off("keyup").on("keyup", function () {
            if (changeAmount.val()) {
                backAmount.val((getAmount.val() - changeAmount.val()).toFixed(2));
            }
        });
    }
}

//编辑信息
function editDepotHead(depotHeadTotalInfo) {
    var depotHeadInfo = depotHeadTotalInfo.split("AaBb");
    $("#clientIp").val(clientIp);
    $("#ProjectId").focus().val(depotHeadInfo[1]);
    var ProjectId = depotHeadInfo[1];
    if (ProjectId != '') {
        initSystemData_person(ProjectId);
        initSelectInfo_person();
    }
    $("#Number").val(depotHeadInfo[2]);
    $("#OperTime").val(depotHeadInfo[4]);
    $('#OrganId').combobox('setValue', depotHeadInfo[5]);
    $("#HandsPersonId").val(depotHeadInfo[6]);
    $("#AccountId").val(depotHeadInfo[7]);
    $("#ChangeAmount").val(depotHeadInfo[8]);
    $("#ChangeAmount").attr("data-changeamount", depotHeadInfo[8]);
    $("#Remark").val(depotHeadInfo[9]);
    var TotalPrice = depotHeadInfo[14];
    preTotalPrice = depotHeadInfo[14]; //记录前一次合计金额，用于扣预付款
    $("#AllocationProjectId").val(depotHeadInfo[15]);
    //orgDepotHead = depotHeadInfo[1];
    var editTitle = listTitle.replace("列表", "信息");
    $('#depotHeadDlg').dialog('open').dialog('setTitle', '<img src="' + path + '/js/easyui-1.3.5/themes/icons/pencil.png"/>&nbsp;编辑' + editTitle);
    $(".window-mask").css({width: webW, height: webH});
    depotHeadID = depotHeadInfo[0];

    if (listSubType === "零售") {
        var option = "";
        if (depotHeadInfo[17] === "预付款") {
            option = '<option value="预付款">预付款</option>';
            option += '<option value="现付">现付</option>';
        }
        else {
            option += '<option value="现付">现付</option>';
        }
        $("#payType").empty().append(option);
    }

    initTableData_material("edit", TotalPrice); //商品列表
    reject(); //撤销下、刷新商品列表
    url = path + '/depotHead/update.action?depotHeadID=' + depotHeadInfo[0];
}

//查看信息
function showDepotHead(depotHeadTotalInfo) {
    var depotHeadInfo = depotHeadTotalInfo.split("AaBb");
    $("#ProjectIdShow").text(depotHeadInfo[10]);
    $("#NumberShow").text(depotHeadInfo[2]);
    $("#OperTimeShow").text(depotHeadInfo[4]);
    $('#OrganIdShow').text(depotHeadInfo[11]);
    $("#HandsPersonIdShow").text(depotHeadInfo[12]);
    $("#AccountIdShow").text(depotHeadInfo[13]);
    $("#ChangeAmountShow").text(depotHeadInfo[8]);
    $("#RemarkShow").text(depotHeadInfo[9]);
    $("#payTypeShow").text(depotHeadInfo[17]);
    var TotalPrice = depotHeadInfo[14];
    $("#AllocationProjectIdShow").text(depotHeadInfo[16]);
    var showTitle = listTitle.replace("列表", "信息");
    $('#depotHeadDlgShow').dialog('open').dialog('setTitle', '<img src="' + path + '/js/easyui-1.3.5/themes/icons/list.png"/>&nbsp;查看' + showTitle);
    $(".window-mask").css({width: webW, height: webH});

    depotHeadID = depotHeadInfo[0];
    initTableData_material_show(TotalPrice); //商品列表-查看状态

    //零售单据修改收款时，自动计算找零
    if (listSubType == "零售") {
        $("#depotHeadDlgShow .get-amount-show").text($("#depotHeadDlgShow .change-amount-show").text());
        $("#depotHeadDlgShow .back-amount-show").text(0);
    }
}

//绑定操作事件
function bindEvent() {
    showDepotHeadDetails(1, initPageSize); //初始化时自动查询
    //搜索处理
    $("#searchBtn").off("click").on("click", function () {
        showDepotHeadDetails(1, initPageSize);
        var opts = $("#tableData").datagrid('options');
        var pager = $("#tableData").datagrid('getPager');
        opts.pageNumber = 1;
        opts.pageSize = initPageSize;
        pager.pagination('refresh',
            {
                pageNumber: 1,
                pageSize: initPageSize
            });
    });

    //重置按钮
    $("#searchResetBtn").unbind().bind({
        click: function () {
            //$("#searchProjectId").val("");
            $("#searchState").val("");
            $("#searchBeginTime").val("");
            $("#searchEndTime").val("");
            $("#searchOrganId").val("");
            $("#searchMaterialName").val("");
            //加载完以后重新初始化
            $("#searchBtn").click();
        }
    });

    //保存信息
    $("#saveDepotHead").unbind().bind({
        click: function () {
            if (!$('#depotHeadFM').form('validate'))
                return;
            else {
                //输入框提示
                if (listTitle === "采购入库列表") {
                    if (!$("#ProjectId").val()) {
                        $.messager.alert('提示', '请选择收货仓库！', 'warning');
                        return;
                    }
                    if (!$('#OrganId').combobox('getValue')) {
                        $.messager.alert('提示', '请选择供货单位！', 'warning');
                        return;
                    }
                    if (!$('#HandsPersonId').val()) {
                        $.messager.alert('提示', '请选择经手人！', 'warning');
                        return;
                    }
                    if (!$('#AccountId').val()) {
                        $.messager.alert('提示', '请选择付款账户！', 'warning');
                        return;
                    }
                }
                else if (listTitle === "零售退货列表") {
                    if (!$("#ProjectId").val()) {
                        $.messager.alert('提示', '请选择收货仓库！', 'warning');
                        return;
                    }
                    if (!$('#AccountId').val()) {
                        $.messager.alert('提示', '请选择付款账户！', 'warning');
                        return;
                    }
                    if (!$('#HandsPersonId').val()) {
                        $.messager.alert('提示', '请选择经手人！', 'warning');
                        return;
                    }
                }
                else if (listTitle === "销售退货列表") {
                    if (!$("#ProjectId").val()) {
                        $.messager.alert('提示', '请选择收货仓库！', 'warning');
                        return;
                    }
                    if (!$('#OrganId').combobox('getValue')) {
                        $.messager.alert('提示', '请选择退货单位！', 'warning');
                        return;
                    }
                    if (!$('#HandsPersonId').val()) {
                        $.messager.alert('提示', '请选择经手人！', 'warning');
                        return;
                    }
                    if (!$('#AccountId').val()) {
                        $.messager.alert('提示', '请选择付款账户！', 'warning');
                        return;
                    }
                }
                else if (listTitle === "其它入库列表") {
                    if (!$("#ProjectId").val()) {
                        $.messager.alert('提示', '请选择收货仓库！', 'warning');
                        return;
                    }
                    if (!$('#OrganId').combobox('getValue')) {
                        $.messager.alert('提示', '请选择往来单位！', 'warning');
                        return;
                    }
                    if (!$('#HandsPersonId').val()) {
                        $.messager.alert('提示', '请选择经手人！', 'warning');
                        return;
                    }
                }
                else if (listTitle === "零售出库列表") {
                    if (!$("#ProjectId").val()) {
                        $.messager.alert('提示', '请选择发货仓库！', 'warning');
                        return;
                    }
                    if (!$('#AccountId').val()) {
                        $.messager.alert('提示', '请选择收款账户！', 'warning');
                        return;
                    }
                    if (!$('#HandsPersonId').val()) {
                        $.messager.alert('提示', '请选择经手人！', 'warning');
                        return;
                    }
                }
                else if (listTitle === "销售出库列表") {
                    if (!$("#ProjectId").val()) {
                        $.messager.alert('提示', '请选择发货仓库！', 'warning');
                        return;
                    }
                    if (!$('#OrganId').combobox('getValue')) {
                        $.messager.alert('提示', '请选择购买单位！', 'warning');
                        return;
                    }
                    if (!$('#AccountId').val()) {
                        $.messager.alert('提示', '请选择收款账户！', 'warning');
                        return;
                    }
                }
                else if (listTitle === "采购退货列表") {
                    if (!$("#ProjectId").val()) {
                        $.messager.alert('提示', '请选择发货仓库！', 'warning');
                        return;
                    }
                    if (!$('#OrganId').combobox('getValue')) {
                        $.messager.alert('提示', '请选择收货单位！', 'warning');
                        return;
                    }
                    if (!$('#HandsPersonId').val()) {
                        $.messager.alert('提示', '请选择经手人！', 'warning');
                        return;
                    }
                    if (!$('#AccountId').val()) {
                        $.messager.alert('提示', '请选择收款账户！', 'warning');
                        return;
                    }
                }
                else if (listTitle === "其它出库列表") {
                    if (!$("#ProjectId").val()) {
                        $.messager.alert('提示', '请选择发货仓库！', 'warning');
                        return;
                    }
                    if (!$('#OrganId').combobox('getValue')) {
                        $.messager.alert('提示', '请选择往来单位！', 'warning');
                        return;
                    }
                    if (!$('#HandsPersonId').val()) {
                        $.messager.alert('提示', '请选择经手人！', 'warning');
                        return;
                    }
                }
                else if (listTitle === "调拨出库列表") {
                    if (!$("#ProjectId").val()) {
                        $.messager.alert('提示', '请选择发货仓库！', 'warning');
                        return;
                    }
                    if (!$('#HandsPersonId').val()) {
                        $.messager.alert('提示', '请选择经手人！', 'warning');
                        return;
                    }
                    if (!$("#AllocationProjectId").val()) {
                        $.messager.alert('提示', '请选择收货仓库！', 'warning');
                        return;
                    }
                }
                var OrganId = null, AllocationProjectId = null;
                var ChangeAmount = $.trim($("#ChangeAmount").val());
                var TotalPrice = $("#depotHeadFM .datagrid-footer [field='AllPrice'] div").text();
                if (listSubType !== "调拨") {
                    OrganId = $('#OrganId').combobox('getValue');
                }
                else {
                    AllocationProjectId = $.trim($("#AllocationProjectId").val()); //收货仓库-对方
                }
                if (listSubType === "采购" || listSubType === "零售退货" || listSubType === "销售退货") {
                    //付款为负数
                    ChangeAmount = 0 - ChangeAmount;
                    TotalPrice = 0 - TotalPrice;
                }
                //零售时候，可以从会员预付款中扣款
                var thisPayType = "现付";
                if (listSubType === "零售") {
                    if ($("#payType").val() === "预付款") {
                        thisPayType = "预付款";
                    }
                }
                $.ajax({
                    type: "post",
                    url: url,
                    dataType: "json",
                    async: false,
                    data: ({
                        Type: listType,
                        SubType: listSubType,
                        ProjectId: $.trim($("#ProjectId").val()),
                        AllocationProjectId: AllocationProjectId,
                        Number: $.trim($("#Number").val()),
                        OperTime: $("#OperTime").val(),
                        OrganId: OrganId,
                        HandsPersonId: $.trim($("#HandsPersonId").val()),
                        AccountId: $.trim($("#AccountId").val()),
                        ChangeAmount: ChangeAmount, //付款/收款
                        TotalPrice: TotalPrice, //合计
                        PayType: thisPayType, //现付/预付款
                        Remark: $.trim($("#Remark").val()),
                        clientIp: clientIp
                    }),
                    success: function (tipInfo) {
                        if (tipInfo) {
                            function closeDialog() {
                                $('#depotHeadDlg').dialog('close');
                                var opts = $("#tableData").datagrid('options');
                                showDepotHeadDetails(opts.pageNumber, opts.pageSize);
                            }

                            if (thisPayType === "预付款") {
                                //更新用户信息-预付款
                                var advanceIn = 0; //预付款金额
                                if (depotHeadID) {
                                    advanceIn = TotalPrice - preTotalPrice;  //修改时，预付款=合计金额-加载金额
                                }
                                else {
                                    advanceIn = TotalPrice; //新增时，预付款=合计金额
                                }
                                $.ajax({
                                    type: "post",
                                    url: path + "/supplier/updateAdvanceIn.action",
                                    dataType: "json",
                                    data: {
                                        SupplierID: OrganId, //会员id
                                        AdvanceIn: 0 - advanceIn  //保存的同时扣掉用户的预付款
                                    },
                                    success: function (res) {
                                        if (res) {
                                            //保存会员预收款成功
                                        }
                                    },
                                    error: function () {
                                        $.messager.alert('提示', '保存信息异常，请稍后再试！', 'error');
                                        return;
                                    }
                                });
                            }

                            //保存明细记录
                            if (depotHeadID == 0) {
                                getMaxId(); //查找最大的Id
                                accept(depotHeadMaxId); //新增
                                closeDialog();
                            }
                            else {
                                accept(depotHeadID); //修改
                                closeDialog();
                            }
                        }
                        else {
                            $.messager.show({
                                title: '错误提示',
                                msg: '保存信息失败，请稍后重试!'
                            });
                        }
                    },
                    //此处添加错误处理
                    error: function () {
                        $.messager.alert('提示', '保存信息异常，请稍后再试！', 'error');
                        return;
                    }
                });
            }
        }
    });

    //初始化键盘enter事件
    $(document).keydown(function (event) {
        //兼容 IE和firefox 事件
        var e = window.event || event;
        var k = e.keyCode || e.which || e.charCode;
        //兼容 IE,firefox 兼容
        var obj = e.srcElement ? e.srcElement : e.target;
        //绑定键盘事件为 id是指定的输入框才可以触发键盘事件 13键盘事件 ---遗留问题 enter键效验 对话框会关闭问题
        if (k == "13" && (obj.id == "State" || obj.id == "Number")) {
            $("#saveDepotHead").click();
        }
        //搜索按钮添加快捷键
        if (k == "13" && (obj.id == "searchState" || obj.id == "searchNumber")) {
            $("#searchBtn").click();
        }
    });
}


function showDepotHeadDetails(pageNo, pageSize) {
    $.ajax({
        type: "post",
        url: path + "/depotHead/findBy.action",
        dataType: "json",
        data: ({
            ProjectId: $.trim($("#searchProjectId").val()),
            DepotIds: depotString,
            Type: listType,
            SubType: listSubType,
            State: $.trim($("#searchState").val()),
            // Number: $.trim($("#searchNumber").val()),
            OrganId: $.trim($("#searchOrganId").val()),
            MaterialName: $.trim($("#searchMaterialName").val()),
            BeginTime: $("#searchBeginTime").val(),
            EndTime: $("#searchEndTime").val(),
            pageNo: pageNo,
            pageSize: pageSize
        }),
        success: function (data) {
            $("#tableData").datagrid('loadData', data);
        },
        //此处添加错误处理
        error: function () {
            $.messager.alert('查询提示', '查询数据后台异常，请稍后再试！', 'error');
            return;
        }
    });
}

//自动计算事件
function autoReckon() {
    //延时绑定事件
    setTimeout(function () {
        var body = $("#depotHeadFM .datagrid-body");
        var footer = $("#depotHeadFM .datagrid-footer");
        var input = ".datagrid-editable-input";
        //点击商品下拉框，自动加载数量、单价、金额

        //修改单价，自动计算金额和合计
        body.find("[field='UnitPrice']").find(input).off("keyup").on("keyup", function () {
            var UnitPrice = $(this).val() - 0; //单价
            var TotalPrice = 0;
            var OperNumber = body.find("[field='OperNumber']").find(input).val(); //数量
            body.find("[field='AllPrice']").find(input).val((UnitPrice * OperNumber).toFixed(2));
            body.find("[field='AllPrice']").each(function () {
                if ($(this).find("div").text() !== "") {
                    TotalPrice = TotalPrice + parseFloat($(this).find("div").text().toString());
                }
            });
            TotalPrice = TotalPrice + UnitPrice * OperNumber;
            footer.find("[field='AllPrice']").find("div").text((TotalPrice).toFixed(2));
            if (listSubType == "零售" || listSubType == "零售退货") {
                $("#ChangeAmount, #getAmount").val((TotalPrice).toFixed(2));
                $("#backAmount").val(0);
            }
        });
        //点击单价，自动提示参考价格列表
        body.find("[field='UnitPrice']").find(input).off("click").on("click", function () {
            var self = this;
            var mValue = body.find("[field='MaterialId'] .combo-value").attr("value"); //获取选中的商品id
            if (!mValue) {
                return;
            }
            else {
                if (listTitle != "销售出库列表" && listTitle != "采购退货列表" && listTitle != "其它出库列表" && listTitle != "调拨出库列表") {
                    return;
                }
                $.ajax({
                    url: path + "/material/findById.action",
                    type: "get",
                    dataType: "json",
                    data: {
                        "MaterialID": mValue - 0
                    },
                    success: function (res) {
                        if (res && res.rows && res.rows[0]) {
                            var retailPrice = res.rows[0].RetailPrice;
                            var presetPriceOne = res.rows[0].PresetPriceOne;
                            var presetPriceTwo = res.rows[0].PresetPriceTwo;
                            //定义模版
                            var temp = "<div class='price-list'>";
                            temp += "<ul>";
                            temp += "<li>预设售价1：" + presetPriceOne + "</li>";
                            temp += "<li>预设售价2：" + presetPriceTwo + "</li>";
                            temp += "<li>零售价：" + retailPrice + "</li>";
                            temp += "</ul>";
                            temp += "</div>";
                            if ($('.price-list').length) {
                                $('.price-list').remove(); //如果存在价格列表先移除
                            }
                            else {
                                $(self).after(temp); //加载列表信息
                            }
                            $('.price-list ul li').off("click").on("click", function () {
                                var price = $(this).text();
                                price = price.substring(price.indexOf("：") + 1);
                                $(self).val(price);
                                $(self).keyup(); //模拟键盘操作
                                $('.price-list').remove(); //移除价格列表
                            });
                            //点击空白处移除价格列表
                            $(".datagrid-body").off("click").on("click", function () {
                                $('.price-list').remove(); //移除价格列表
                            });
                        }
                    },
                    error: function () {
                        $.messager.alert('错误提示', '查询商品信息异常，请稍后再试！', 'error');
                        return;
                    }
                });
            }
        });
        //修改数量，自动计算金额和合计
        body.find("[field='OperNumber']").find(input).off("keyup").on("keyup", function () {
            var UnitPrice = body.find("[field='UnitPrice']").find(input).val(); //单价
            var TotalPrice = 0;
            var OperNumber = $(this).val() - 0; //数量
            body.find("[field='AllPrice']").find(input).val((UnitPrice * OperNumber).toFixed(2));
            body.find("[field='AllPrice']").each(function () {
                if ($(this).find("div").text() !== "") {
                    TotalPrice = TotalPrice + parseFloat($(this).find("div").text().toString());
                }
            });
            TotalPrice = TotalPrice + UnitPrice * OperNumber;
            footer.find("[field='AllPrice']").find("div").text((TotalPrice).toFixed(2));
            if (listSubType == "零售" || listSubType == "零售退货") {
                $("#ChangeAmount, #getAmount").val((TotalPrice).toFixed(2));
                $("#backAmount").val(0);
            }
        });
        //修改金额，自动计算单价和合计
        body.find("[field='AllPrice']").find(input).off("keyup").on("keyup", function () {
            var OperNumber = body.find("[field='OperNumber']").find(input).val(); //数量
            var TotalPrice = 0;
            var AllPrice = $(this).val() - 0; //金额
            body.find("[field='UnitPrice']").find(input).val((AllPrice / OperNumber).toFixed(2));
            body.find("[field='AllPrice']").each(function () {
                if ($(this).find("div").text() !== "") {
                    TotalPrice = TotalPrice + parseFloat($(this).find("div").text().toString());
                }
            });
            TotalPrice = TotalPrice + AllPrice;
            footer.find("[field='AllPrice']").find("div").text((TotalPrice).toFixed(2));
            if (listSubType == "零售" || listSubType == "零售退货") {
                $("#ChangeAmount, #getAmount").val((TotalPrice).toFixed(2));
                $("#backAmount").val(0);
            }
        });
    }, 500);
}

//结束编辑
function endEditing() {
    if (editIndex == undefined) {
        return true
    }
    if ($('#materialData').datagrid('validateRow', editIndex)) {
        var ed = $('#materialData').datagrid('getEditor', {index: editIndex, field: 'MaterialId'});
        var MaterialName = $(ed.target).combobox('getText');
        $('#materialData').datagrid('getRows')[editIndex]['MaterialName'] = MaterialName;
        $('#materialData').datagrid('endEdit', editIndex);
        editIndex = undefined;
        return true;
    } else {
        return false;
    }
}
//单击
function onClickRow(index) {
    if (editIndex != index) {
        if (endEditing()) {
            $('#materialData').datagrid('selectRow', index).datagrid('beginEdit', index);
            editIndex = index;
            autoReckon();
        } else {
            $('#materialData').datagrid('selectRow', editIndex);
        }
    }
}
//新增
function append() {
    if (endEditing()) {
        $('#materialData').datagrid('appendRow', {});
        editIndex = $('#materialData').datagrid('getRows').length - 1;
        $('#materialData').datagrid('selectRow', editIndex).datagrid('beginEdit', editIndex);
        autoReckon();
    }
}
//删除
function removeit() {
    if (editIndex == undefined) {
        return
    }
    $('#materialData').datagrid('cancelEdit', editIndex)
        .datagrid('deleteRow', editIndex);
    editIndex = undefined;
}
//撤销
function reject() {
    $('#materialData').datagrid('rejectChanges');
    editIndex = undefined;
}
//判断
function CheckData() {
    var row = $('#materialData').datagrid('getRows');
    var totalRowNum = "";
    for (var i = 0; i < row.length; i++) {
        if (row[i].MaterialId == "") {
            totalRowNum += (i + 1) + "、";
        }
    }
    if (totalRowNum != "") {
        var totalRowNum = totalRowNum.substring(0, totalRowNum.length - 1);
        $.messager.alert('提示', "第" + totalRowNum + "行数据填写不完整！", 'info');
        return false;
    }
    return true;
}
//保存
function accept(accepId) {
    append();
    removeit();
    if ($("#materialData").datagrid('getChanges').length) {
        if (!CheckData())
            return false;
        var inserted = $("#materialData").datagrid('getChanges', "inserted");
        var deleted = $("#materialData").datagrid('getChanges', "deleted");
        var updated = $("#materialData").datagrid('getChanges', "updated");
        $.ajax({
            type: "post",
            url: path + "/depotItem/saveDetials.action",
            data: {
                Inserted: JSON.stringify(inserted),
                Deleted: JSON.stringify(deleted),
                Updated: JSON.stringify(updated),
                HeaderId: accepId,
                clientIp: clientIp
            },
            success: function (tipInfo) {
                if (tipInfo) {
                    $.messager.alert('提示', '保存成功！', 'info');
                }
                else
                    $.messager.alert('提示', '保存失败！', 'error');

            },
            error: function (XmlHttpRequest, textStatus, errorThrown) {
                $.messager.alert('提示', XmlHttpRequest.responseText, 'error');
            }
        });
    }
    if (endEditing()) {
        $('#materialData').datagrid('acceptChanges');
    }
}
//获取MaxId
function getMaxId() {
    var depotHeadMax = null;
    $.ajax({
        type: "post",
        url: path + "/depotHead/getMaxId.action",
        //设置为同步
        async: false,
        dataType: "json",
        success: function (systemInfo) {
            if (systemInfo) {
                depotHeadMax = systemInfo.showModel.map.depotHeadMax;
                var msgTip = systemInfo.showModel.msgTip;
                if (msgTip == "exceptoin") {
                    $.messager.alert('提示', '查找最大的Id异常,请与管理员联系！', 'error');
                    return;
                }
            }
            else {
                depotHeadMax = null;
            }
        }
    });

    if (depotHeadMax != null) {
        if (depotHeadMax.length > 0) {
            depotHeadMaxId = depotHeadMax[0];
        }
    }
}
