Beispiel #1
0
        public static void 生成相同费用(ArchiveOperationForm masterForm)
        {
            if (masterForm.MasterGrid.GridControl.SelectedRows.Count == 0)
            {
                ServiceProvider.GetService <IMessageBox>().ShowWarning("请选择费用!");
                return;
            }
            if (!MessageForm.ShowYesNo("是否要生成选中项相同的费用?", "确认"))
            {
                return;
            }

            int cnt = 0;

            using (IRepository rep = ServiceProvider.GetService <IRepositoryFactory>().GenerateRepository <非业务费用>())
            {
                foreach (Xceed.Grid.Row row in masterForm.MasterGrid.GridControl.SelectedRows)
                {
                    Xceed.Grid.DataRow dataRow = row as Xceed.Grid.DataRow;
                    if (dataRow == null)
                    {
                        continue;
                    }

                    非业务费用 entity = dataRow.Tag as 非业务费用;

                    if (entity.非业务费用实体.费用实体类型编号 != 37 /*费用实体类型.其他非业务*/)
                    {
                        continue;
                    }

                    rep.Initialize(entity.费用实体, entity);

                    非业务费用 item = new 非业务费用();
                    item.收付标志   = entity.收付标志;
                    item.费用实体   = entity.费用实体;
                    item.费用项编号  = entity.费用项编号;
                    item.费用类别编号 = entity.费用类别编号;
                    item.金额     = entity.金额;
                    item.相关人编号  = entity.相关人编号;

                    object newEntity = masterForm.ControlManager.AddNew();
                    if (newEntity != null)
                    {
                        masterForm.ControlManager.DisplayManager.Items[masterForm.ControlManager.DisplayManager.Position] = item;
                        masterForm.ControlManager.EndEdit();
                        (masterForm.MasterGrid.CurrentRow as Xceed.Grid.DataRow).Cells["费用项编号"].CellEditorManager = dataRow.Cells["费用项编号"].CellEditorManager;
                        cnt++;
                    }
                    else
                    {
                        masterForm.ControlManager.CancelEdit();
                        break;
                    }
                }
            }

            MessageForm.ShowInfo("已生成" + cnt + "条费用!");
        }
Beispiel #2
0
        static void DataRowTemplate_BeginningEdit(object sender, System.ComponentModel.CancelEventArgs e)
        {
            Xceed.Grid.DataRow row = sender as Xceed.Grid.DataRow;

            非业务费用  item   = row.Tag as 非业务费用;
            string filter = "现有费用实体类型 LIKE '%" + item.费用实体.费用实体类型编号 + ",%'";

            row.Cells["费用项编号"].CellEditorManager = GridDataLoad.GetGridComboEditor("费用项_非业务", filter);
        }
Beispiel #3
0
        /// <summary>
        /// 提交
        /// </summary>
        /// <param name="rep"></param>
        /// <param name="entity"></param>
        public override void Submit(IRepository rep, 坏账 entity)
        {
            对账单 dzd = new 对账单();

            dzd.对账单类型  = (int)财务对账单类型.坏账;
            dzd.结束日期   = entity.日期;
            dzd.费用     = new List <费用>();
            dzd.费用项编号  = entity.费用项编号;
            dzd.关账日期   = entity.日期;
            dzd.结算期限   = entity.日期;
            dzd.金额     = -entity.金额;
            dzd.收付标志   = entity.收付标志;
            dzd.送出时间   = entity.日期;
            dzd.相关人编号  = entity.相关人编号;
            dzd.业务类型编号 = entity.业务类型编号;

            dzd.Submitted = true;
            (new HdBaseDao <对账单>()).Save(rep, dzd);

            非业务费用 fy = new 非业务费用();

            fy.费用项编号 = "352";  // 坏账
            fy.费用实体  = entity;
            fy.金额    = entity.金额;
            fy.收付标志  = entity.收付标志 == 收付标志.付 ? 收付标志.收 : 收付标志.付;
            fy.相关人编号 = entity.相关人编号;
            fy.对账单   = dzd;
            (new 非业务费用Dao()).Save(rep, fy);
            dzd.费用.Add(fy);

            entity.费用 = new List <费用>();
            entity.费用.Add(fy);

            应收应付款 ysyfk = new 应收应付款();

            ysyfk.费用项编号  = entity.费用项编号;
            ysyfk.结算期限   = dzd.结算期限.HasValue ? dzd.结算期限.Value : dzd.关账日期.Value;
            ysyfk.金额     = dzd.金额;
            ysyfk.日期     = dzd.关账日期.Value;
            ysyfk.收付标志   = dzd.收付标志;
            ysyfk.相关人编号  = dzd.相关人编号;
            ysyfk.业务类型编号 = entity.业务类型编号;
            ysyfk.应收应付源  = dzd;

            (new HdBaseDao <应收应付款>()).Save(rep, ysyfk);
            dzd.应收应付款 = new List <应收应付款>();
            dzd.应收应付款.Add(ysyfk);

            entity.对账单号      = dzd.编号;
            entity.Submitted = true;
            this.Update(rep, entity);
        }
