收货单改价


Session方式

/// <summary>
/// 收货改价
/// </summary>
/// <param name="JsonData">条件参数</param>
/// <param name="res">返回数据</param>
void RcvWeighShare(Dictionary<long,decimal> JsonData, ReturnData res)
{
    // 更新收货行计价数量
    using (UBFTransactionScope Scope = new UBFTransactionScope(TransactionOption.Required))
    {
        try
        {
            using (ISession session = Session.Open())
            {
                foreach (var Item in JsonData)
                {
                    // 查询收货行数据
                    var RcvLineD = RcvLine.Finder.FindByID(Item.Key);
                    if (RcvLineD is null) continue;


                    //修改点收数量
                    //RcvLineD.EyeballingQtyTU = Item.Value;
                    RcvLineD.EyeballingQtyPU = Item.Value;
                    RcvLineD.EyeballingQtyCU = Item.Value;
                    //RcvLineD.EyeballingQtySU = Item.Value;
                    //修改实收数量
                    //RcvLineD.RcvQtyTU = Item.Value;
                    RcvLineD.RcvQtyPU = Item.Value;
                    RcvLineD.RcvQtyCU = Item.Value;
                    //RcvLineD.RcvQtySU = Item.Value;
                    //修改实到数量
                    //RcvLineD.ArriveQtyTU = Item.Value;
                    RcvLineD.ArriveQtyPU = Item.Value;
                    RcvLineD.ArriveQtyCU = Item.Value;
                    //RcvLineD.ArriveQtySU = Item.Value;
                    //可立账数量
                    //RcvLineD.CanAPConfirmQtyTU = Item.Value;
                    RcvLineD.CanAPConfirmQtyPU = Item.Value;
                    RcvLineD.CanAPConfirmQtyCU = Item.Value;
                    //RcvLineD.CanAPConfirmQtySU = Item.Value;
                    // 计价单位转换率(计价单位数量÷库存单位数量)
                    RcvLineD.TBUToPBURate = Item.Value / RcvLineD.ArriveQtyTU;
                    RcvLineD.TBUToCBURate = RcvLineD.TBUToPBURate;
                    //实到价税合计
                    RcvLineD.ArriveTotalMnyTC = Math.Round(Item.Value * RcvLineD.FinallyPriceTC, 2);
                    RcvLineD.ArriveTotalMnyFC = Math.Round(Item.Value * RcvLineD.FinallyPriceTC, 2);
                    RcvLineD.ArriveTotalMnyAC = Math.Round(Item.Value * RcvLineD.FinallyPriceAC, 2);
                    //实到未税额
                    RcvLineD.ArriveTotalNetMnyTC = Math.Round(RcvLineD.ArriveTotalMnyTC / (1 + RcvLineD.TaxRate), 2);
                    RcvLineD.ArriveTotalNetMnyFC = Math.Round(RcvLineD.ArriveTotalMnyFC / (1 + RcvLineD.TaxRate), 2);
                    RcvLineD.ArriveTotalNetMnyAC = Math.Round(RcvLineD.ArriveTotalMnyAC / (1 + RcvLineD.TaxRate), 2);
                    //实到税额
                    RcvLineD.ArriveTotalTaxTC = RcvLineD.ArriveTotalMnyTC - RcvLineD.ArriveTotalNetMnyTC;
                    RcvLineD.ArriveTotalTaxFC = RcvLineD.ArriveTotalMnyFC - RcvLineD.ArriveTotalNetMnyFC;
                    RcvLineD.ArriveTotalTaxAC = RcvLineD.ArriveTotalMnyAC - RcvLineD.ArriveTotalNetMnyAC;
                    // 实收价税合计
                    RcvLineD.TotalMnyTC = RcvLineD.ArriveTotalMnyTC;
                    RcvLineD.TotalMnyFC = RcvLineD.ArriveTotalMnyFC;
                    RcvLineD.TotalMnyAC = RcvLineD.ArriveTotalMnyAC;
                    //实收未税额
                    RcvLineD.TotalNetMnyTC = RcvLineD.ArriveTotalNetMnyTC;
                    RcvLineD.TotalNetMnyFC = RcvLineD.ArriveTotalNetMnyFC;
                    RcvLineD.TotalNetMnyAC = RcvLineD.ArriveTotalNetMnyAC;
                    //实收税额
                    RcvLineD.TotalTaxTC = RcvLineD.ArriveTotalTaxTC;
                    RcvLineD.TotalTaxFC = RcvLineD.ArriveTotalTaxFC;
                    RcvLineD.TotalTaxAC = RcvLineD.ArriveTotalTaxAC;

                    // 行税明细
                    var rcvTax1 = RcvLineD.RcvTaxs.Cast<RcvTax>().Where(a => a.TaxMnyType.Value.Equals(1)).FirstOrDefault();
                    if (rcvTax1 != null)
                    {
                        rcvTax1.TaxMnyTC = RcvLineD.TotalTaxTC;
                        rcvTax1.TaxMnyFC = RcvLineD.TotalTaxFC;
                        rcvTax1.TaxMnyAC = RcvLineD.TotalTaxAC;
                    }
                    var rcvTax2 = RcvLineD.RcvTaxs.Cast<RcvTax>().Where(a => a.TaxMnyType.Value.Equals(2)).FirstOrDefault();
                    if (rcvTax2 != null)
                    {
                        rcvTax2.TaxMnyTC = RcvLineD.TotalTaxTC;
                        rcvTax2.TaxMnyFC = RcvLineD.TotalTaxFC;
                        rcvTax2.TaxMnyAC = RcvLineD.TotalTaxAC;
                    }
                }
                session.Commit();
            }

            Scope.Commit();
            res.Success(res.RtnData, $"{res.Msg}成功!");
        }
        catch (Exception ex)
        {
            res.Fail($"{res.Msg}失败:{ex.Message}", res.RtnData);
            Scope.Rollback();
        }

    }
}