public override void PreparingOperate(OperateArgs e)
        {
            base.PreparingOperate(e);

            if (e.OperateType == OperateType.Save || e.OperateType == OperateType.Update)
            {
                非业务车辆费用 entity = e.Entity as 非业务车辆费用;
                if (string.IsNullOrEmpty(entity.费用项编号))
                {
                    entity.费用类别编号 = null;
                }
                else
                {
                    e.Repository.Initialize(entity.费用实体, entity);
                    entity.费用类别编号 = entity.费用实体.费用实体类型编号;
                    if (entity.费用类别编号.HasValue && entity.费用类别编号.Value == 13) // 车辆库存加油
                    {
                        entity.费用类别编号 = 12;                                  //车辆加油
                        if (entity.费用归属 == 费用归属.驾驶员)
                        {
                            entity.费用类别编号 = 325;//业务油耗
                        }
                    }
                }

                if (entity.车辆编号 == null)
                {
                    if (entity.车辆费用实体 == null)
                    {
                        entity.车辆费用实体 = entity.费用实体 as 车辆费用实体;
                    }
                    else
                    {
                        e.Repository.Initialize(entity.车辆费用实体, entity);
                    }
                    entity.车辆编号 = entity.车辆费用实体 == null ? null : entity.车辆费用实体.车辆编号;
                }

                if (entity.费用归属 == 费用归属.车主 && entity.相关人编号 == null)
                {
                    if (entity.车辆费用实体 == null)
                    {
                        entity.车辆费用实体 = entity.费用实体 as 车辆费用实体;
                    }
                    else
                    {
                        e.Repository.Initialize(entity.车辆费用实体, entity);
                    }
                    entity.相关人编号 = entity.车辆费用实体.车主编号;
                }
            }
        }
