private void SetTopGrid() { if (用途分类.SelectedDataValue == null) { return; } 凭证用途分类 ytfl = (凭证用途分类)用途分类.SelectedDataValue; if (ytfl == 凭证用途分类.业务应付) { if (付款对象.SelectedDataValue == null) { return; } ArchiveFormFactory.SetupDataUnboundGrid(grdTop, ADInfoBll.Instance.GetWindowTabInfo("资金票据_应收应付当前")); grdTop.DisplayManager.SearchManager.LoadData(SearchExpression.And(SearchExpression.Eq("相关人", 付款对象.SelectedDataValue), SearchExpression.Eq("收付标志", Hd.Model.收付标志.付)), null); } }
public override bool DoSave() { //if (!this.ControlManager.CheckControlValue()) //{ // return false; //} this.ValidateChildren(); if (!this.ControlManager.SaveCurrent()) { return(false); } 凭证 pz = this.ControlManager.DisplayManager.CurrentItem as 凭证; pz.操作人 = "会计"; using (var rep = ServiceProvider.GetService <IRepositoryFactory>().GenerateRepository <Hd.Model.凭证>() as Feng.NH.INHibernateRepository) { try { rep.BeginTransaction(); decimal sum = 0; pz.凭证费用明细 = new List <凭证费用明细>(); foreach (Xceed.Grid.DataRow row in grdFymx.DataRows) { decimal je = Feng.Utils.ConvertHelper.ToDecimal(row.Cells["金额"].Value).Value; sum += je; 凭证费用明细 pzfymx = new 凭证费用明细(); pzfymx.备注 = (string)row.Cells["备注"].Value; pzfymx.金额 = je; pzfymx.凭证 = pz; pzfymx.凭证费用类别编号 = (int?)row.Cells["凭证费用类别"].Value; pzfymx.收付标志 = Hd.Model.收付标志.付; pzfymx.相关人编号 = (string)付款对象.SelectedDataValue; pzfymx.业务类型编号 = (int?)row.Cells["业务分类"].Value; pzfymx.费用项编号 = (string)row.Cells["费用项"].Value; pzfymx.费用 = new List <费用>(); pzfymx.结算期限 = (DateTime?)row.Cells["结算期限"].Value; 凭证用途分类 ytfl = (凭证用途分类)用途分类.SelectedDataValue; if (ytfl == 凭证用途分类.业务应付) // 业务应付 { pzfymx.业务类型编号 = (int?)业务分类.SelectedDataValue; } else if (ytfl == 凭证用途分类.其他应付) { pzfymx.业务类型编号 = 111; pzfymx.费用项编号 = "002"; } else if (ytfl == 凭证用途分类.其他报销) { pzfymx.费用项编号 = (string)row.Cells["费用项"].Value; } else if (ytfl == 凭证用途分类.业务报销) { 普通票 piao = null; 普通箱 xiang = null; piao = rep.UniqueResult <Hd.Model.普通票>(NHibernate.Criterion.DetachedCriteria.For <Hd.Model.普通票>() .Add(NHibernate.Criterion.Expression.Eq("货代自编号", row.Cells["自编号"].Value))); if (piao == null) { throw new InvalidUserOperationException("自编号" + (string)row.Cells["自编号"].Value + "输入有误,请重新输入!"); } switch (业务分类.SelectedDataValue.ToString()) { case "11": using (var rep2 = ServiceProvider.GetService <IRepositoryFactory>().GenerateRepository <Hd.Model.Jk.进口箱>() as Feng.NH.INHibernateRepository) { if (row.Cells["箱号"].Value != null) { xiang = rep2.UniqueResult <Hd.Model.Jk.进口箱>(NHibernate.Criterion.DetachedCriteria.For <Hd.Model.Jk.进口箱>() .Add(NHibernate.Criterion.Expression.Eq("箱号", row.Cells["箱号"].Value)) .CreateCriteria("票") .Add(NHibernate.Criterion.Expression.Eq("货代自编号", row.Cells["自编号"].Value))); if (xiang == null) { throw new InvalidUserOperationException("箱号" + (string)row.Cells["箱号"].Value + "输入有误,请重新输入!"); } } } break; case "15": using (var rep2 = ServiceProvider.GetService <IRepositoryFactory>().GenerateRepository <Hd.Model.Jk.进口箱>() as Feng.NH.INHibernateRepository) { //piao = rep2.Session.CreateCriteria<Hd.Model.普通票>() // .Add(NHibernate.Criterion.Expression.Eq("货代自编号", row.Cells["自编号"].Value)) // .UniqueResult<Hd.Model.普通票>(); //if (piao == null) //{ // throw new InvalidUserOperationException("自编号" + (string)row.Cells["自编号"].Value + "输入有误,请重新输入!"); //} if (row.Cells["箱号"].Value != null) { xiang = rep2.UniqueResult <Hd.Model.Nmcg.内贸出港箱>(NHibernate.Criterion.DetachedCriteria.For <Hd.Model.Nmcg.内贸出港箱>() .Add(NHibernate.Criterion.Expression.Eq("箱号", row.Cells["箱号"].Value)) .CreateCriteria("票") .Add(NHibernate.Criterion.Expression.Eq("货代自编号", row.Cells["自编号"].Value))); if (xiang == null) { throw new InvalidUserOperationException("箱号" + (string)row.Cells["箱号"].Value + "输入有误,请重新输入!"); } } } break; case "45": using (var rep2 = ServiceProvider.GetService <IRepositoryFactory>().GenerateRepository <Hd.Model.Jk.进口票>() as Feng.NH.INHibernateRepository) { //piao = rep2.Session.CreateCriteria<Hd.Model.普通票>() // .Add(NHibernate.Criterion.Expression.Eq("货代自编号", row.Cells["自编号"].Value)) // .UniqueResult<Hd.Model.普通票>(); //if (piao == null) //{ // throw new InvalidUserOperationException("自编号" + (string)row.Cells["自编号"].Value + "输入有误,请重新输入!"); //} if (row.Cells["箱号"].Value != null) { xiang = rep2.UniqueResult <Hd.Model.Jk2.进口其他业务箱>(NHibernate.Criterion.DetachedCriteria.For <Hd.Model.Jk2.进口其他业务箱>() .Add(NHibernate.Criterion.Expression.Eq("箱号", row.Cells["箱号"].Value)) .CreateCriteria("票") .Add(NHibernate.Criterion.Expression.Eq("货代自编号", row.Cells["自编号"].Value))); if (xiang == null) { throw new InvalidUserOperationException("箱号" + (string)row.Cells["箱号"].Value + "输入有误,请重新输入!"); } } } break; default: throw new ArgumentException("不合理的业务类型分类!"); } NHibernate.Criterion.DetachedCriteria cri = NHibernate.Criterion.DetachedCriteria.For <业务费用>() .Add(NHibernate.Criterion.Expression.Eq("票.ID", piao.ID)) .Add(NHibernate.Criterion.Expression.Eq("费用项编号", row.Cells["费用项"].Value)) .Add(NHibernate.Criterion.Expression.Eq("收付标志", Hd.Model.收付标志.付)); if (xiang != null) { cri = cri.Add(NHibernate.Criterion.Expression.Eq("箱.ID", xiang.ID)); } else { cri = cri.Add(NHibernate.Criterion.Expression.IsNull("箱")); } IList <业务费用> list = rep.List <业务费用>(cri); cri = NHibernate.Criterion.DetachedCriteria.For <费用信息>() .Add(NHibernate.Criterion.Expression.Eq("票.ID", piao.ID)) .Add(NHibernate.Criterion.Expression.Eq("费用项编号", row.Cells["费用项"].Value)); IList <费用信息> fyxxs = rep.List <费用信息>(cri); if (fyxxs.Count > 0) { if (!fyxxs[0].完全标志付) { fyxxs[0].完全标志付 = true; (new HdBaseDao <费用信息>()).Update(rep, fyxxs[0]); } else { throw new InvalidUserOperationException("货代自编号" + piao.货代自编号 + "费用项" + row.Cells["费用项"].Value.ToString() + "已打完全标志,不能修改费用!"); } } bool exist = false; if (list.Count > 0) { foreach (业务费用 i in list) { if (i.金额 == je && i.相关人编号 == pzfymx.相关人编号 && i.凭证费用明细 == null) { i.凭证费用明细 = pzfymx; (new 业务费用Dao()).Update(rep, i); pzfymx.费用.Add(i); exist = true; break; } } } if (!exist) { if (list.Count > 1) { throw new InvalidUserOperationException("货代自编号" + piao.货代自编号 + "费用项" + row.Cells["费用项"].Value.ToString() + "已存在多条费用,且无费用金额一致,请先修改一致!"); } else if (list.Count == 0) { 业务费用 fy = new 业务费用(); fy.备注 = (string)row.Cells["备注"].Value; fy.费用实体 = piao; fy.费用项编号 = (string)row.Cells["费用项"].Value; fy.金额 = Feng.Utils.ConvertHelper.ToDecimal(row.Cells["金额"].Value).Value; fy.票 = piao; fy.凭证费用明细 = pzfymx; fy.收付标志 = Hd.Model.收付标志.付; fy.相关人编号 = (string)付款对象.SelectedDataValue; if (xiang != null) { fy.箱 = xiang; fy.箱Id = xiang.ID; } (new 业务费用Dao()).Save(rep, fy); pzfymx.费用.Add(fy); } else// if (list.Count == 1) { if (list[0].相关人编号 == pzfymx.相关人编号 && list[0].凭证费用明细 == null) { if (MessageForm.ShowYesNo("货代自编号" + piao.货代自编号 + "费用项" + row.Cells["费用项"].Value.ToString() + "已存在费用,且费用金额不符,是否添加调节款?", "确认")) { 调节业务款 tjk = new 调节业务款(); tjk.备注 = (string)row.Cells["备注"].Value; tjk.费用实体 = piao; tjk.费用项编号 = (string)row.Cells["费用项"].Value; tjk.金额 = Feng.Utils.ConvertHelper.ToDecimal(row.Cells["金额"].Value).Value; tjk.票 = piao; tjk.凭证费用明细 = pzfymx; tjk.收付标志 = Hd.Model.收付标志.付; tjk.相关人编号 = (string)付款对象.SelectedDataValue; if (xiang != null) { tjk.箱 = xiang; tjk.箱Id = xiang.ID; } (new 费用Dao()).Save(rep, tjk); pzfymx.费用.Add(tjk); } else { throw new InvalidUserOperationException("请重新填写货代自编号!"); } } else { throw new InvalidUserOperationException("货代自编号" + piao.货代自编号 + "费用项" + row.Cells["费用项"].Value.ToString() + "已存在的一条费用相关人不符或已经出国凭证,请先修改一致!"); } } } } else { throw new ArgumentException("不合理的凭证用途分类!"); } pz.凭证费用明细.Add(pzfymx); } pz.会计编号 = SystemConfiguration.UserName; pz.会计金额 = sum; pz.金额.币制编号 = "CNY"; pz.金额.数额 = pz.会计金额; pz.凭证类别 = 凭证类别.付款凭证; pz.相关人编号 = (string)付款对象.SelectedDataValue; pz.自动手工标志 = 自动手工标志.手工; (new 凭证Dao()).Save(rep, pz); foreach (凭证费用明细 pzfymx in pz.凭证费用明细) { (new HdBaseDao <凭证费用明细>()).Save(rep, pzfymx); } (new 凭证Dao()).Submit(rep, pz); rep.CommitTransaction(); if (this.ControlManager.ControlCheckExceptionProcess != null) { this.ControlManager.ControlCheckExceptionProcess.ClearAllError(); } this.ControlManager.State = StateType.View; this.ControlManager.OnCurrentItemChanged(); // don't save to database this.ControlManager.EndEdit(false); return(true); } catch (Exception ex) { rep.RollbackTransaction(); ServiceProvider.GetService <IExceptionProcess>().ProcessWithNotify(ex); return(false); } } }
void 用途分类_SelectedDataValueChanged(object sender, EventArgs e) { //业务分类.ReadOnly = false; label10.Text = "业务分类"; 业务分类.Control.Text = string.Empty; MyGrid.CancelEditCurrentDataRow(grdFymx); grdFymx.DataRows.Clear(); grdFymx.VisibleColumns(false); if (用途分类.SelectedDataValue == null) { return; } 凭证用途分类 ytfl = (凭证用途分类)用途分类.SelectedDataValue; int?pzfylb = null; string[] neededColumns = null; if (ytfl == 凭证用途分类.业务应付) { pzfylb = 102; // 业务应付 neededColumns = new string[] { "费用项", "金额", "支付方式要求", "备注" }; } else if (ytfl == 凭证用途分类.业务报销) // 业务报销 { pzfylb = 102; neededColumns = new string[] { "费用项", "金额", "自编号", "箱号" }; } else if (ytfl == 凭证用途分类.其他应付) //其他应付 { // "费用项" = "002" neededColumns = new string[] { "金额", "支付方式要求", "备注" }; } //else if (ytfl == 凭证用途分类.代收代付) // 借款套现押金 //{ // // "费用项" = "012" // // no pzfylb; // neededColumns = new string[] { "凭证费用类别", "业务分类", "金额", "结算期限", "支付方式要求", "备注" }; //} else if (ytfl == 凭证用途分类.其他报销) { // no pzfylb; neededColumns = new string[] { "凭证费用类别", "费用项", "金额", "支付方式要求", "备注" }; } foreach (Xceed.Grid.Column column in grdFymx.Columns) { if (Array.IndexOf <string>(neededColumns, column.FieldName) != -1) { column.Visible = true; column.ReadOnly = false; } else { column.Visible = false; column.ReadOnly = true; } } grdFymx.AutoAdjustColumnWidth(); if (pzfylb.HasValue) { //// only for 报销 //NameValueMappingCollection.Instance["信息_凭证业务类型_动态"].Params["@收付标志"] = Hd.Model.收付标志.付; //NameValueMappingCollection.Instance["信息_凭证业务类型_动态"].Params["@凭证费用类别"] = pzfylb; //NameValueMappingCollection.Instance.Reload("信息_凭证业务类型_动态"); //(业务分类.Control as MyComboBox).RefreshData(); label10.Text = "业务分类"; (业务分类.Control as MyComboBox).ValidateText = true; 业务分类.ReadOnly = false; 用途分类.Focus(); } else { label10.Text = "部门"; (业务分类.Control as MyComboBox).TextBoxArea.Text = "进口部"; (业务分类.Control as MyComboBox).ValidateText = false; 业务分类.ReadOnly = true; 用途分类.Focus(); } //if (!业务分类.ReadOnly) //{ // DataTable dt = NameValueMappingCollection.Instance.DataTable("信息_凭证业务类型_动态"); // if (dt.Rows.Count == 0) // { // 业务分类.ReadOnly = true; // } // else // { // 业务分类.ReadOnly = false; // if (dt.Rows.Count == 0) // { // 业务分类.SelectedDataValue = dt.Rows[0][NameValueMappingCollection.Instance["信息_凭证业务类型_动态"].ValueMember]; // } // } // //(业务分类.Control as MyComboBox).SetDataBinding( // // DbHelper.Instance.ExecuteDataTable("SELECT 代码, 类型 FROM 信息_凭证业务分类 WHERE 付 = 'true' AND 支出类别 = '" + ytfl + "'"), string.Empty); //} //else //{ // 业务分类.SelectedDataValue = null; //} //if (!grdFymx.Columns["凭证费用类别"].ReadOnly) //{ // //if (ytfl != "999") // { // NameValueMappingCollection.Instance["信息_凭证费用类别_动态"].Params["@收付标志"] = Hd.Model.收付标志.付; // NameValueMappingCollection.Instance.Reload("信息_凭证费用类别_动态"); // NameValueMappingCollection.Instance["信息_凭证费用项_动态"].Params["@收付标志"] = Hd.Model.收付标志.付; // NameValueMappingCollection.Instance["信息_凭证费用项_动态"].Params["@凭证费用类别"] = ytfl; // NameValueMappingCollection.Instance.Reload("信息_凭证费用项_动态"); // } // //else // //{ // //} // //(grdFymx.Columns["费用项"].CellEditorManager as Feng.Grid.Editors.MyComboBoxEditor).SetDataBinding( // // DbHelper.Instance.ExecuteDataTable("SELECT 编号, 名称 FROM 信息_凭证费用项 WHERE 付 = 'true' AND 凭证支出类别 = '" + ytfl + "'"), string.Empty); //} 用途分类.ReadOnly = true; grdFymx.ReadOnly = false; SetTopGrid(); }