/// <summary> /// 结算维修单 /// </summary> /// <param name="model"></param> public void Settlement(RepairSettlementModel model) { if (model == null) { return; } if (model.SettlementAmount <= 0) { throw new Exception("请输入结算金额。"); } var order = Get(model.RepairOrderId); if (order == null) { throw new Exception("维修单不存在。"); } if (order.Status != EnumRepairOrderStatus.Completed) { throw new Exception("只能结算已完工的维修单。"); } if (order.SettlementStatus == EnumSettlementStatus.Completed) { throw new Exception("只能结算未结算的维修单。"); } order.SettlementStatus = model.SettlementStatus; order.SettlementAmount = order.SettlementAmount + model.SettlementAmount; if (order.SettlementAmount >= order.Amount && order.SettlementStatus == EnumSettlementStatus.PartCompleted) { throw new Exception("结算金额已超过维修单总金额,不允许部分结算。"); } var financeOrder = new FinanceOrder(); financeOrder.Code = this.FinanceOrderRepository.GetSequenceNextCode(); financeOrder.Amount = model.SettlementAmount; financeOrder.Remark = model.SettlementRemark; this.RepairOrderRepository.Settlement(order, financeOrder); }
/// <summary> /// 结算采购单 /// </summary> /// <param name="model"></param> public void Settlement(PurchaseSettlementModel model) { if (model == null) { return; } if (model.SettlementAmount <= 0) { throw new Exception("请填写结算金额。"); } var order = PurchaseOrderRepository.GetModel(model.PurchaseOrderId); if (order == null) { throw new Exception("采购单不存在。"); } if (order.Status != EnumPurchaseOrderStatus.Completed) { throw new Exception("只能结算已全部到货的采购单。"); } if (order.SettlementStatus != EnumSettlementStatus.Waiting && order.SettlementStatus != EnumSettlementStatus.PartCompleted) { throw new Exception("只能结算待结算的采购单。"); } order.SettlementStatus = model.SettlementStatus; order.SettlementAmount = order.SettlementAmount + model.SettlementAmount; if (order.SettlementAmount >= order.Amount && order.SettlementStatus == EnumSettlementStatus.PartCompleted) { throw new Exception("结算金额已超过采购单总金额,不允许部分结算。"); } var financeOrder = new FinanceOrder(); financeOrder.Code = this.FinanceOrderRepository.GetSequenceNextCode(); financeOrder.Amount = model.SettlementAmount; financeOrder.Remark = model.SettlementRemark; this.PurchaseOrderRepository.Settlement(order, financeOrder); }
public async Task <IActionResult> Post([FromBody] FinanceOrder order) { if (!ModelState.IsValid) { HIHAPIUtility.HandleModalStateError(ModelState); } // Check if (!order.IsValid(this._context)) { throw new BadRequestException("Inputted Object IsValid failed"); } // User String usrName = String.Empty; try { usrName = HIHAPIUtility.GetUserID(this); if (String.IsNullOrEmpty(usrName)) { throw new UnauthorizedAccessException(); } } catch { throw new UnauthorizedAccessException(); } // Check whether User assigned with specified Home ID var hms = _context.HomeMembers.Where(p => p.HomeID == order.HomeID && p.User == usrName).Count(); if (hms <= 0) { throw new UnauthorizedAccessException(); } order.CreatedAt = DateTime.Now; order.Createdby = usrName; _context.FinanceOrder.Add(order); await _context.SaveChangesAsync(); return(Created(order)); }
/// <summary> /// 取消维修单 /// </summary> /// <param name="idList"></param> public void CancelOrder(IList <Guid> idList) { if (idList == null || !idList.Any()) { return; } foreach (var Id in idList) { var model = GetModel(Id); if (model == null) { continue; } var order = new FinanceOrder(); order.Code = this.FinanceOrderRepository.GetSequenceNextCode(); this.RepairOrderRepository.Cancel(model, order); } }
/// <summary> /// 结算销售单 /// </summary> /// <param name="model"></param> public void Settlement(SaleSettlementModel model) { if (model == null) { return; } var order = SaleOrderRepository.GetModel(model.SaleOrderId); if (order == null) { throw new Exception("销售单不存在。"); } if (order.Status != EnumSaleOrderStatus.Outbound) { throw new Exception("只能结算已出库的销售单。"); } if (order.SettlementStatus == EnumSettlementStatus.Completed) { throw new Exception("只能结算未结算的销售单。"); } order.SettlementStatus = model.SettlementStatus; order.SettlementAmount = order.SettlementAmount + model.SettlementAmount; if (order.SettlementAmount >= order.Amount && order.SettlementStatus == EnumSettlementStatus.PartCompleted) { throw new Exception("结算金额已超过销售单总金额,不允许部分结算。"); } var financeOrder = new FinanceOrder(); financeOrder.Code = this.FinanceOrderRepository.GetSequenceNextCode(); financeOrder.Amount = model.SettlementAmount; financeOrder.Remark = model.SettlementRemark; SaleOrderRepository.Settlement(order, financeOrder); }
/// <summary> /// 结算采购单 /// </summary> /// <param name="model"></param> /// <param name="order"></param> public void Settlement(PurchaseOrder model, FinanceOrder order) { using (var context = DbContext.Open()) { using (var tran = context.OpenTransaction()) { // 修改采购单 model.SettlementOn = DateTime.Now; context.Update(model); // 新增财务单 order.Id = order.Id == Guid.Empty ? Guid.NewGuid() : order.Id; order.RelationId = model.Id; order.CreatedOn = model.SettlementOn; order.Type = EnumFinanceOrderType.Purchase; order.Remark = string.Format("结算采购单:{0}", model.Code); context.Insert(order); tran.Commit(); } } }
public async Task <IActionResult> Put([FromODataUri] int key, [FromBody] FinanceOrder update) { if (!ModelState.IsValid) { HIHAPIUtility.HandleModalStateError(ModelState); } if (key != update.ID) { throw new BadRequestException("Inputted ID mismatched"); } // User String usrName = String.Empty; try { usrName = HIHAPIUtility.GetUserID(this); if (String.IsNullOrEmpty(usrName)) { throw new UnauthorizedAccessException(); } } catch { throw new UnauthorizedAccessException(); } // Check whether User assigned with specified Home ID var hms = _context.HomeMembers.Where(p => p.HomeID == update.HomeID && p.User == usrName).Count(); if (hms <= 0) { throw new UnauthorizedAccessException(); } if (!update.IsValid(this._context)) { return(BadRequest()); } update.Updatedby = usrName; update.UpdatedAt = DateTime.Now; _context.Entry(update).State = EntityState.Modified; // SRules. var rulesInDB = _context.FinanceOrderSRule.Where(p => p.OrderID == update.ID).ToList(); foreach (var rule in update.SRule) { var itemindb = rulesInDB.Find(p => p.OrderID == update.ID && p.RuleID == rule.RuleID); if (itemindb == null) { _context.FinanceOrderSRule.Add(rule); } else { // Update _context.Entry(itemindb).State = EntityState.Modified; } } foreach (var rule in rulesInDB) { var nitem = update.SRule.FirstOrDefault(p => p.OrderID == update.ID && p.RuleID == rule.RuleID); if (nitem == null) { _context.FinanceOrderSRule.Remove(rule); } } try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException exp) { if (!_context.FinanceOrder.Any(p => p.ID == key)) { return(NotFound()); } else { throw new DBOperationException(exp.Message); } } return(Updated(update)); }
public async Task TestCase1() { string token = await IdentityServerSetup.Instance.GetAccessTokenForUser(DataSetupUtility.UserA, DataSetupUtility.IntegrationTestPassword); var clientWithAuth = _factory.CreateClient(); clientWithAuth.SetBearerToken(token); // Step 1. Metadata request var metadata = await this._client.GetAsync("/api/$metadata"); Assert.Equal(HttpStatusCode.OK, metadata.StatusCode); var content = await metadata.Content.ReadAsStringAsync(); if (content.Length > 0) { // How to verify metadata? // TBD. } // Step 2. Read Home Defines - Non authority case var req1 = await this._client.GetAsync("/api/HomeDefines"); Assert.Equal(HttpStatusCode.Unauthorized, req1.StatusCode); // Step 3. Read Home Defines - Authority case var resp2 = await clientWithAuth.GetAsync("/api/HomeDefines"); Assert.True(resp2.IsSuccessStatusCode); string result = resp2.Content.ReadAsStringAsync().Result; if (!String.IsNullOrEmpty(result)) { JToken outer = JToken.Parse(result); // Old way to deserialize the arry JArray inner = outer["value"].Value <JArray>(); var dfs = inner.ToObject <List <HomeDefine> >(); Assert.Equal(2, dfs.Count); // For user A, Home1 Is a must var bHome1Exist = false; foreach (var df in dfs) { Assert.NotNull(df); Assert.True(df.ID > 0); Assert.False(String.IsNullOrEmpty(df.Name)); Assert.NotNull(df.HomeMembers); if (df.ID == DataSetupUtility.Home1ID) { bHome1Exist = true; } } Assert.True(bHome1Exist); } // Step 4. Read home defines - with home members resp2 = await clientWithAuth.GetAsync("/api/HomeDefines?$expand=HomeMembers"); Assert.True(resp2.IsSuccessStatusCode); result = resp2.Content.ReadAsStringAsync().Result; if (!String.IsNullOrEmpty(result)) { JToken outer = JToken.Parse(result); JArray inner = outer["value"].Value <JArray>(); var dfs = inner.ToObject <List <HomeDefine> >(); Assert.Equal(2, dfs.Count); // For user A, Home1 Is a must foreach (var df in dfs) { Assert.NotNull(df); Assert.True(df.ID > 0); Assert.False(String.IsNullOrEmpty(df.Name)); Assert.NotNull(df.HomeMembers); var exist = df.HomeMembers.Single(p => p.User == DataSetupUtility.UserA); Assert.NotNull(exist); } } var hid = DataSetupUtility.Home1ID; var cc1id = 0; var ord1id = 0; var acnt1id = 0; var doc1id = 0; var jsetting = new JsonSerializerSettings(); jsetting.Converters.Add(new StringEnumConverter()); jsetting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; jsetting.DateFormatString = "yyyy-MM-dd"; // Step 5. Create a control center var cc = new FinanceControlCenter() { HomeID = hid, Name = "Control Center 1", Comment = "Comment 1", Owner = DataSetupUtility.UserA }; var kjson = JsonConvert.SerializeObject(cc, jsetting); var inputContent = new StringContent(kjson, Encoding.UTF8, "application/json"); resp2 = await clientWithAuth.PostAsync("/api/FinanceControlCenters", inputContent); Assert.True(resp2.IsSuccessStatusCode); result = resp2.Content.ReadAsStringAsync().Result; if (!String.IsNullOrEmpty(result)) { var odatarst = JsonConvert.DeserializeObject <FinanceControlCenter>(result); Assert.Equal(odatarst.Name, cc.Name); Assert.Equal(odatarst.HomeID, cc.HomeID); Assert.Equal(odatarst.Owner, cc.Owner); cc1id = odatarst.ID; Assert.True(cc1id > 0); } // Step 6. Create an order var ord = new FinanceOrder() { HomeID = hid, Name = "Order 1", Comment = "Comment 1" }; var srule = new FinanceOrderSRule() { Order = ord, RuleID = 1, ControlCenterID = cc1id, Precent = 100 }; ord.SRule.Add(srule); kjson = JsonConvert.SerializeObject(ord, jsetting); inputContent = new StringContent(kjson, Encoding.UTF8, "application/json"); resp2 = await clientWithAuth.PostAsync("/api/FinanceOrders", inputContent); Assert.True(resp2.IsSuccessStatusCode); result = resp2.Content.ReadAsStringAsync().Result; if (!String.IsNullOrEmpty(result)) { var odatarst = JsonConvert.DeserializeObject <FinanceOrder>(result); Assert.Equal(odatarst.Name, ord.Name); ord1id = odatarst.ID; Assert.True(ord1id > 0); } // Step 7. Create an account var acnt = new FinanceAccount() { HomeID = DataSetupUtility.Home1ID, Name = "Account 1", CategoryID = FinanceAccountCategory.AccountCategory_Cash, Owner = DataSetupUtility.UserA }; kjson = JsonConvert.SerializeObject(acnt, jsetting); inputContent = new StringContent(kjson, Encoding.UTF8, "application/json"); resp2 = await clientWithAuth.PostAsync("/api/FinanceAccounts", inputContent); Assert.True(resp2.IsSuccessStatusCode); result = resp2.Content.ReadAsStringAsync().Result; if (!String.IsNullOrEmpty(result)) { var odatarst = JsonConvert.DeserializeObject <FinanceAccount>(result); Assert.Equal(odatarst.Name, acnt.Name); acnt1id = odatarst.ID; Assert.True(acnt1id > 0); } // Step 7a. Get all accounts resp2 = await clientWithAuth.GetAsync("/api/FinanceAccounts?hid=" + hid.ToString()); Assert.True(resp2.IsSuccessStatusCode); result = resp2.Content.ReadAsStringAsync().Result; if (!String.IsNullOrEmpty(result)) { //var odatarst = JsonConvert.DeserializeObject<FinanceAccount>(result); //Assert.Equal(odatarst.Name, acnt.Name); //acnt1id = odatarst.ID; //Assert.True(acnt1id > 0); } // Step 7b. Read one specified account resp2 = await clientWithAuth.GetAsync("/api/FinanceAccounts(" + acnt1id.ToString() + ")"); // ?hid=" + hid.ToString()); Assert.True(resp2.IsSuccessStatusCode); result = resp2.Content.ReadAsStringAsync().Result; if (!String.IsNullOrEmpty(result)) { } // Step 8. Post a document var doc = new FinanceDocument() { DocType = FinanceDocumentType.DocType_Normal, HomeID = hid, TranDate = DateTime.Today, Desp = "First document", TranCurr = DataSetupUtility.Home1BaseCurrency, }; var item = new FinanceDocumentItem() { DocumentHeader = doc, ItemID = 1, Desp = "Item 1.1", TranType = 2, // Wage TranAmount = 10, AccountID = acnt1id, ControlCenterID = cc1id, }; doc.Items.Add(item); jsetting.NullValueHandling = NullValueHandling.Ignore; kjson = JsonConvert.SerializeObject(doc, jsetting); inputContent = new StringContent(kjson, Encoding.UTF8, "application/json"); resp2 = await clientWithAuth.PostAsync("/api/FinanceDocuments", inputContent); Assert.True(resp2.IsSuccessStatusCode); result = resp2.Content.ReadAsStringAsync().Result; if (!String.IsNullOrEmpty(result)) { var odatarst = JsonConvert.DeserializeObject <FinanceDocument>(result); Assert.Equal(odatarst.Desp, doc.Desp); doc1id = odatarst.ID; Assert.True(doc1id > 0); } // Step 9. Create an ADP document //var adpcontext = new FinanceADPDocumentCreateContext(); //adpcontext.DocumentInfo = new FinanceDocument(); //adpcontext.AccountInfo = new FinanceAccount(); }
/// <summary> /// 取消采购单 /// </summary> /// <param name="model"></param> /// <param name="order"></param> public void Cancel(PurchaseOrder model, FinanceOrder order) { using (var context = DbContext.Open()) { using (var tran = context.BeginTransaction()) { #region 调整库存 foreach (var item in model.ProductList) { var product = item.Product; if (product == null) { continue; } if (model.Status == EnumPurchaseOrderStatus.Completed) { // 如果是已到货的采购单,需要回滚配件库存 // 插入配件出入库记录 var record = new ProductStockRecord { Id = Guid.NewGuid(), CreatedOn = DateTime.Now, ProductId = product.Id, Quantity = item.Quantity, QuantityBefore = product.Stock, RecordOn = DateTime.Now, RelationId = model.Id, Type = EnumStockRecordType.CancelPurchase, Remark = string.Format("取消采购单:{0}", model.Code), }; context.Insert(record); // 减去配件库存 product.Stock = product.Stock - item.Quantity; context.Update(product); } } #endregion #region 增加财务单 if (model.SettlementAmount > 0) { // 如果已经结算过,增加取消采购单的财务单 order.Id = Guid.NewGuid(); order.Amount = model.SettlementAmount; order.Type = EnumFinanceOrderType.CancelPurchase; order.CreatedOn = DateTime.Now; order.RelationId = model.Id; order.Remark = order.Remark ?? string.Format("取消采购单:{0}", model.Code); context.Insert(order); } #endregion // 删除采购单配件 context.Delete <PurchaseOrderProduct>(rop => rop.PurchaseOrderId == model.Id); // 删除采购单 context.Delete <PurchaseOrder>(ro => ro.Id == model.Id); tran.Commit(); } } }
public async Task TestCase1(int hid, string user) { var context = this.fixture.GetCurrentDataContext(); if (hid == DataSetupUtility.Home1ID) { fixture.InitHome1TestData(context); } if (hid == DataSetupUtility.Home2ID) { fixture.InitHome2TestData(context); } if (hid == DataSetupUtility.Home3ID) { fixture.InitHome3TestData(context); } if (hid == DataSetupUtility.Home4ID) { fixture.InitHome4TestData(context); } if (hid == DataSetupUtility.Home5ID) { fixture.InitHome5TestData(context); } // 1. Prepare dta var userclaim = DataSetupUtility.GetClaimForUser(user); var httpctx = UnitTestUtility.GetDefaultHttpContext(provider, userclaim); var listCCs = context.FinanceControlCenter.Where(p => p.HomeID == hid).ToList <FinanceControlCenter>(); var curhmemquery = (from homemem in context.HomeMembers where homemem.HomeID == hid && homemem.User == user select homemem).FirstOrDefault(); var curhmem = Assert.IsType <HomeMember>(curhmemquery); var existamt = (from homemem in context.HomeMembers join finord in context.FinanceOrder on new { homemem.HomeID, homemem.User } equals new { finord.HomeID, User = user } select finord.ID).ToList().Count(); var existamt_curhome = context.FinanceOrder.Where(p => p.HomeID == hid).Count(); // 2. Create order var control = new FinanceOrdersController(context); control.ControllerContext = new ControllerContext() { HttpContext = httpctx }; var ord = new FinanceOrder() { HomeID = hid, Name = "Order 1", Comment = "Comment 1" }; var srule = new FinanceOrderSRule() { Order = ord, RuleID = 1, ControlCenterID = listCCs[0].ID, Precent = 100 }; ord.SRule.Add(srule); var rst = await control.Post(ord); Assert.NotNull(rst); var rst2 = Assert.IsType <CreatedODataResult <FinanceOrder> >(rst); Assert.Equal(rst2.Entity.Name, ord.Name); var oid = rst2.Entity.ID; Assert.True(oid > 0); ordersCreated.Add(oid); // 3. Read the order out (without Home ID) var queryUrl = "http://localhost/api/FinanceOrders"; var req = UnitTestUtility.GetHttpRequest(httpctx, "GET", queryUrl); var odatacontext = UnitTestUtility.GetODataQueryContext <FinanceOrder>(this.model); var options = UnitTestUtility.GetODataQueryOptions <FinanceOrder>(odatacontext, req); var rst3 = control.Get(options); Assert.NotNull(rst3); if (curhmem.IsChild.HasValue && curhmem.IsChild == true) { existamt = context.FinanceOrder.Where(p => p.HomeID == hid).Count(); Assert.Equal(existamt + 1, rst3.Cast <FinanceOrder>().Count()); } else { Assert.Equal(existamt + 1, rst3.Cast <FinanceOrder>().Count()); } // 3a. Read the order out (with Home ID) queryUrl = "http://localhost/api/FinanceOrders?$filter=HomeID eq " + hid.ToString(); req = UnitTestUtility.GetHttpRequest(httpctx, "GET", queryUrl); //var odatacontext = UnitTestUtility.GetODataQueryContext<FinanceOrder>(this.model); options = UnitTestUtility.GetODataQueryOptions <FinanceOrder>(odatacontext, req); rst3 = control.Get(options); Assert.NotNull(rst3); Assert.Equal(existamt_curhome + 1, rst3.Cast <FinanceOrder>().Count()); // 4a. Change one order - Add new rule var norder = rst2.Entity; norder.Name = "New Order"; norder.SRule.ElementAt(0).Precent = 80; norder.SRule.Add(new FinanceOrderSRule { Order = norder, RuleID = 2, ControlCenterID = listCCs.Count > 1 ? listCCs[1].ID : listCCs[0].ID, Precent = 20 }); rst = await control.Put(norder.ID, norder); Assert.NotNull(rst); var rst4 = Assert.IsType <UpdatedODataResult <FinanceOrder> >(rst); Assert.Equal(norder.Name, rst4.Entity.Name); // Re-read the order //queryUrl = "http://localhost/api/FinanceOrders?$filter=HomeID eq " + hid.ToString() + " and ID eq " + norder.ID.ToString() + "&$expand=SRule"; //req = UnitTestUtility.GetHttpRequest(httpctx, "GET", queryUrl); //options = UnitTestUtility.GetODataQueryOptions<FinanceOrder>(odatacontext, req); //rst3 = control.Get(options); //var rst3a = rst3.Cast<FinanceOrder>(); //Assert.True(rst3a.Count() == 1); //var rst3a_elem = rst3a.ElementAt(0); //Assert.True(rst3a_elem.SRule.Count == 2); ////var rst3a = Assert.IsType<FinanceOrder>(rst3); ////Assert.True(rst3a.SRule.Count == 2); // 5. Delete an order var rst5 = await control.Delete(oid); Assert.NotNull(rst4); var rst6 = Assert.IsType <StatusCodeResult>(rst5); Assert.Equal(204, rst6.StatusCode); Assert.Equal(0, context.FinanceOrderSRule.Where(p => p.OrderID == oid).Count()); ordersCreated.Clear(); // 6. Read the order again queryUrl = "http://localhost/api/FinanceOrders?$filter=HomeID eq " + hid.ToString(); req = UnitTestUtility.GetHttpRequest(httpctx, "GET", queryUrl); options = UnitTestUtility.GetODataQueryOptions <FinanceOrder>(odatacontext, req); rst3 = control.Get(options); Assert.NotNull(rst3); Assert.Equal(existamt_curhome, rst3.Cast <FinanceOrder>().Count()); await context.DisposeAsync(); }
// static void Main(string[] args) { Session bses = GetSession(); int i = 1; if (args[0] == "city") { using (UnitOfWork ses = bses.BeginNestedUnitOfWork()) { XPQuery <csAddress> aq = new XPQuery <csAddress>(ses); var q = from address in aq where (address.City == null || address.City == "" || address.City == " ") && !(address.AddressString == null || address.AddressString == "" || address.AddressString == " ") select address; foreach (csAddress address in q) { System.Console.WriteLine(address.AddressString + " : " + address.AddressHandmake + " : " + address.City); address.City = "Не задан"; } System.Console.WriteLine(q.Count()); ses.CommitChanges(); } } if (args[0] == "party") { Excel.Application xlApp = null; Excel.Workbook xlWorkBook = null; Excel.Worksheet xlWorkSheet = null; xlApp = new Excel.ApplicationClass(); // Открытие документа (книги) excel xlWorkBook = xlApp.Workbooks.Open("e:\\party2.xls"); // Выбирается Лист (если существует) xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); // //try { while (true) { using (UnitOfWork ses = bses.BeginNestedUnitOfWork()) { i++; ExcelParty ep = new ExcelParty(); // Excel.Range range = xlWorkSheet.get_Range("A" + i, "P" + i); // Excel.Range range2 = xlWorkSheet.get_Range("A1"); if (xlWorkSheet.get_Range("A" + i).Value2 == null) { break; } ep.code = xlWorkSheet.get_Range("A" + i).Value2.ToString(); ep.type = xlWorkSheet.get_Range("B" + i).Value2.ToString(); if (xlWorkSheet.get_Range("C" + i).Value2 != null) { ep.close = xlWorkSheet.get_Range("C" + i).Value2.ToString(); } else { ep.close = String.Empty; } if (xlWorkSheet.get_Range("E" + i).Value2 != null) { ep.country = UpFirstCase(xlWorkSheet.get_Range("E" + i).Value2.ToString()); } else { ep.country = String.Empty; } if (xlWorkSheet.get_Range("F" + i).Value2 != null) { ep.city = UpFirstCase(xlWorkSheet.get_Range("F" + i).Value2.ToString()); } else { ep.city = "-"; } if (xlWorkSheet.get_Range("G" + i).Value2 != null) { ep.legal = xlWorkSheet.get_Range("G" + i).Value2.ToString(); } else { ep.legal = String.Empty; } if (xlWorkSheet.get_Range("H" + i).Value2 != null) { ep.lpt = xlWorkSheet.get_Range("H" + i).Value2.ToString(); } else { ep.lpt = "-"; } ep.inn = xlWorkSheet.get_Range("I" + i).Value2.ToString(); if (xlWorkSheet.get_Range("J" + i).Value2 != null) { ep.kpp = xlWorkSheet.get_Range("J" + i).Value2.ToString(); } else { ep.kpp = String.Empty; } ep.name = xlWorkSheet.get_Range("K" + i).Value2.ToString(); ep.addr = xlWorkSheet.get_Range("L" + i).Value2.ToString(); // party.NameFull = party.Name; // party.AddressFact.AddressHandmake = xlWorkSheet.get_Range("L" + i, "L" + i).Value2.ToString(); // party.INN = xlWorkSheet.get_Range("I" + i, "I" + i).Value2.ToString(); // party.KPP = xlWorkSheet.get_Range("J" + i, "J" + i).Value2.ToString(); switch (ep.type) { case "ЛЮ": crmCLegalPerson lp = NewLegalPerson(ses, ep); //lp.Save(); break; case "ЛФ": crmCPhysicalParty php = new crmCPhysicalParty(ses); php.Code = ep.code; php.NameHandmake = ep.name; php.INN = ep.inn; php.AddressLegal.Country = GetCountry(ses, ep.country); php.AddressLegal.City = ep.city; php.AddressLegal.AddressHandmake = ep.addr; php.AddressFact.Country = php.AddressLegal.Country; php.AddressFact.City = ep.city; php.AddressFact.AddressHandmake = ep.addr; if (!String.IsNullOrEmpty(ep.close.Trim())) { php.IsClosed = true; } //php.Save(); break; case "ИП": crmCBusinessman bp = new crmCBusinessman(ses); bp.Code = ep.code; bp.NameHandmake = ep.name; bp.INN = ep.inn; bp.PersonType = GetPersonType(ses, ep.lpt); bp.AddressLegal.Country = GetCountry(ses, ep.country); bp.AddressLegal.City = ep.city; bp.AddressLegal.AddressHandmake = ep.addr; bp.AddressFact.Country = bp.AddressLegal.Country; bp.AddressFact.City = ep.city; bp.AddressFact.AddressHandmake = ep.addr; if (!String.IsNullOrEmpty(ep.close.Trim())) { bp.IsClosed = true; } //bp.Save(); break; case "ФИЛИАЛ": crmCLegalPersonUnit lpu = UpdateLegalPersonUnit(ses, ep); //lpu.Save(); break; case "ПРОЧИЕ": crmCParty party2 = new crmCParty(ses); party2.Code = ep.code; party2.Name = ep.name; party2.INN = ep.inn; party2.AddressFact.Country = GetCountry(ses, ep.country); party2.AddressFact.City = ep.city; party2.AddressFact.AddressHandmake = ep.addr; if (!String.IsNullOrEmpty(ep.close.Trim())) { party2.IsClosed = true; } //party2.Save(); break; case "ДОМ": crmCParty party = new crmCParty(ses); party.Code = ep.code; party.Name = ep.name; party.INN = ep.inn; party.AddressFact.Country = GetCountry(ses, ep.country); party.AddressFact.City = ep.city; party.AddressFact.AddressHandmake = ep.addr; if (!String.IsNullOrEmpty(ep.close.Trim())) { party.IsClosed = true; } //party.Save(); break; default: throw new NotSupportedException(); } //MessageBox.Show(xlWorkSheet.get_Range("B1", "B1").Value2.ToString()); System.Console.WriteLine(ep.type + ' ' + ep.code + ' ' + ep.name + ' ' + ep.addr); ses.CommitChanges(); } } //} //catch (Exception e) { // if (xlWorkSheet != null) releaseObject(xlWorkSheet); // if (xlWorkBook != null) releaseObject(xlWorkBook); // if (xlApp != null) releaseObject(xlApp); // xlWorkSheet = null; // xlWorkBook = null; // xlApp = null; // GC.Collect(); // System.Console.WriteLine(e); // throw new Exception("Error clear", e); // } // Закрытие книги xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); } if (args[0] == "dogovor") { Excel.Application xlApp = null; Excel.Workbook xlWorkBook = null; Excel.Worksheet xlWorkSheet = null; xlApp = new Excel.ApplicationClass(); // Открытие документа (книги) excel xlWorkBook = xlApp.Workbooks.Open("e:\\Договора.xlsx"); // Выбирается Лист (если существует) xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); // try { while (true) { using (UnitOfWork ses = bses.BeginNestedUnitOfWork()) { i++; ExcelDogovor dog = new ExcelDogovor(); // Excel.Range range = xlWorkSheet.get_Range("A" + i, "P" + i); // Excel.Range range2 = xlWorkSheet.get_Range("A1"); if (xlWorkSheet.get_Range("A" + i).Value2 == null) { break; } dog.staff_code = xlWorkSheet.get_Range("A" + i).Value2.ToString(); dog.dep_code = xlWorkSheet.get_Range("B" + i).Value2.ToString(); dog.type = xlWorkSheet.get_Range("C" + i).Value2.ToString(); dog.dog_id = xlWorkSheet.get_Range("F" + i).Value2.ToString(); dog.dog_num = xlWorkSheet.get_Range("G" + i).Value2.ToString(); String str_date = xlWorkSheet.get_Range("H" + i).Value2.ToString(); dog.dog_date = DateTime.Parse(str_date.Substring(0, 4) + "." + str_date.Substring(4, 2) + "." + str_date.Substring(6, 2)); if (xlWorkSheet.get_Range("I" + i).Value2 != null) { dog.dop_id = xlWorkSheet.get_Range("I" + i).Value2.ToString(); dog.dop_num = xlWorkSheet.get_Range("J" + i).Value2.ToString(); str_date = xlWorkSheet.get_Range("K" + i).Value2.ToString(); dog.dop_date = DateTime.Parse(str_date.Substring(0, 4) + "." + str_date.Substring(4, 2) + "." + str_date.Substring(6, 2)); //dog.dop_date = (DateTime)xlWorkSheet.get_Range("K" + i).Value2; } dog.customer_code = xlWorkSheet.get_Range("L" + i).Value2.ToString(); dog.supplier_code = xlWorkSheet.get_Range("P" + i).Value2.ToString(); crmCParty cust = GetParty(ses, dog.customer_code); if (cust == null) { new KeyNotFoundException(dog.customer_code); } crmCParty supl = GetParty(ses, dog.supplier_code); if (supl == null) { new KeyNotFoundException(dog.supplier_code); } dog.dep = GetDepartment(ses, dog.dep_code); if (dog.dep == null) { new KeyNotFoundException(dog.dep_code); } dog.reg_dep = GetDepartment(ses, "00-056"); if (dog.reg_dep == null) { new KeyNotFoundException("00-056"); } dog.reg_staff = GetStaff(ses, dog.staff_code); if (dog.reg_staff == null) { new KeyNotFoundException(dog.staff_code); } crmContract contract = GetContract(ses, dog); crmContractDeal deal = new crmDealWithStage(ses); deal.State = DealStates.DEAL_FORMATION; deal.CuratorDepartment = dog.dep; deal.UserRegistrator = dog.reg_staff; deal.DepartmentRegistrator = dog.reg_dep; deal.Customer = cust; deal.Supplier = supl; contract.ContractDeals.Add(deal); if (dog.type == "ДОГ") { deal.ContractKind = ContractKind.CONTRACT; deal.ContractDocument = contract.ContractDocument; } else { deal.ContractKind = ContractKind.ADDENDUM; crmContractDocument contract_document = new crmContractDocument(ses); contract_document.DocumentCategory = GetDocumentCategory(ses, "ДС"); contract_document.Number = dog.dop_num; contract_document.Date = dog.dop_date; deal.ContractDocument = contract_document; contract.ContractDocuments.Add(contract_document); } System.Console.WriteLine(dog.type + ' ' + dog.dog_id + ' ' + dog.dog_num + ' ' + dog.dog_date + ' ' + dog.customer_code + ' ' + dog.supplier_code); ses.CommitChanges(); } } } catch (Exception e) { if (xlWorkSheet != null) { releaseObject(xlWorkSheet); } if (xlWorkBook != null) { releaseObject(xlWorkBook); } if (xlApp != null) { releaseObject(xlApp); } xlWorkSheet = null; xlWorkBook = null; xlApp = null; GC.Collect(); System.Console.WriteLine(e); throw e; } // Закрытие книги xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); } if (args[0] == "subject") { Excel.Application xlApp = null; Excel.Workbook xlWorkBook = null; Excel.Worksheet xlWorkSheet = null; xlApp = new Excel.ApplicationClass(); // Открытие документа (книги) excel xlWorkBook = xlApp.Workbooks.Open("e:\\subject.xlsx"); // Выбирается Лист (если существует) xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); // try { while (true) { using (UnitOfWork ses = bses.BeginNestedUnitOfWork()) { i++; FinanceTema ft = new FinanceTema(); if (xlWorkSheet.get_Range("A" + i).Value2 == null) { break; } ft.dir = xlWorkSheet.get_Range("A" + i).Value2.ToString(); ft.code = xlWorkSheet.get_Range("B" + i).Value2.ToString(); ft.name = xlWorkSheet.get_Range("C" + i).Value2.ToString(); if (xlWorkSheet.get_Range("D" + i).Value2 != null) { ft.desc = xlWorkSheet.get_Range("D" + i).Value2.ToString(); } else { ft.desc = ft.name; } fmCDirection dir = GetObject <fmCDirection>(ses, ft.dir); fmCSubjectExt subj = GetObject <fmCSubjectExt>(ses, ft.code); if (subj == null) { subj = new fmCSubjectExt(ses); } subj.Code = ft.code; subj.Direction = dir; subj.Name = ft.name; subj.NameFull = ft.name; subj.Description = ft.desc; if (subj.Name.Length > 80) { subj.Name = subj.Name.Substring(0, 80); } subj.Save(); System.Console.WriteLine(ft.dir + ' ' + ft.code + ' ' + ft.name); ses.CommitChanges(); } } } catch (Exception e) { if (xlWorkSheet != null) { releaseObject(xlWorkSheet); } if (xlWorkBook != null) { releaseObject(xlWorkBook); } if (xlApp != null) { releaseObject(xlApp); } xlWorkSheet = null; xlWorkBook = null; xlApp = null; GC.Collect(); System.Console.WriteLine(e); throw e; } // Закрытие книги xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); } if (args[0] == "order") { Excel.Application xlApp = null; Excel.Workbook xlWorkBook = null; Excel.Worksheet xlWorkSheet = null; xlApp = new Excel.ApplicationClass(); // Открытие документа (книги) excel xlWorkBook = xlApp.Workbooks.Open("e:\\order2.xlsx"); // Выбирается Лист (если существует) xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); // try { while (true) { using (UnitOfWork ses = bses.BeginNestedUnitOfWork()) { i++; FinanceOrder fo = new FinanceOrder(); if (xlWorkSheet.get_Range("A" + i).Value2 == null) { break; } if (xlWorkSheet.get_Range("A" + i).Value2 is Double) { fo.buh_int_num = (Int32)((Double)xlWorkSheet.get_Range("A" + i).Value2); } if (xlWorkSheet.get_Range("B" + i).Value2 != null) { fo.buh_account = xlWorkSheet.get_Range("B" + i).Value2.ToString(); } else { fo.buh_account = ""; } fo.code = xlWorkSheet.get_Range("C" + i).Value2.ToString(); if (xlWorkSheet.get_Range("D" + i).Value2 != null) { fo.is_closed = true; } else { fo.is_closed = false; } if (xlWorkSheet.get_Range("E" + i).Value2 != null) { fo.subj = xlWorkSheet.get_Range("E" + i).Value2.ToString(); } else { fo.subj = ""; } if (xlWorkSheet.get_Range("F" + i).Value2 != null) { fo.name_short = xlWorkSheet.get_Range("F" + i).Value2.ToString(); } else { fo.name_short = ""; } if (xlWorkSheet.get_Range("G" + i).Value2 != null) { fo.name_full = xlWorkSheet.get_Range("G" + i).Value2.ToString(); } else { fo.name_full = ""; } if (xlWorkSheet.get_Range("H" + i).Value2 != null) { fo.desc = xlWorkSheet.get_Range("H" + i).Value2.ToString(); } else { fo.desc = ""; } if (xlWorkSheet.get_Range("I" + i).Value2 != null) { fo.data_from = xlWorkSheet.get_Range("I" + i).Value2.ToString(); } else { fo.data_from = ""; } if (xlWorkSheet.get_Range("J" + i).Value2 != null) { fo.data_to = xlWorkSheet.get_Range("J" + i).Value2.ToString(); } else { fo.data_to = ""; } if (xlWorkSheet.get_Range("K" + i).Value2 != null) { fo.base_doc = xlWorkSheet.get_Range("K" + i).Value2.ToString(); } else { fo.base_doc = ""; } if (xlWorkSheet.get_Range("L" + i).Value2 != null) { fo.work_type = xlWorkSheet.get_Range("L" + i).Value2.ToString(); } else { fo.work_type = ""; } if (xlWorkSheet.get_Range("M" + i).Value2 != null) { fo.finans = xlWorkSheet.get_Range("M" + i).Value2.ToString(); } else { fo.finans = ""; } if (xlWorkSheet.get_Range("N" + i).Value2 != null) { fo.source = xlWorkSheet.get_Range("N" + i).Value2.ToString(); } else { fo.source = ""; } if (xlWorkSheet.get_Range("O" + i).Value2 != null) { fo.army = xlWorkSheet.get_Range("O" + i).Value2.ToString(); } else { fo.army = ""; } if (xlWorkSheet.get_Range("P" + i).Value2 != null) { fo.nds_mode = xlWorkSheet.get_Range("P" + i).Value2.ToString(); } else { fo.nds_mode = ""; } if (xlWorkSheet.get_Range("Q" + i).Value2 != null) { fo.acc_mode = xlWorkSheet.get_Range("Q" + i).Value2.ToString(); } else { fo.acc_mode = ""; } if (xlWorkSheet.get_Range("R" + i).Value2 != null) { if (xlWorkSheet.get_Range("R" + i).Value2 is Double) { fo.koeff_ozm = (Decimal)((Double)xlWorkSheet.get_Range("R" + i).Value2); } } if (xlWorkSheet.get_Range("S" + i).Value2 != null) { if (xlWorkSheet.get_Range("S" + i).Value2 is Double) { fo.koeff_kb = (Decimal)((Double)xlWorkSheet.get_Range("S" + i).Value2); } } fmCSubjectExt subj = GetObject <fmCSubjectExt>(ses, fo.subj); fmCOrderExt ord = GetObject <fmCOrderExt>(ses, fo.code); if (ord == null) { ord = new fmCOrderExt(ses); ord.Status = fmIOrderStatus.Loaded; } ord.Code = fo.code; ord.Subject = subj; ord.IsClosed = fo.is_closed; ord.Name = fo.name_short; ord.NameFull = fo.name_full; ord.Description = fo.desc; if (!String.IsNullOrEmpty(fo.data_from)) { ord.DateBegin = new DateTime(Int32.Parse(fo.data_from.Substring(0, 4)), Int32.Parse(fo.data_from.Substring(4, 2)), Int32.Parse(fo.data_from.Substring(6, 2))); } if (!String.IsNullOrEmpty(fo.data_to)) { ord.DateEnd = new DateTime(Int32.Parse(fo.data_to.Substring(0, 4)), Int32.Parse(fo.data_to.Substring(4, 2)), Int32.Parse(fo.data_to.Substring(6, 2))); } if (!String.IsNullOrEmpty(fo.acc_mode)) { ord.AnalitycAccouterType = GetObject <fmСOrderAnalitycAccouterType>(ses, fo.acc_mode); } if (!String.IsNullOrEmpty(fo.nds_mode)) { ord.AnalitycAVT = GetObject <fmСOrderAnalitycAVT>(ses, fo.nds_mode); } ord.BuhAccount = fo.buh_account; ord.BuhIntNum = fo.buh_int_num; ord.KoeffKB = fo.koeff_kb; ord.KoeffOZM = fo.koeff_ozm; ord.SourceOther = fo.base_doc; // ord. if (!String.IsNullOrEmpty(fo.work_type)) { ord.AnalitycWorkType = GetObject <fmСOrderAnalitycWorkType>(ses, fo.work_type); } if (!String.IsNullOrEmpty(fo.acc_mode)) { ord.AnalitycFinanceSource = GetObject <fmСOrderAnalitycFinanceSource>(ses, fo.finans); } if (!String.IsNullOrEmpty(fo.acc_mode)) { ord.AnalitycOrderSource = GetObject <fmСOrderAnalitycOrderSource>(ses, fo.source); } if (!String.IsNullOrEmpty(fo.acc_mode)) { ord.AnalitycMilitary = GetObject <fmСOrderAnalitycMilitary>(ses, fo.army); } System.Console.WriteLine(fo.subj + ' ' + fo.code + ' ' + fo.name_short); ses.CommitChanges(); } } } catch (Exception e) { if (xlWorkSheet != null) { releaseObject(xlWorkSheet); } if (xlWorkBook != null) { releaseObject(xlWorkBook); } if (xlApp != null) { releaseObject(xlApp); } xlWorkSheet = null; xlWorkBook = null; xlApp = null; GC.Collect(); System.Console.WriteLine(e); throw e; } // Закрытие книги xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); } }