コード例 #1
0
        public string GiveinDetail(DataTable dt, string stno, string giveinResult)
        {
            InventoryFacade _InventoryFacade = new InventoryFacade(this.DataProvider);


            WarehouseFacade _WarehouseFacade = new WarehouseFacade(this.DataProvider);

            if (string.IsNullOrEmpty(giveinResult))
            {
                return("让步接收时必须填写原因");
            }


            if (dt.Rows.Count == 0)
            {
                return(stno + "无数据");
            }


            bool      isGivein  = false;
            ASNDetail asnDetail = null;

            try
            {
                ASN asn = (ASN)_InventoryFacade.GetASN(stno.Trim().ToUpper());


                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (!string.IsNullOrEmpty(dt.Rows[i][0].ToString()) && dt.Rows[i][0].ToString() != "√")
                    {
                        continue;
                    }

                    string stLine = dt.Rows[i][2].ToString();

                    ASNDetail asnDetail1 = (ASNDetail)_InventoryFacade.GetASNDetail(int.Parse(stLine), stno);


                    if (string.IsNullOrEmpty(asnDetail1.CartonNo))
                    {
                        return("让步接收必须填写箱号!");
                    }

                    if (!_WarehouseFacade.CheckAlterIncludeEQ(asn.InvNo, asnDetail1.DQMCode))
                    {
                        return(asn.InvNo + ":" + ":" + asnDetail.DQMCode + "数量已超出SAP计划数量!");
                    }
                }
                this.DataProvider.BeginTransaction();
                //算出剩余要接收的数量(入库指令行记录数减去拒收数量)

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (!string.IsNullOrEmpty(dt.Rows[i][0].ToString()) && dt.Rows[i][0].ToString() != "√")
                    {
                        continue;
                    }

                    string stLine = dt.Rows[i][2].ToString();
                    asnDetail = (ASNDetail)_InventoryFacade.GetASNDetail(int.Parse(stLine), stno);

                    asn = (ASN)_InventoryFacade.GetASN(stno);

                    if (asnDetail.Status != ASNDetail_STATUS.ASNDetail_ReceiveClose)
                    {
                        asnDetail.InitReceiveStatus = SAP_LineStatus.SAP_LINE_GIVEIN;
                        asnDetail.ReceiveQty        = asnDetail.Qty;
                        asnDetail.Status            = ASNDetail_STATUS.ASNDetail_ReceiveClose;
                        asnDetail.InitGIVEINDESC    = giveinResult;


                        _InventoryFacade.UpdateASNDetail(asnDetail);

                        //接收数量(TBLASNDETAILITEM.ReceiveQTY)更新为:等于需求数量(TBLASNDETAILITEM.QTY)
                        _InventoryFacade.UpdateASNItem(stno, stLine);

                        asn.InitGiveInQty += 1;
                        _InventoryFacade.UpdateASN(asn);
                        isGivein = true;
                    }
                }
                this.DataProvider.CommitTransaction();
                if (isGivein)
                {
                    return("让步接收成功!");
                }
                return("让步接收失败没有条目需要让步接收!");
            }
            catch (Exception ex)
            {
                this.DataProvider.RollbackTransaction();
                ;
                throw ex;
            }
        }