Beispiel #4
0
        private static IList <费用> GetSelectedFee4Pz(ArchiveOperationForm masterForm)
        {
            IList <费用> list = new List <费用>();

            foreach (Xceed.Grid.Row row in masterForm.MasterGrid.GridControl.SelectedRows)
            {
                Xceed.Grid.DataRow dataRow = row as Xceed.Grid.DataRow;
                if (dataRow == null)
                {
                    continue;
                }
                非业务费用 item = dataRow.Tag as 非业务费用;
                if (item.凭证费用明细 == null)
                {
                    list.Add(item.Clone() as 非业务费用);
                }
            }
            return(list);
        }
Beispiel #5
0
        /// <summary>
        /// 提交
        /// </summary>
        /// <param name="rep"></param>
        /// <param name="entity"></param>
        public override void Submit(IRepository rep, 工资单 entity)
        {
            if (entity.费用 != null)
            {
                rep.Initialize(entity.费用, entity);
                System.Diagnostics.Debug.Assert(entity.费用.Count <= 1, "工资单费用最多只有一条!");
            }
            else
            {
                entity.费用 = new List <费用>();
            }
            非业务费用 fy;

            if (entity.费用.Count == 0)
            {
                fy       = new 非业务费用();
                fy.费用实体  = entity;
                fy.费用项编号 = "341";
                fy.金额    = entity.工资小计;
                fy.收付标志  = 收付标志.付;
                fy.相关人编号 = entity.员工编号;
                (new 非业务费用Dao()).Save(rep, fy);

                entity.费用.Add(fy);
            }
            else
            {
                fy       = entity.费用[0] as 非业务费用;
                fy.金额    = entity.工资小计;
                fy.相关人编号 = entity.员工编号;
                (new 非业务费用Dao()).Update(rep, fy);
            }

            entity.Submitted = true;
            this.Update(rep, entity);

            entity.登记金额 = entity.工资小计;
        }
Beispiel #6
0
 public static void 固定资产_生产全部费用(GeneratedArchiveOperationForm masterForm)
 {
     if (MessageForm.ShowYesNo("是否生产当前所有费用?", "提示"))
     {
         IList list = masterForm.DisplayManager.Items;
         using (IRepository rep = ServiceProvider.GetService <IRepositoryFactory>().GenerateRepository <固定资产>())
         {
             rep.BeginTransaction();
             foreach (object i in list)
             {
                 非业务费用 fy_dw = new 非业务费用();
                 if (i is 固定资产)
                 {
                     固定资产 item = i as 固定资产;
                     if (item.Submitted)
                     {
                         continue;
                     }
                     fy_dw.费用实体   = item;
                     fy_dw.收付标志   = Hd.Model.收付标志.付;
                     fy_dw.相关人编号  = "900031";
                     fy_dw.费用项编号  = "387";
                     fy_dw.金额     = item.月折旧额;
                     fy_dw.费用类别编号 = 186;
                     new 非业务费用Dao().Save(rep, fy_dw);
                 }
                 else
                 {
                     System.Diagnostics.Debug.Assert(false, "费用实体类型不是要求类型,而是" + i.GetType().ToString());
                 }
             }
             rep.CommitTransaction();
         }
         masterForm.DisplayManager.DisplayCurrent();
     }
 }
