Esempio n. 1
0
        private static void UngeneratePzYsyf(IRepository rep, 凭证 pz)
        {
            IList <应收应付款> ysyfk = (rep as Feng.NH.INHibernateRepository).List <应收应付款>(NHibernate.Criterion.DetachedCriteria.For <应收应付款>()
                                                                                      .Add(NHibernate.Criterion.Expression.Eq("应收应付源", pz)));

            foreach (应收应付款 i in ysyfk)
            {
                rep.Delete(i);
            }

            rep.Initialize(pz.凭证费用明细, pz);

            foreach (凭证费用明细 pzfymx in pz.凭证费用明细)
            {
                费用项 fyx = EntityBufferCollection.Instance.Get <费用项>(pzfymx.费用项编号);

                rep.Initialize(pzfymx.费用, pzfymx);
                if (pzfymx.费用.Count > 0 &&
                    fyx.应收应付类型 != 应收应付类型.管理费用类型)
                {
                    continue;
                }

                if (fyx.应收应付类型 == 应收应付类型.业务)
                {
                }
                else if (fyx.应收应付类型 == 应收应付类型.借款类型)
                {
                }
                else if (fyx.应收应付类型 == 应收应付类型.管理费用类型)
                {
                    if (string.IsNullOrEmpty(s_非业务默认费用实体))
                    {
                        throw new ArgumentException("必须指定一个非业务默认费用实体!");
                    }

                    IList <费用> fys = new List <费用>();
                    foreach (费用 fy in pzfymx.费用)
                    {
                        if (fy.费用实体.ID == new Guid(s_非业务默认费用实体))
                        {
                            fys.Add(fy);
                        }
                    }

                    foreach (费用 fy in fys)
                    {
                        pzfymx.费用.Remove(fy);
                        rep.Delete(fy);
                    }
                }
                else if (fyx.应收应付类型 == 应收应付类型.其他)
                {
                }
            }
        }
Esempio n. 2
0
        private static void 批量生成费用(IRepository rep, 普通票 票, IEnumerable 箱s, 收付标志 收付标志, 合同费用项 htfyx, IList <业务费用理论值> llzs, bool mustGenerateFy)
        {
            费用项 fyx = EntityBufferCollection.Instance.Get <费用项>(htfyx.费用项编号);

            if (fyx.箱)
            {
                foreach (普通箱 箱 in 箱s)
                {
                    GenerateFy(rep, 票, 箱, 收付标志, htfyx, llzs, mustGenerateFy);
                }
            }
            else if (fyx.票)
            {
                GenerateFy(rep, 票, null, 收付标志, htfyx, llzs, mustGenerateFy);
            }
        }
Esempio n. 3
0
        private static void 批量生成费用(IRepository rep, 车辆产值 产值, IEnumerable 任务s, 车队合同费用项 htfyx, IList <业务费用理论值> llzs, bool mustGenerateFy)
        {
            费用项 fyx = EntityBufferCollection.Instance.Get <费用项>(htfyx.费用项编号);

            if (fyx.箱)
            {
                foreach (任务 箱 in 任务s)
                {
                    GenerateFy(rep, 产值, 箱, htfyx, llzs, mustGenerateFy);
                }
            }
            else if (fyx.票)
            {
                GenerateFy(rep, 产值, null, htfyx, llzs, mustGenerateFy);
            }
        }
