销售退货修改数量库位存储地点、采购退货修改数量库位存储地点
标签搜索
侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 0 条评论
U9

销售退货修改数量库位存储地点、采购退货修改数量库位存储地点

心底有颗枇杷树
2025-04-27 / 0 评论 / 3 阅读 / 正在检测是否收录...

使用session修改
销售退货修改数量

private WMSResultDataDTOData ProcessReceivement(string docNo, RTNHeadData rtnHeadData) {
    var resultData = new WMSResultDataDTOData();
    Receivement receivement =
        Receivement.Finder.Find(string.Format("DocNo = '{0}' and Org = {1}", docNo, Context.LoginOrg.ID));
    if (receivement == null)
        throw new Exception("找不到销售退回收货单据,DocNo=" + docNo);
    foreach (RTNLineData rtnLineData in rtnHeadData.SoRcvLineList) {
        int docLineNo = int.Parse(rtnLineData.DocLineNo);
        decimal newQty = decimal.Parse(rtnLineData.Qty);
        using (Session session = Session.Open()) {
            for (var i = 0; i < receivement.RcvLines.Count; i++) {
                if (receivement.RcvLines[i].DocLineNo == docLineNo) {
                    _logger.LogInfo(string.Format("[退货处理] - 更新到货数量:DocNo={0}, LineNo={1}, 原数量={2}, 新数量={3}",
                        docNo, docLineNo, receivement.RcvLines[i].ArriveQtyTU, newQty));
                    //数量为0则删除该行
                    if (newQty == decimal.Zero) {
                        receivement.RcvLines.RemoveAt(i);
                        continue;
                    }

                    #region 我自己的

                    receivement.RcvLines[i].ArriveQtyTU = receivement.RcvLines[i].EyeballingQtyTU =
                        receivement.RcvLines[i].RcvQtyTU = Math.Round(Convert.ToDecimal(newQty), 4);
                    receivement.RcvLines[i].ArriveQtyPU = receivement.RcvLines[i].EyeballingQtyPU =
                        receivement.RcvLines[i].RcvQtyPU = Math.Round(Convert.ToDecimal(newQty), 4);
                    receivement.RcvLines[i].ArriveQtySU = receivement.RcvLines[i].EyeballingQtySU =
                        receivement.RcvLines[i].RcvQtySU = Math.Round(Convert.ToDecimal(newQty), 4);
                    receivement.RcvLines[i].ArriveQtyCU = receivement.RcvLines[i].EyeballingQtyCU =
                        receivement.RcvLines[i].RcvQtyCU = Math.Round(Convert.ToDecimal(newQty), 4);
                    receivement.RcvLines[i].ArriveQtyTBU = receivement.RcvLines[i].EyeballingQtyTBU =
                        receivement.RcvLines[i].RcvQtyTBU = 0;


                    //拒收数量
                    receivement.RcvLines[i].RejectQtyTU = Decimal.Zero;
                    receivement.RcvLines[i].RejectQtyTBU = Decimal.Zero;
                    receivement.RcvLines[i].RejectQtySU = Decimal.Zero;
                    receivement.RcvLines[i].RejectQtyPU = Decimal.Zero;
                    receivement.RcvLines[i].RejectQtyCU = Decimal.Zero;
                    //可立账数量
                    receivement.RcvLines[i].CanAPConfirmQtyTU = Math.Round(Convert.ToDecimal(newQty), 4);
                    receivement.RcvLines[i].CanAPConfirmQtyPU = Math.Round(Convert.ToDecimal(newQty), 4);
                    receivement.RcvLines[i].CanAPConfirmQtyCU = Math.Round(Convert.ToDecimal(newQty), 4);
                    receivement.RcvLines[i].CanAPConfirmQtySU = Math.Round(Convert.ToDecimal(newQty), 4);
                    receivement.RcvLines[i].CanAPConfirmQtyTBU = 0;
                    //退补数量
                    receivement.RcvLines[i].RtnFillQtySU = Decimal.Zero;
                    receivement.RcvLines[i].RtnFillQtyTBU = Decimal.Zero;
                    receivement.RcvLines[i].RtnFillQtyTU = Decimal.Zero;
                    receivement.RcvLines[i].RtnFillQtyPU = Decimal.Zero;
                    receivement.RcvLines[i].RtnFillQtyCU = Decimal.Zero;
                    //拒收价税合计
                    receivement.RcvLines[i].RejectMnyAC = Decimal.Zero;
                    receivement.RcvLines[i].RejectMnyFC = Decimal.Zero;
                    receivement.RcvLines[i].RejectMnyTC = Decimal.Zero;
                    //拒收未税金额
                    receivement.RcvLines[i].RejectNetMnyAC = Decimal.Zero;
                    receivement.RcvLines[i].RejectNetMnyTC = Decimal.Zero;
                    receivement.RcvLines[i].RejectNetMnyFC = Decimal.Zero;
                    //拒收税额
                    receivement.RcvLines[i].RejectTaxMnyAC = Decimal.Zero;
                    receivement.RcvLines[i].RejectTaxMnyTC = Decimal.Zero;
                    receivement.RcvLines[i].RejectTaxMnyFC = Decimal.Zero;

                    if (receivement.RcvLines[i].IsPriceIncludeTax == true) {
                        //未税金额 = 含税单价 × 数量 ÷(1 + 税率)
                        receivement.RcvLines[i].ArriveTotalNetMnyTC = Math.Round(
                            receivement.RcvLines[i].FinallyPriceTC * Convert.ToDecimal(newQty) /
                            (1 + receivement.RcvLines[i].TaxRate), 2);
                        //Math.Round(Convert.ToDecimal(arrqty) * receivement.RcvLines[i].FinallyPriceTC / (decimal.Parse(receivement.RcvLines[i].TaxRate.ToString())), 2);//实到未税额 
                        receivement.RcvLines[i].ArriveTotalNetMnyAC =
                            receivement.RcvLines[i].ArriveTotalNetMnyTC; //实到未税额 
                        receivement.RcvLines[i].ArriveTotalNetMnyFC =
                            receivement.RcvLines[i].ArriveTotalNetMnyTC; //实到未税额 
                        //
                        receivement.RcvLines[i].ArriveTotalTaxFC = Math.Round(
                            receivement.RcvLines[i].ArriveTotalNetMnyTC * receivement.RcvLines[i].TaxRate, 2);
                        //Math.Round(Convert.ToDecimal(arrqty) * receivement.RcvLines[i].FinallyPriceTC / (decimal.Parse(receivement.RcvLines[i].TaxRate.ToString())) * (decimal.Parse(receivement.RcvLines[i].TaxRate.ToString())), 2);//实到税额 
                        receivement.RcvLines[i].ArriveTotalTaxTC =
                            receivement.RcvLines[i].ArriveTotalTaxFC; //实到税额 
                        receivement.RcvLines[i].ArriveTotalTaxAC =
                            receivement.RcvLines[i].ArriveTotalTaxFC; //实到税额 

                        receivement.RcvLines[i].ArriveTotalMnyTC = receivement.RcvLines[i].ArriveTotalNetMnyTC +
                                                                   receivement.RcvLines[i]
                                                                       .ArriveTotalTaxFC; //实到价税合计 
                        receivement.RcvLines[i].ArriveTotalMnyAC =
                            receivement.RcvLines[i].ArriveTotalMnyTC; //实到价税合计 
                        receivement.RcvLines[i].ArriveTotalMnyFC =
                            receivement.RcvLines[i].ArriveTotalMnyTC; //实到价税合计 


                        //实收未税额
                        receivement.RcvLines[i].TotalNetMnyTC = Math.Round(
                            receivement.RcvLines[i].FinallyPriceTC * Convert.ToDecimal(newQty) /
                            (1 + receivement.RcvLines[i].TaxRate), 2);
                        receivement.RcvLines[i].TotalNetMnyAC = receivement.RcvLines[i].TotalNetMnyTC;
                        receivement.RcvLines[i].TotalNetMnyFC = receivement.RcvLines[i].TotalNetMnyTC;

                        //实收税额
                        receivement.RcvLines[i].TotalTaxFC = Math.Round(
                            (receivement.RcvLines[i].TotalNetMnyTC * receivement.RcvLines[i].TaxRate), 2);
                        receivement.RcvLines[i].TotalTaxAC = receivement.RcvLines[i].TotalTaxFC;
                        receivement.RcvLines[i].TotalTaxTC = receivement.RcvLines[i].TotalTaxFC;
                        //实收价税合计
                        receivement.RcvLines[i].TotalMnyTC = receivement.RcvLines[i].ArriveTotalNetMnyTC +
                                                             receivement.RcvLines[i].ArriveTotalTaxFC; //实到价税合计 
                        receivement.RcvLines[i].TotalMnyAC = receivement.RcvLines[i].TotalMnyTC;
                        receivement.RcvLines[i].TotalMnyFC = receivement.RcvLines[i].TotalMnyTC;
                    }
                    else {
                        //未税金额 = 含税单价 × 数量 ÷(1 + 税率)
                        receivement.RcvLines[i].ArriveTotalNetMnyTC =
                            Math.Round(receivement.RcvLines[i].FinallyPriceTC * Convert.ToDecimal(newQty), 2);
                        //Math.Round(Convert.ToDecimal(arrqty) * receivement.RcvLines[i].FinallyPriceTC / (decimal.Parse(receivement.RcvLines[i].TaxRate.ToString())), 2);//实到未税额 
                        receivement.RcvLines[i].ArriveTotalNetMnyAC =
                            receivement.RcvLines[i].ArriveTotalNetMnyTC; //实到未税额 
                        receivement.RcvLines[i].ArriveTotalNetMnyFC =
                            receivement.RcvLines[i].ArriveTotalNetMnyTC; //实到未税额 
                        //
                        receivement.RcvLines[i].ArriveTotalTaxFC = Math.Round(
                            receivement.RcvLines[i].ArriveTotalNetMnyTC * receivement.RcvLines[i].TaxRate, 2);
                        //Math.Round(Convert.ToDecimal(arrqty) * receivement.RcvLines[i].FinallyPriceTC / (decimal.Parse(receivement.RcvLines[i].TaxRate.ToString())) * (decimal.Parse(receivement.RcvLines[i].TaxRate.ToString())), 2);//实到税额 
                        receivement.RcvLines[i].ArriveTotalTaxTC =
                            receivement.RcvLines[i].ArriveTotalTaxFC; //实到税额 
                        receivement.RcvLines[i].ArriveTotalTaxAC =
                            receivement.RcvLines[i].ArriveTotalTaxFC; //实到税额 

                        receivement.RcvLines[i].ArriveTotalMnyTC = receivement.RcvLines[i].ArriveTotalNetMnyTC +
                                                                   receivement.RcvLines[i]
                                                                       .ArriveTotalTaxFC; //实到价税合计 
                        receivement.RcvLines[i].ArriveTotalMnyAC =
                            receivement.RcvLines[i].ArriveTotalMnyTC; //实到价税合计 
                        receivement.RcvLines[i].ArriveTotalMnyFC =
                            receivement.RcvLines[i].ArriveTotalMnyTC; //实到价税合计 


                        //实收未税额
                        receivement.RcvLines[i].TotalNetMnyTC =
                            Math.Round(receivement.RcvLines[i].FinallyPriceTC * Convert.ToDecimal(newQty), 2);
                        receivement.RcvLines[i].TotalNetMnyAC = receivement.RcvLines[i].TotalNetMnyTC;
                        receivement.RcvLines[i].TotalNetMnyFC = receivement.RcvLines[i].TotalNetMnyTC;

                        //实收税额
                        receivement.RcvLines[i].TotalTaxFC = Math.Round(
                            (receivement.RcvLines[i].TotalNetMnyTC * receivement.RcvLines[i].TaxRate), 2);
                        receivement.RcvLines[i].TotalTaxAC = receivement.RcvLines[i].TotalTaxFC;
                        receivement.RcvLines[i].TotalTaxTC = receivement.RcvLines[i].TotalTaxFC;
                        //实收价税合计
                        receivement.RcvLines[i].TotalMnyTC = receivement.RcvLines[i].ArriveTotalNetMnyTC +
                                                             receivement.RcvLines[i].ArriveTotalTaxFC; //实到价税合计 
                        receivement.RcvLines[i].TotalMnyAC = receivement.RcvLines[i].TotalMnyTC;
                        receivement.RcvLines[i].TotalMnyFC = receivement.RcvLines[i].TotalMnyTC;
                    }


                    if (receivement.RcvLines[i].RcvTaxs.Count > 0) {
                        foreach (RcvTax item2 in receivement.RcvLines[i].RcvTaxs) {
                            if (item2.TaxMnyType == UFIDA.U9.CBO.FI_SCM.DTOs.TaxMnyTypeEnum.ArriveTax) {
                                item2.TaxMnyTC = receivement.RcvLines[i].ArriveTotalTaxFC;
                                item2.TaxMnyAC = receivement.RcvLines[i].ArriveTotalTaxFC;
                                item2.TaxMnyFC = receivement.RcvLines[i].ArriveTotalTaxFC;
                            }
                        }

                        foreach (RcvTax item2 in receivement.RcvLines[i].RcvTaxs) {
                            if (item2.TaxMnyType == UFIDA.U9.CBO.FI_SCM.DTOs.TaxMnyTypeEnum.ReceiveTax) {
                                item2.TaxMnyTC = receivement.RcvLines[i].ArriveTotalTaxFC;
                                item2.TaxMnyAC = receivement.RcvLines[i].ArriveTotalTaxFC;
                                item2.TaxMnyFC = receivement.RcvLines[i].ArriveTotalTaxFC;
                            }
                        }
                    }

                    #endregion 我自己的
                    
                    // 修改存储地点
                    if (receivement.RcvLines[i].DocLineNo == docLineNo &&
                        receivement.RcvLines[i].Wh.Code != rtnLineData.WhCode) {
                        Warehouse warehouse = Warehouse.FindByCode(receivement.Org, rtnLineData.WhCode);
                        if (warehouse == null) {
                            throw new ApplicationException($"编码为:{rtnLineData.WhCode}的存储地点不存在");
                        }

                        receivement.RcvLines[i].Wh = warehouse;
                    }

                    if (receivement.RcvLines[i].Wh.IsBin) {
                        if (receivement.RcvLines[i].RcvLineLocations.Count > 0) {
                            Bin bin = Bin.Finder.Find(string.Format(
                                "Org.ID='{0}'  and Warehouse.Code='{1}' and Code = '{2}'",
                                Context.LoginOrg.ID.ToString(), receivement.RcvLines[i].Wh.Code, "A1"));
                            if (bin != null) {
                                receivement.RcvLines[i].RcvLineLocations[0].Location = bin;
                                receivement.RcvLines[i].RcvLineLocations[0].LocationQtySU =
                                    receivement.RcvLines[i].ArriveQtySU;
                                receivement.RcvLines[i].RcvLineLocations[0].LocationQtyTU =
                                    receivement.RcvLines[i].ArriveQtySU;
                            }
                        }
                        else {
                            Bin bin = Bin.Finder.Find(string.Format(
                                "Org.ID='{0}'  and Warehouse.Code='{1}' and Code = '{2}'",
                                Context.LoginOrg.ID.ToString(), receivement.RcvLines[i].Wh.Code, "A1"));

                            RcvLineLocation rcvbin = RcvLineLocation.Create(receivement.RcvLines[i]);
                            rcvbin.ItemInfo.ItemCode = receivement.RcvLines[i].ItemInfo.ItemCode;
                            rcvbin.CurrentOrg = Context.LoginOrg;
                            rcvbin.Location = new CBO.SCM.Bin.Bin();
                            rcvbin.Location = bin;
                            rcvbin.LocationQtySU = receivement.RcvLines[i].ArriveQtySU;
                            rcvbin.LocationQtyTU = receivement.RcvLines[i].ArriveQtySU;
                            receivement.RcvLines[i].Wh = bin.Warehouse;
                            receivement.RcvLines[i].RcvLineLocations.Add(rcvbin);
                        }
                    }
                    else {
                        if (receivement.RcvLines[i].RcvLineLocations.Count > 0) {
                            receivement.RcvLines[i].RcvLineLocations[0] = null;
                        }
                    }
                }
            }

            session.Commit();
        }
    }

    ApproveRCV(receivement);
    _logger.LogInfo("修改成功");
    resultData.Code = "200";
    resultData.Message = "成功";
    resultData.DocNo = docNo;
    return resultData;
}