Beispiel #7
0
        public static void 批量添加费用(ArchiveOperationForm masterForm)
        {
            IControlManager cm = masterForm.ControlManager;

            ArchiveSelectForm selectForm = new ArchiveSelectForm("批量添加非业务费用");

            if (selectForm.ShowDialog() == DialogResult.OK)
            {
                ArchiveCheckForm form = selectForm.SelectedForm as ArchiveCheckForm;

                if (form != null && form.ShowDialog() == DialogResult.OK)
                {
                    foreach (object i in form.SelectedEntites)
                    {
                        非业务费用 newItem = new 非业务费用();

                        if (i is 费用实体)
                        {
                            newItem.费用实体 = i as 费用实体;
                        }
                        else
                        {
                            System.Diagnostics.Debug.Assert(false, "选中的费用实体类型不是要求类型,而是" + i.GetType().ToString());
                        }

                        cm.AddNew();
                        cm.DisplayManager.Items[cm.DisplayManager.Position] = newItem;
                        cm.EndEdit();


                        //string filter = "现有费用实体类型 LIKE '%" + (int)item.费用实体.费用实体类型 + ",%'";
                        //masterForm.ActiveGrid.CurrentDataRow.Cells["费用项编号"].CellEditorManager = ControlDataLoad.GetGridComboEditor("费用项_非业务", filter);
                    }
                }
            }
        }
Beispiel #8
0
        public static void  择固定资产(ArchiveOperationForm masterForm)
        {
            Dictionary <string, object> dict = new Dictionary <string, object>();
            ArchiveCheckForm            form = ProcessSelect.Execute((masterForm.ArchiveDetailForm as IDisplayManagerContainer).DisplayManager, "选择_非业务财务_固定资产折旧", dict);

            if (form != null)
            {
                IControlManager detailCm = (((IArchiveDetailFormWithDetailGrids)masterForm.ArchiveDetailForm).DetailGrids[0] as IArchiveGrid).ControlManager;

                using (var rep = ServiceProvider.GetService <IRepositoryFactory>().GenerateRepository <非业务费用>())
                {
                    foreach (object i in form.SelectedEntites)
                    {
                        非业务费用 item = i as 非业务费用;
                        item.对账单 = masterForm.DisplayManager.CurrentItem as 对账单;
                        detailCm.AddNew();
                        detailCm.DisplayManager.Items[detailCm.DisplayManager.Position] = item;
                        detailCm.EndEdit();
                    }

                    //foreach (object i in form.SelectedEntites)
                    //{
                    //    非业务费用 item = new 非业务费用();
                    //    DataRowView row = i as DataRowView;
                    //    item.费用实体 = rep.Get<费用实体>((Guid)row["Id"]);
                    //    item.相关人编号 = masterForm.ControlManager.DisplayManager.DataControls["相关人编号"].SelectedDataValue.ToString();
                    //    item.费用项编号 = "387";        // 固定资产折旧
                    //    item.收付标志 = 收付标志.付;

                    //    detailCm.AddNew();
                    //    detailCm.DisplayManager.Items[detailCm.DisplayManager.Position] = item;
                    //    detailCm.EndEdit();
                    //}
                }
            }
        }
Beispiel #9
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.应收应付类型 == 应收应付类型.其他)
                {
                }
            }
        }