Esempio n. 4
0
        private static void GenerateFy(IRepository rep, 普通票 票, 普通箱 箱, 收付标志 收付标志, 合同费用项 htfyx, IList <业务费用理论值> llzs, bool mustGenerateFy)
        {
            string  相关人 = Get相关人(rep, 票, 箱, htfyx);
            decimal?金额  = Get理论值(rep, 票, 箱, htfyx);

            if (金额.HasValue && 金额.Value == decimal.MinValue)
            {
                return;
            }

            bool llrHaveGenerated = false;

            foreach (业务费用理论值 i in llzs)
            {
                bool b = i.费用项编号 == htfyx.费用项编号 && i.收付标志 == 收付标志;;
                if (htfyx.是否判断相关人)
                {
                    b &= i.相关人编号 == 相关人;
                }
                if (b && 箱 != null)
                {
                    b &= i.箱Id == 箱.ID;
                }
                if (b)
                {
                    llrHaveGenerated = true;
                    break;
                }
            }

            业务费用理论值 ywfylrz = null;

            if (!llrHaveGenerated)
            {
                if (金额.HasValue)
                {
                    ywfylrz       = new 业务费用理论值();
                    ywfylrz.费用实体  = 票; // new 普通票 { Id = 票.ID, Version = 票.Version, 费用实体类型编号 = 票.费用实体类型编号 };
                    ywfylrz.费用项编号 = htfyx.费用项编号;
                    ywfylrz.金额    = 金额.Value;
                    ywfylrz.票     = 票;
                    ywfylrz.收付标志  = 收付标志;
                    ywfylrz.相关人编号 = Get相关人(rep, 票, 箱, htfyx);
                    if (箱 != null)
                    {
                        ywfylrz.箱   = 箱;
                        ywfylrz.箱Id = 箱.ID;
                    }

                    (new HdBaseDao <业务费用理论值>()).Save(rep, ywfylrz);
                    llzs.Add(ywfylrz);
                }
            }

            if (htfyx.是否生成实际费用)
            {
                bool generateFy = false;
                // 在外层,判断理论值是否生成过
                if (!mustGenerateFy)
                {
                    if (htfyx.是否空值全部生成)
                    {
                        // 金额为Null的时候判断时候生成过,没生成过也要生成
                        if (!金额.HasValue)
                        {
                            bool fyHaveGenerated = false;
                            foreach (业务费用 i in 票.费用)
                            {
                                bool b = i.费用项编号 == htfyx.费用项编号 && i.收付标志 == 收付标志;
                                if (htfyx.是否判断相关人)
                                {
                                    b &= i.相关人编号 == 相关人;
                                }
                                if (b && 箱 != null)
                                {
                                    b &= i.箱Id == 箱.ID;
                                }
                                if (b)
                                {
                                    fyHaveGenerated = true;
                                    break;
                                }
                            }
                            generateFy = !fyHaveGenerated;
                        }
                    }

                    if (!generateFy)
                    {
                        // 只有理论值未生成过,且有理论值的情况下,准备生成费用
                        if (!llrHaveGenerated && ywfylrz != null)
                        {
                            // 如果理论值未生成过,要检查是否要生成费用
                            bool fyHaveGenerated = false;
                            foreach (业务费用 i in 票.费用)
                            {
                                bool b = i.费用项编号 == htfyx.费用项编号 && i.收付标志 == 收付标志;
                                if (htfyx.是否判断相关人)
                                {
                                    b &= i.相关人编号 == 相关人;
                                }
                                if (b && 箱 != null)
                                {
                                    b &= i.箱Id == 箱.ID;
                                }
                                if (b)
                                {
                                    fyHaveGenerated = true;
                                    break;
                                }
                            }
                            generateFy = !fyHaveGenerated;
                        }
                        else
                        {
                            generateFy = false;
                        }
                    }
                }
                else
                {
                    generateFy = true;
                }

                if (generateFy)
                {
                    bool fylbSubmitted = false;
                    费用项  fyx           = EntityBufferCollection.Instance.Get <费用项>(htfyx.费用项编号);
                    //int fylbbh = fyx.收入类别.Value;

                    //费用类别 fylb = EntityBufferCollection.Instance["费用类别"].Get(fylbbh) as 费用类别;
                    //System.Diagnostics.Debug.Assert(fylb.大类 == "业务额外" || fylb.大类 == "业务常规" || fylb.大类 == "业务其他");
                    IList <费用信息> list = (rep as Feng.NH.INHibernateRepository).List <费用信息>(NHibernate.Criterion.DetachedCriteria.For <费用信息>()
                                                                                           .Add(NHibernate.Criterion.Expression.Eq("费用项编号", htfyx.费用项编号))
                                                                                           .Add(NHibernate.Criterion.Expression.Eq("票.ID", 票.ID)));

                    System.Diagnostics.Debug.Assert(list.Count <= 1);
                    if (list.Count == 1)
                    {
                        if (收付标志 == 收付标志.收)
                        {
                            fylbSubmitted = list[0].Submitted;
                        }
                        else
                        {
                            fylbSubmitted = list[0].完全标志付;
                        }
                    }

                    // 完全标志还未打
                    if (!fylbSubmitted)
                    {
                        // 不生成理论值为0的
                        if (!金额.HasValue || (金额.HasValue && 金额.Value != 0))
                        {
                            业务费用 item = new 业务费用();
                            item.费用实体  = 票; // new 普通票 { Id = 票.ID, Version = 票.Version, 费用实体类型编号 = 票.费用实体类型编号 };
                            item.费用项编号 = htfyx.费用项编号;
                            item.金额    = 金额;
                            item.票     = 票;
                            item.收付标志  = 收付标志;
                            item.相关人编号 = 相关人;
                            if (箱 != null)
                            {
                                item.箱   = 箱;
                                item.箱Id = 箱.ID;
                            }

                            (new 业务费用Dao()).Save(rep, item);

                            票.费用.Add(item);
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        private static void GeneratePzYsyf(IRepository rep, 凭证 pz)
        {
            rep.Initialize(pz.凭证费用明细, pz);

            foreach (凭证费用明细 pzfymx in pz.凭证费用明细)
            {
                rep.Initialize(pzfymx.费用, pzfymx);

                费用项 fyx = EntityBufferCollection.Instance.Get <费用项>(pzfymx.费用项编号);
                if (pzfymx.费用.Count > 0)
                {
                    // 通过对账单包进来的
                    if (fyx.应收应付类型 == 应收应付类型.业务)
                    {
                        应收应付款 ysyfk = new 应收应付款();
                        ysyfk.IsActive = true;
                        ysyfk.费用项编号    = pzfymx.费用项编号;
                        ysyfk.结算期限     = pz.日期;
                        ysyfk.金额       = -pzfymx.金额; // 取反
                        ysyfk.日期       = pz.日期;
                        ysyfk.收付标志     = pzfymx.收付标志;
                        ysyfk.相关人编号    = pzfymx.相关人编号;
                        ysyfk.业务类型编号   = pzfymx.业务类型编号.Value;
                        ysyfk.应收应付源    = pz;
                        ysyfk.备注       = pzfymx.备注;

                        (new HdBaseDao <应收应付款>()).Save(rep, ysyfk);
                    }
                    continue;
                }


                if (fyx.应收应付类型 == 应收应付类型.业务)
                {
                    应收应付款 ysyfk = new 应收应付款();
                    ysyfk.IsActive = true;
                    ysyfk.费用项编号    = pzfymx.费用项编号;
                    ysyfk.结算期限     = pz.日期;
                    ysyfk.金额       = -pzfymx.金额; // 取反
                    ysyfk.日期       = pz.日期;
                    ysyfk.收付标志     = pzfymx.收付标志;
                    ysyfk.相关人编号    = pzfymx.相关人编号;
                    ysyfk.业务类型编号   = pzfymx.业务类型编号.Value;
                    ysyfk.应收应付源    = pz;
                    ysyfk.备注       = pzfymx.备注;

                    (new HdBaseDao <应收应付款>()).Save(rep, ysyfk);
                }
                else if (fyx.应收应付类型 == 应收应付类型.借款类型)
                {
                    应收应付款 ysyfk = new 应收应付款();
                    ysyfk.IsActive = true;
                    ysyfk.费用项编号    = "002"; // 其他

                    //IList<GridColumnInfo> infos = new List<GridColumnInfo> {
                    //        new GridColumnInfo { Caption = "结算期限", DataControlVisible = "True", DataControlType = "MyDatePicker", PropertyName = "结算期限", NotNull = "True"} ,
                    //    };
                    //ArchiveDataControlForm form = new ArchiveDataControlForm(new ControlManager(null), infos);
                    //if (form.ShowDialog() == DialogResult.OK)
                    //{
                    //    ysyfk.结算期限 = (DateTime)form.DataControls["结算期限"].SelectedDataValue;
                    //}
                    //else
                    //{
                    //    throw new InvalidUserOperationException("借款必须填写结算期限!");
                    //}
                    ysyfk.结算期限   = pzfymx.结算期限.HasValue ? pzfymx.结算期限.Value : pz.日期;
                    ysyfk.金额     = pzfymx.金额;
                    ysyfk.日期     = pz.日期;
                    ysyfk.收付标志   = pzfymx.收付标志 == 收付标志.付 ? 收付标志.收 : 收付标志.付;
                    ysyfk.相关人编号  = pzfymx.相关人编号;
                    ysyfk.业务类型编号 = pzfymx.业务类型编号.Value;
                    ysyfk.应收应付源  = pz;
                    ysyfk.备注     = pzfymx.备注;

                    (new HdBaseDao <应收应付款>()).Save(rep, ysyfk);
                }
                else if (fyx.应收应付类型 == 应收应付类型.管理费用类型)
                {
                    非业务费用 fy = new 非业务费用();
                    fy.IsActive = true;

                    fy.费用项编号 = pzfymx.费用项编号;
                    fy.金额    = pzfymx.金额;
                    fy.收付标志  = pzfymx.收付标志;
                    fy.相关人编号 = pzfymx.相关人编号;
                    fy.备注    = pzfymx.备注;

                    if (string.IsNullOrEmpty(s_非业务默认费用实体))
                    {
                        throw new ArgumentException("必须指定一个非业务默认费用实体!");
                    }
                    fy.费用实体 = rep.Get <费用实体>(new Guid(s_非业务默认费用实体));
                    if (fy.费用实体 == null)
                    {
                        throw new ArgumentException("指定的非业务默认费用实体不存在!");
                    }
                    fy.凭证费用明细 = pzfymx;

                    (new 非业务费用Dao()).Save(rep, fy);
                }
                else if (fyx.应收应付类型 == 应收应付类型.待分摊类型)
                {
                    应收应付款 ysyfk = new 应收应付款();
                    ysyfk.IsActive = true;
                    ysyfk.费用项编号    = "004"; // 其他
                    ysyfk.结算期限     = pzfymx.结算期限.HasValue ? pzfymx.结算期限.Value : pz.日期;
                    ysyfk.金额       = pzfymx.金额;
                    ysyfk.日期       = pz.日期;
                    ysyfk.收付标志     = pzfymx.收付标志 == 收付标志.付 ? 收付标志.收 : 收付标志.付;
                    ysyfk.相关人编号    = "900031";
                    ysyfk.业务类型编号   = pzfymx.业务类型编号.Value;
                    ysyfk.应收应付源    = pz;
                    ysyfk.备注       = pzfymx.备注;

                    (new HdBaseDao <应收应付款>()).Save(rep, ysyfk);
                }
                else if (fyx.应收应付类型 == 应收应付类型.其他)
                {
                }
            }
        }