Beispiel #2
0
        public static void 车辆管理_生成全部费用(GeneratedArchiveOperationForm masterForm)
        {
            if (MessageForm.ShowYesNo("是否生产当前所有费用?","提示"))
            {
                IList list = masterForm.DisplayManager.Items;
                using (IRepository rep = ServiceProvider.GetService<IRepositoryFactory>().GenerateRepository<非业务车辆费用>())
                {
                    非业务车辆费用Dao dao = new 非业务车辆费用Dao();
                    rep.BeginTransaction();
                    foreach (object i in list)
                    {
                        非业务车辆费用 fy_dw = new 非业务车辆费用();
                        非业务车辆费用 fy_cz = new 非业务车辆费用();
                        if (i is 车辆资产)
                        {
                            车辆资产 item = i as 车辆资产;
                            if (item.Submitted)
                            {
                                continue;
                            }
                            fy_dw.费用实体 = item;
                            fy_dw.收付标志 = Hd.Model.收付标志.付;
                            fy_dw.费用归属 = Cd.Model.费用归属.对外;
                            fy_dw.相关人编号 = "900031";
                            fy_dw.费用项编号 = "387";
                            fy_dw.金额 = item.金额;
                            if (item.车主编号 != "900001")
                            {
                                //fy_dw.车辆承担 = false;
                                fy_cz.费用实体 = item;
                                fy_cz.收付标志 = Hd.Model.收付标志.收;
                                fy_cz.费用归属 = Cd.Model.费用归属.车主;
                                fy_cz.相关人编号 = item.车主编号;
                                fy_cz.费用项编号 = "387";
                                fy_cz.金额 = item.金额;
                                dao.Save(rep, fy_cz);
                            }
                            dao.Save(rep, fy_dw);
                        }
                        else if (i is 车辆保险)
                        {
                            车辆保险 item = i as 车辆保险;
                            if (item.Submitted)
                            {
                                continue;
                            }
                            fy_dw.费用实体 = item;
                            fy_dw.收付标志 = Hd.Model.收付标志.付;
                            fy_dw.费用归属 = Cd.Model.费用归属.对外;
                            fy_dw.相关人编号 = "900031";
                            fy_dw.费用项编号 = "387";
                            fy_dw.金额 = item.金额;
                            dao.Save(rep, fy_dw);
                        }
                        else if (i is 车辆维修)
                        {
                            车辆维修 item = i as 车辆维修;
                            if (item.Submitted)
                            {
                                continue;
                            }
                            fy_dw.费用实体 = item;
                            fy_dw.收付标志 = Hd.Model.收付标志.付;
                            fy_dw.费用归属 = Cd.Model.费用归属.对外;
                            fy_dw.相关人编号 = item.相关人编号;
                            fy_dw.费用项编号 = "383";
                            fy_dw.金额 = item.金额;
                            if (item.车主编号 != "900001")
                            {
                                ///fy_dw.车辆承担 = false;
                                fy_cz.费用实体 = item;
                                fy_cz.收付标志 = Hd.Model.收付标志.收;
                                fy_cz.费用归属 = Cd.Model.费用归属.车主;
                                fy_cz.相关人编号 = item.车主编号;
                                fy_cz.费用项编号 = "383";
                                fy_cz.金额 = item.金额;
                                dao.Save(rep, fy_cz);
                            }
                            dao.Save(rep, fy_dw);
                        }
                        else if (i is 车辆加油)
                        {
                            车辆加油 item = i as 车辆加油;
                            if (item.Submitted)
                            {
                                continue;
                            }
                            fy_dw.费用实体 = item;
                            fy_dw.收付标志 = Hd.Model.收付标志.付;
                            fy_dw.费用归属 = Cd.Model.费用归属.对外;
                            fy_dw.相关人编号 = item.相关人编号;
                            fy_dw.费用项编号 = "204";
                            fy_dw.金额 = item.金额;
                            fy_dw.数量 = item.升数;
                            if (item.车主编号 != "900001")
                            {
                                //fy_dw.车辆承担 = false;
                                fy_cz.费用实体 = item;
                                fy_cz.收付标志 = Hd.Model.收付标志.收;
                                fy_cz.费用归属 = Cd.Model.费用归属.车主;
                                fy_cz.相关人编号 = item.车主编号;
                                fy_cz.费用项编号 = "204";
                                fy_cz.金额 = item.金额;
                                fy_cz.数量 = item.升数;
                                dao.Save(rep, fy_cz);
                            }
                            dao.Save(rep, fy_dw);
                        }
                        else if (i is 车辆机油)
                        {
                            车辆机油 item = i as 车辆机油;
                            if (item.Submitted || item.买卖标志 == 买卖标志.买入)
                            {
                                continue;
                            }
                            fy_dw.费用实体 = item;
                            fy_dw.收付标志 = Hd.Model.收付标志.付;
                            fy_dw.费用归属 = Cd.Model.费用归属.对外;
                            fy_dw.相关人编号 = "900031";
                            fy_dw.费用项编号 = "384";
                            fy_dw.金额 = item.金额;
                            fy_dw.数量 = item.数量;
                            if (item.车主编号 != "900001" && item.买卖标志 == 买卖标志.卖出)
                            {
                                //fy_dw.车辆承担 = false;
                                fy_cz.费用实体 = item;
                                fy_cz.收付标志 = Hd.Model.收付标志.收;
                                fy_cz.费用归属 = Cd.Model.费用归属.车主;
                                fy_cz.相关人编号 = item.车主编号;
                                fy_cz.费用项编号 = "384";
                                fy_cz.金额 = item.金额;
                                fy_cz.数量 = item.数量;
                                dao.Save(rep, fy_cz);
                            }
                            dao.Save(rep, fy_dw);
                        }
                        else if (i is 车辆事故)
                        {
                            车辆事故 item = i as 车辆事故;
                            if (item.Submitted)
                            {
                                continue;
                            }
                            fy_dw.费用实体 = item;
                            fy_dw.费用归属 = Cd.Model.费用归属.对外;
                            fy_dw.收付标志 = Hd.Model.收付标志.收;
                            fy_dw.相关人编号 = item.相关人编号;
                            fy_dw.费用项编号 = "375";
                            fy_dw.金额 = item.金额;
                            dao.Save(rep, fy_dw);
                        }
                        else if (i is 车辆其他)
                        {
                            车辆其他 item = i as 车辆其他;
                            if (item.Submitted)
                            {
                                continue;
                            }
                            fy_dw.费用实体 = item;
                            fy_dw.收付标志 = Hd.Model.收付标志.付;
                            fy_dw.费用归属 = Cd.Model.费用归属.对外;
                            fy_dw.相关人编号 = item.相关人编号;
                            fy_dw.费用项编号 = "234";
                            fy_dw.金额 = item.金额;
                            if (item.车主编号 != "900001")
                            {
                                //fy_dw.车辆承担 = false;
                                fy_cz.费用实体 = item;
                                fy_cz.收付标志 = Hd.Model.收付标志.收;
                                fy_cz.费用归属 = Cd.Model.费用归属.车主;
                                fy_cz.相关人编号 = item.车主编号;
                                fy_cz.费用项编号 = "234";
                                fy_cz.金额 = item.金额;
                                dao.Save(rep, fy_cz);
                            }
                            dao.Save(rep, fy_dw);
                        }
                        else if (i is 车辆库存加油)
                        {
                            车辆库存加油 item = i as 车辆库存加油;
                            if (item.Submitted || item.买卖标志 == 买卖标志.买入 || item.车辆编号 == null)
                            {
                                continue;
                            }

                            string czyj = ServiceProvider.GetService<IDefinition>().TryGetValue("车主油价");
                            string cbyj = ServiceProvider.GetService<IDefinition>().TryGetValue("成本油价");
                            string jsyyj = ServiceProvider.GetService<IDefinition>().TryGetValue("驾驶员油价");

                            item.车辆 = rep.Get<车辆>(item.车辆编号);
                            fy_dw.费用实体 = item;
                            fy_dw.收付标志 = Hd.Model.收付标志.付;
                            fy_dw.费用归属 = Cd.Model.费用归属.对外;
                            fy_dw.相关人编号 = "900031";
                            fy_dw.费用项编号 = "204";
                            fy_dw.数量 = item.数量;
                            // 根据成本油价计算金额
                            if (cbyj != null && Convert.ToDecimal(cbyj) != 0)
                            {
                                fy_dw.金额 = item.数量 * Convert.ToDecimal(cbyj);
                            }
                            if (item.车辆编号 != null && item.车辆.车辆类别 == 车辆类别.挂靠车 && item.买卖标志 == 买卖标志.卖出)
                            {
                                //fy_dw.车辆承担 = false;
                                fy_cz.费用实体 = item;
                                fy_cz.收付标志 = Hd.Model.收付标志.收;
                                fy_cz.费用归属 = Cd.Model.费用归属.车主;
                                fy_cz.相关人编号 = item.车主编号;
                                fy_cz.费用项编号 = "204";
                                fy_cz.数量 = item.数量;
                                // 根据油价计算
                                if (czyj != null && Convert.ToDecimal(czyj) != 0)
                                {
                                    fy_cz.金额 = item.数量 * Convert.ToDecimal(czyj);
                                }
                                dao.Save(rep, fy_cz);
                            }
                            if (item.车辆编号 != null && (item.车辆.车辆类别 == 车辆类别.代管车 || item.车辆.车辆类别 == 车辆类别.自有车) && item.买卖标志 == 买卖标志.卖出)
                            {
                                //fy_dw.车辆承担 = false;
                                fy_cz.费用实体 = item;
                                fy_cz.收付标志 = Hd.Model.收付标志.收;
                                fy_cz.费用归属 = Cd.Model.费用归属.驾驶员;
                                fy_cz.相关人编号 = item.驾驶员编号;
                                fy_cz.费用项编号 = "204";
                                fy_cz.数量 = item.数量;
                                // 根据油价计算
                                if (jsyyj != null && Convert.ToDecimal(jsyyj) != 0)
                                {
                                    fy_cz.金额 = item.数量 * Convert.ToDecimal(jsyyj);
                                }
                                dao.Save(rep, fy_cz);
                            }
                            dao.Save(rep, fy_dw);
                        }
                        else
                        {
                            rep.RollbackTransaction();
                            System.Diagnostics.Debug.Assert(false, "费用实体类型不是要求类型,而是" + i.GetType().ToString());
                        }
                    }
                    rep.CommitTransaction();
                }
                masterForm.DisplayManager.DisplayCurrent();
            }
        }