Beispiel #10
0
        void 承兑汇票Bll_EntityOperating(object sender, OperateArgs <承兑汇票> e)
        {
            switch (e.OperateType)
            {
            case OperateType.Update:
                if (e.Entity.托收贴现.HasValue)
                {
                    if (e.Entity.返回方式.HasValue)
                    {
                        e.Repository.Initialize(e.Entity.费用, e.Entity);
                        if (e.Entity.费用.Count == 0)
                        {
                            decimal?txf = e.Entity.金额 - e.Entity.返回金额;
                            if (!ServiceProvider.GetService <IMessageBox>().ShowYesNo("贴息费为" + txf.Value.ToString("N2") + "元,是否正确?", "确认"))
                            {
                                throw new InvalidUserOperationException("金额填写错误,请重新填写!");
                            }

                            非业务费用 fee = new 非业务费用();
                            fee.费用实体  = e.Entity;
                            fee.费用项编号 = "333";     // 贴息费
                            fee.金额    = e.Entity.金额 - e.Entity.返回金额;
                            fee.收付标志  = 收付标志.付;
                            fee.相关人编号 = e.Entity.经办人编号;

                            凭证 pz = new 凭证();
                            pz.Submitted = true;
                            pz.备注        = e.Entity.备注;
                            pz.出纳编号      = SystemConfiguration.UserName; // e.Entity.返回经手人编号;
                            pz.收支状态      = true;
                            pz.会计编号      = SystemConfiguration.UserName; // e.Entity.返回经手人编号;
                            pz.会计金额      = fee.金额;
                            pz.金额.币制编号   = "CNY";
                            pz.金额.数额     = pz.会计金额.Value;
                            pz.凭证类别      = 凭证类别.付款凭证;
                            pz.日期        = e.Entity.返回时间.Value;
                            pz.审核人编号     = null;
                            pz.相关人编号     = fee.相关人编号;
                            pz.自动手工标志    = 自动手工标志.承兑汇票;
                            pz.凭证费用明细    = new List <凭证费用明细>();
                            pz.凭证收支明细    = new List <凭证收支明细>();
                            pz.审核状态      = true;

                            凭证费用明细 pzs1 = new 凭证费用明细();
                            pzs1.费用项编号 = "333";
                            pzs1.金额    = pz.会计金额;
                            pzs1.凭证    = pz;

                            pzs1.收付标志  = 收付标志.付;
                            pzs1.相关人编号 = pz.相关人编号;
                            pzs1.费用    = new List <费用>();

                            pzs1.费用.Add(fee);
                            fee.凭证费用明细 = pzs1;

                            pz.凭证费用明细.Add(pzs1);


                            凭证收支明细 pzs2 = new 凭证收支明细();
                            pzs2.凭证    = pz;
                            pzs2.金额    = e.Entity.金额;
                            pzs2.收付标志  = 收付标志.付;
                            pzs2.收付款方式 = 收付款方式.银行承兑汇票;
                            pzs2.票据号码  = e.Entity.票据号码;
                            pz.凭证收支明细.Add(pzs2);

                            凭证收支明细 pzs3 = new 凭证收支明细();
                            pzs3.凭证   = pz;
                            pzs3.金额   = e.Entity.返回金额;
                            pzs3.收付标志 = 收付标志.收;
                            if (e.Entity.返回方式.Value == 承兑汇票返回方式.银行)
                            {
                                pzs3.收付款方式  = 收付款方式.银行收付;
                                pzs3.银行账户编号 = e.Entity.入款账户编号;
                            }
                            else
                            {
                                pzs3.收付款方式 = 收付款方式.现金;
                            }
                            pz.凭证收支明细.Add(pzs3);


                            (new HdBaseDao <凭证>()).Save(e.Repository, pz);
                            (new HdBaseDao <凭证费用明细>()).Save(e.Repository, pzs1);
                            (new HdBaseDao <凭证收支明细>()).Save(e.Repository, pzs2);
                            (new HdBaseDao <凭证收支明细>()).Save(e.Repository, pzs3);

                            (new 非业务费用Dao()).Save(e.Repository, fee);
                            e.Entity.费用.Add(fee);
                        }
                    }
                    else
                    {
                        e.Repository.Initialize(e.Entity.费用, e.Entity);
                        System.Diagnostics.Debug.Assert(e.Entity.费用.Count <= 1, "承兑汇票费用只有贴息费一项!");
                        if (e.Entity.费用.Count == 1)
                        {
                            非业务费用  fee  = e.Entity.费用[0] as 非业务费用;
                            凭证费用明细 pzs1 = fee.凭证费用明细;
                            if (pzs1 != null)
                            {
                                凭证 pz = pzs1.凭证;
                                e.Repository.Initialize(pz.凭证收支明细, pz);
                                foreach (凭证收支明细 pzs2 in pz.凭证收支明细)
                                {
                                    (new HdBaseDao <凭证收支明细>()).Delete(e.Repository, pzs2);
                                }
                                pz.Submitted = false;
                                pz.是否作废      = true;
                                pz.审核状态      = false;
                                pz.收支状态      = false;
                                (new HdBaseDao <凭证>()).Update(e.Repository, pz);

                                (new HdBaseDao <凭证费用明细>()).Update(e.Repository, pzs1);
                            }

                            fee.凭证费用明细 = null;
                            (new 非业务费用Dao()).Delete(e.Repository, fee);
                            e.Entity.费用.Remove(e.Entity.费用[0]);
                        }
                    }
                }
                break;
            }
        }