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_非业务默认费用实体)); 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.应收应付类型 == 应收应付类型.其他) { } } }
internal static void GenerateDzdYsyf(IRepository rep, 对账单 entity) { if (!entity.Submitted) { throw new InvalidUserOperationException("对账单还未提交!"); } rep.Initialize(entity.费用, entity); entity.应收应付款 = new List <应收应付款>(); // 业务类型编号, 相关人编号 // 费用项编号 = "000" Dictionary <Tuple <int, string>, IList <费用> > dict = Utility.GroupFyToDzdYsyf(entity.费用); foreach (KeyValuePair <Tuple <int, string>, IList <费用> > kvp in dict) { decimal sum = 0; 应收应付款 ysyfk = new 应收应付款(); if (entity.对账单类型 == (int)财务对账单类型.固定资产折旧) { foreach (费用 k4 in kvp.Value) { if (k4.收付标志 == 收付标志.付) { sum -= k4.金额.Value; } else { sum += k4.金额.Value; } } ysyfk.费用项编号 = "004"; ysyfk.收付标志 = 收付标志.收; ysyfk.业务类型编号 = 24; } else { foreach (费用 k4 in kvp.Value) { if (k4.收付标志 == entity.收付标志) { sum += k4.金额.Value; } else { sum -= k4.金额.Value; } } ysyfk.费用项编号 = "000"; ysyfk.收付标志 = entity.收付标志; ysyfk.业务类型编号 = kvp.Key.Item1; } ysyfk.结算期限 = entity.结算期限.HasValue ? entity.结算期限.Value : entity.关账日期.Value; ysyfk.金额 = sum; ysyfk.日期 = entity.关账日期.Value; ysyfk.相关人编号 = kvp.Key.Item2; ysyfk.应收应付源 = entity; (new HdBaseDao <应收应付款>()).Save(rep, ysyfk); entity.应收应付款.Add(ysyfk); } }
internal static void GenerateDzdYsyf(IRepository rep, 对账单 entity) { if (entity.对账单类型 == (int)货代对账单类型.自动凭证应付对账单) { return; } if (!entity.Submitted) { throw new InvalidUserOperationException("对账单还未提交!"); } rep.Initialize(entity.费用, entity); entity.应收应付款 = new List <应收应付款>(); // 业务类型编号, 相关人编号 // 费用项编号 = "000" Dictionary <Tuple <int, string, string>, IList <费用> > dict; dict = Feng.Utils.CollectionHelper.Group <费用, Tuple <int, string, string> >(entity.费用, new Feng.Utils.CollectionHelper.GetGroupKey <费用, Tuple <int, string, string> >(delegate(费用 i) { if (!i.费用类别编号.HasValue || string.IsNullOrEmpty(i.相关人编号) || !i.金额.HasValue) { return(null); } return(new Tuple <int, string, string>(i.费用实体.费用实体类型编号, i.相关人编号, i.费用类别.大类)); })); foreach (KeyValuePair <Tuple <int, string, string>, IList <费用> > kvp in dict) { decimal sum = 0; foreach (费用 k4 in kvp.Value) { if (k4.收付标志 == entity.收付标志) { sum += k4.金额.Value; } else { sum -= k4.金额.Value; } } 应收应付款 ysyfk = new 应收应付款(); if (kvp.Key.Item3 == "业务常规") { ysyfk.费用项编号 = "000"; } else { ysyfk.费用项编号 = "001"; } ysyfk.结算期限 = entity.结算期限.HasValue ? entity.结算期限.Value : entity.关账日期.Value; ysyfk.金额 = sum; ysyfk.日期 = entity.关账日期.Value; ysyfk.收付标志 = entity.收付标志; ysyfk.相关人编号 = kvp.Key.Item2; ysyfk.业务类型编号 = kvp.Key.Item1; ysyfk.应收应付源 = entity; (new HdBaseDao <应收应付款>()).Save(rep, ysyfk); entity.应收应付款.Add(ysyfk); } }