采购退货修改数量

private WMSResultDataDTOData ProcessRtn(string docNo, RTNHeadData rtnHeadData) {
    var resultData = new WMSResultDataDTOData();
    Receivement rec =
        Receivement.Finder.Find(string.Format("DocNo = '{0}' and Org = {1}", docNo, Context.LoginOrg.ID));
    if (rec == null)
        throw new Exception("找不到采购退货单据,DocNo=" + docNo);

    foreach (RTNLineData rtnLineData in rtnHeadData.SoRcvLineList) {
        int rtnLineNo = int.Parse(rtnLineData.DocLineNo);
        decimal newQty = decimal.Parse(rtnLineData.Qty);
        using (Session session = Session.Open()) {
            foreach (RcvLine rcvLine in rec.RcvLines) {
                if (rcvLine.DocLineNo == rtnLineNo) {
                    _logger.LogInfo(string.Format("[退货处理] - 更新退货数量:DocNo={0}, LineNo={1}, 原数量={2}, 新数量={3}",
                        docNo,
                        rtnLineNo, rcvLine.RejectQtyTU, newQty));

                    #region 我自己的
                    rcvLine.ArriveQtyTU = rcvLine.EyeballingQtyTU = rcvLine.RcvQtyTU = Decimal.Zero;
                    rcvLine.ArriveQtyPU = rcvLine.EyeballingQtyPU = rcvLine.RcvQtyPU = Decimal.Zero;
                    rcvLine.ArriveQtySU = rcvLine.EyeballingQtySU = rcvLine.RcvQtySU = Decimal.Zero;
                    rcvLine.ArriveQtyCU = rcvLine.EyeballingQtyCU = rcvLine.RcvQtyCU = Decimal.Zero;
                    rcvLine.ArriveQtyTBU = rcvLine.EyeballingQtyTBU = rcvLine.RcvQtyTBU = 0;
                    if (rcvLine.RtnDeductQtyTU > 0) {
                        // 拒收数量
                        rcvLine.RejectQtyTU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RejectQtyCU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RejectQtyPU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RejectQtySU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RejectQtyTBU = 0;
                        rcvLine.RtnFillQtyTU = 0;
                        rcvLine.RtnFillQtyCU = 0;
                        rcvLine.RtnFillQtyPU = 0;
                        rcvLine.RtnFillQtySU = 0;
                        rcvLine.RtnFillQtyTBU = 0;
                        rcvLine.RtnDeductQtyTU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RtnDeductQtyCU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RtnDeductQtyPU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RtnDeductQtySU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RtnDeductQtyTBU = decimal.Zero;
                        // 价税合计
                        rcvLine.RejectMnyAC =
                            Math.Round(Math.Round(Convert.ToDecimal(newQty), 4) * rcvLine.FinallyPriceTC, 2);
                        rcvLine.RejectMnyFC =
                            Math.Round(Math.Round(Convert.ToDecimal(newQty), 4) * rcvLine.FinallyPriceTC, 2);
                        rcvLine.RejectMnyTC =
                            Math.Round(Math.Round(Convert.ToDecimal(newQty), 4) * rcvLine.FinallyPriceTC, 2);
                        // 未税金额 = 含税金额 / (1 + 税率)
                        rcvLine.RejectNetMnyAC = Math.Round(rcvLine.RejectMnyAC / (1 + rcvLine.TaxRate), 2);
                        rcvLine.RejectNetMnyFC = Math.Round(rcvLine.RejectMnyAC / (1 + rcvLine.TaxRate), 2);
                        rcvLine.RejectNetMnyTC = Math.Round(rcvLine.RejectMnyAC / (1 + rcvLine.TaxRate), 2);
                        // 税额 = 价税合计-未税金额
                        rcvLine.RejectTaxMnyAC = Math.Round(rcvLine.RejectMnyAC - rcvLine.RejectNetMnyAC, 2);
                        rcvLine.RejectTaxMnyFC = Math.Round(rcvLine.RejectMnyAC - rcvLine.RejectNetMnyAC, 2);
                        rcvLine.RejectTaxMnyTC = Math.Round(rcvLine.RejectMnyAC - rcvLine.RejectNetMnyAC, 2);


                        rcvLine.RtnDeductMnyTC = rcvLine.RejectMnyAC;
                        rcvLine.RtnDeductMnyFC = rcvLine.RejectMnyAC;
                        rcvLine.RtnDeductMnyAC = rcvLine.RejectMnyAC;

                        rcvLine.RtnDeductNetMnyTC = rcvLine.RejectNetMnyAC;
                        rcvLine.RtnDeductNetMnyFC = rcvLine.RejectNetMnyAC;
                        rcvLine.RtnDeductNetMnyAC = rcvLine.RejectNetMnyAC;


                        rcvLine.RtnDeductTaxAC = rcvLine.RejectTaxMnyAC;
                        rcvLine.RtnDeductTaxFC = rcvLine.RejectTaxMnyAC;
                        rcvLine.RtnDeductTaxTC = rcvLine.RejectTaxMnyAC;
                        if (rcvLine.RcvTaxs.Count > 0) {
                            foreach (RcvTax item2 in rcvLine.RcvTaxs) {
                                if (item2.TaxMnyType == UFIDA.U9.CBO.FI_SCM.DTOs.TaxMnyTypeEnum.RejectTax) {
                                    item2.TaxMnyTC = rcvLine.RejectTaxMnyAC;
                                    item2.TaxMnyAC = rcvLine.RejectTaxMnyAC;
                                    item2.TaxMnyFC = rcvLine.RejectTaxMnyAC;
                                }

                                if (item2.TaxMnyType == UFIDA.U9.CBO.FI_SCM.DTOs.TaxMnyTypeEnum.RtnDeductTax) {
                                    item2.TaxMnyTC = rcvLine.RejectTaxMnyAC;
                                    item2.TaxMnyAC = rcvLine.RejectTaxMnyAC;
                                    item2.TaxMnyFC = rcvLine.RejectTaxMnyAC;
                                }
                            }
                        }
                    }
                    else {
                        // 拒收数量
                        rcvLine.RejectQtyTU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RejectQtyCU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RejectQtyPU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RejectQtySU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RejectQtyTBU = 0;
                        rcvLine.RtnFillQtyTU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RtnFillQtyCU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RtnFillQtyPU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RtnFillQtySU = Math.Round(Convert.ToDecimal(newQty), 4);
                        rcvLine.RtnFillQtyTBU = 0;
                        rcvLine.RtnDeductQtyTU = decimal.Zero;
                        rcvLine.RtnDeductQtyCU = decimal.Zero;
                        rcvLine.RtnDeductQtyPU = decimal.Zero;
                        rcvLine.RtnDeductQtySU = decimal.Zero;
                        rcvLine.RtnDeductQtyTBU = decimal.Zero;
                        // 价税合计
                        rcvLine.RejectMnyAC =
                            Math.Round(Math.Round(Convert.ToDecimal(newQty), 4) * rcvLine.FinallyPriceTC, 2);
                        rcvLine.RejectMnyFC =
                            Math.Round(Math.Round(Convert.ToDecimal(newQty), 4) * rcvLine.FinallyPriceTC, 2);
                        rcvLine.RejectMnyTC =
                            Math.Round(Math.Round(Convert.ToDecimal(newQty), 4) * rcvLine.FinallyPriceTC, 2);
                        // 未税金额 = 含税金额 / (1 + 税率)
                        rcvLine.RejectNetMnyAC = Math.Round(rcvLine.RejectMnyAC / (1 + rcvLine.TaxRate), 2);
                        rcvLine.RejectNetMnyFC = Math.Round(rcvLine.RejectMnyAC / (1 + rcvLine.TaxRate), 2);
                        rcvLine.RejectNetMnyTC = Math.Round(rcvLine.RejectMnyAC / (1 + rcvLine.TaxRate), 2);
                        // 税额 = 价税合计-未税金额
                        rcvLine.RejectTaxMnyAC = Math.Round(rcvLine.RejectMnyAC - rcvLine.RejectNetMnyAC, 2);
                        rcvLine.RejectTaxMnyFC = Math.Round(rcvLine.RejectMnyAC - rcvLine.RejectNetMnyAC, 2);
                        rcvLine.RejectTaxMnyTC = Math.Round(rcvLine.RejectMnyAC - rcvLine.RejectNetMnyAC, 2);
                        if (rcvLine.RcvTaxs.Count > 0) {
                            foreach (RcvTax item2 in rcvLine.RcvTaxs) {
                                if (item2.TaxMnyType == UFIDA.U9.CBO.FI_SCM.DTOs.TaxMnyTypeEnum.RejectTax) {
                                    item2.TaxMnyTC = rcvLine.RejectTaxMnyAC;
                                    item2.TaxMnyAC = rcvLine.RejectTaxMnyAC;
                                    item2.TaxMnyFC = rcvLine.RejectTaxMnyAC;
                                }
                            }
                        }
                    }


                    // 修改存储地点
                    if (rcvLine.DocLineNo == rtnLineNo &&
                        rcvLine.Wh.Code != rtnLineData.WhCode) {
                        Warehouse warehouse = Warehouse.FindByCode(rcvLine.CurrentOrg, rtnLineData.WhCode);
                        if (warehouse == null) {
                            throw new ApplicationException($"编码为:{rtnLineData.WhCode}的存储地点不存在");
                        }
                        rcvLine.Wh = warehouse;
                    }
                    if (rcvLine.Wh.IsBin) {
                        if (rcvLine.RcvLineLocations.Count > 0) {
                            Bin bin = Bin.Finder.Find(string.Format(
                                "Org.ID='{0}'  and Warehouse.Code='{1}' and Code = '{2}'",
                                Context.LoginOrg.ID.ToString(), rcvLine.Wh.Code, "A1"));
                            if (bin != null) {
                                rcvLine.RcvLineLocations[0].Location = bin;
                                rcvLine.RcvLineLocations[0].LocationQtySU = rcvLine.ArriveQtySU;
                                rcvLine.RcvLineLocations[0].LocationQtyTU = newQty;
                            }
                        }
                        else {
                            Bin bin = Bin.Finder.Find(string.Format(
                                "Org.ID='{0}'  and Warehouse.Code='{1}' and Code = '{2}'",
                                Context.LoginOrg.ID.ToString(), rcvLine.Wh.Code, "A1"));

                            RcvLineLocation rcvbin = RcvLineLocation.Create(rcvLine);
                            rcvbin.ItemInfo.ItemCode = rcvLine.ItemInfo.ItemCode;
                            rcvbin.CurrentOrg = Context.LoginOrg;
                            rcvbin.Location = new CBO.SCM.Bin.Bin();
                            rcvbin.Location = bin;
                            rcvbin.LocationQtySU = rcvLine.ArriveQtySU;
                            rcvbin.LocationQtyTU = newQty;
                            rcvLine.Wh = bin.Warehouse;
                            rcvLine.RcvLineLocations.Add(rcvbin);
                        }
                    }
                    else {
                        if (rcvLine.RcvLineLocations.Count > 0) {
                            rcvLine.RcvLineLocations[0] = null;
                        }
                    }
                }

                #endregion 我自己的
            }

            session.Commit();
        }
    }
}
0

评论 (0)

取消