//Находим или созлаём новый Склад //private int ReturnDirWarehouseID(string DirWarehouseName) internal async Task<int> ReturnDirWarehouseID(string DirWarehouseName) { //Есть склад "DirWarehouseName" var query = ( from x in db.DirWarehouses where x.DirWarehouseName == DirWarehouseName select x ).ToList(); if (query.Count() > 0) return Convert.ToInt32(query[0].DirWarehouseID); //Нет, тогда создаём новый //Нет записи в БД - создаём новую группу и получаем Sub Models.Sklad.Dir.DirWarehouse dirWarehouse = new Models.Sklad.Dir.DirWarehouse(); dirWarehouse.DirWarehouseID = null; dirWarehouse.DirWarehouseName = DirWarehouseName; //dirWarehouse.Sub = 0; dirWarehouse.Del = false; dirWarehouse.DirCashOfficeID = 1; dirWarehouse.DirBankID = 1; //db.Entry(dirWarehouse).State = EntityState.Added; //db.SaveChanges(); PartionnyAccount.Controllers.Sklad.Dir.DirWarehouses.DirWarehousesController dirWarehousesController = new Dir.DirWarehouses.DirWarehousesController(); dirWarehouse = await Task.Run(() => dirWarehousesController.mPutPostDirWarehouse(db, dirWarehouse, EntityState.Added, field)); return Convert.ToInt32(dirWarehouse.DirWarehouseID); }
internal async Task <string> mSms_DocServicePurches( DbConnectionSklad db, DirSmsTemplate dirSmsTemplate, DocServicePurch docServicePurch, Models.Sklad.Sys.SysSetting sysSetting ) { string ret = dirSmsTemplate.DirSmsTemplateMsg; //Парсим текст //Ваш (тип устройства/марка/модель) Mob.tel/Nokia/535 принят в ремонт, номер ремонта 2005 //Мастерская Сити-Мастер //тел (тут вставляем номер тел точки чтоб чел мог набрать) //1. DirServiceNomenName: надо получить полное наименование Controllers.Sklad.Doc.DocServicePurches.DocServicePurchesController docServicePurchesController = new Controllers.Sklad.Doc.DocServicePurches.DocServicePurchesController(); string[] DirServiceNomenPatchFullarr = await Task.Run(() => docServicePurchesController.mPatchFull(db, docServicePurch.DirServiceNomenID)); string DirServiceNomenPatchFull = DirServiceNomenPatchFullarr[0]; ret = ret.Replace("[[[ТоварНаименование]]]", DirServiceNomenPatchFull); //2. DocServicePurchID ret = ret.Replace("[[[ДокументНомер]]]", docServicePurch.DocServicePurchID.ToString()); //3. Организация: получаем из настроек Models.Sklad.Dir.DirContractor dirContractor = await db.DirContractors.FindAsync(sysSetting.DirContractorIDOrg); ret = ret.Replace("[[[Организация]]]", dirContractor.DirContractorName); //4. Телефон: получаем из "docServicePurch.DirWarehouseID" Models.Sklad.Dir.DirWarehouse dirWarehouse = await db.DirWarehouses.FindAsync(docServicePurch.DirWarehouseID); ret = ret.Replace("[[[ТочкаНаименование]]]", dirWarehouse.DirWarehouseName); ret = ret.Replace("[[[ТочкаАдрес]]]", dirWarehouse.DirWarehouseAddress); ret = ret.Replace("[[[ТочкаТелефон]]]", dirWarehouse.Phone); //5. [[[Сумма]]] ret = ret.Replace("[[[Сумма]]]", docServicePurch.Sums.ToString()); //SumsTotal return(ret); }
internal async Task <DocServicePurch2Tab> mPutPostDocServicePurch2Tab( DbConnectionSklad db, Models.Sklad.Doc.DocServicePurch docServicePurch, DocServicePurch2Tab docServicePurch2Tab, Classes.Account.Login.Field field //Дополнительные данные о сотруднике ) { #region Лог //Пишем в Лог о смене статуса и мастера, если такое было logService.DocServicePurchID = docServicePurch2Tab.DocServicePurchID; logService.DirServiceLogTypeID = 6; logService.DirEmployeeID = field.DirEmployeeID; logService.DirServiceStatusID = null; if (docServicePurch2Tab.DocServicePurch2TabID == null) { logService.Msg = "Создание записи " + docServicePurch2Tab.DirNomenName + " на сумму " + docServicePurch2Tab.PriceCurrency; } else { logService.Msg = "Изменение записи " + docServicePurch2Tab.DirNomenName + " на сумму " + docServicePurch2Tab.PriceCurrency; } await logServicesController.mPutPostLogServices(db, logService, EntityState.Added); #endregion #region Save docServicePurch2Tab.TabDate = DateTime.Now; if (docServicePurch2Tab.DocServicePurch2TabID > 0) { db.Entry(docServicePurch2Tab).State = EntityState.Modified; } else { db.Entry(docServicePurch2Tab).State = EntityState.Added; } await Task.Run(() => db.SaveChangesAsync()); #endregion #region Партии *** *** *** *** *** *** *** *** Controllers.Sklad.Rem.RemPartyMinusesController remPartyMinuses = new Rem.RemPartyMinusesController(); //Находим "DocServicePurch" по "docServicePurch2Tab.DocServicePurchID" //Models.Sklad.Doc.DocServicePurch docServicePurch = await db.DocServicePurches.FindAsync(docServicePurch2Tab.DocServicePurchID); Models.Sklad.Doc.Doc doc = await db.Docs.FindAsync(docServicePurch.DocID); #region Ищим в Возврате покупателя, если нет, то удаляем в RemPartyMinuses *** *** *** *** *** //Ищим в Возврате покупателя var queryRemPartyMinuses = await ( from x in db.RemPartyMinuses where x.DocID == docServicePurch.DocID select x ).ToListAsync(); for (int i = 0; i < queryRemPartyMinuses.Count(); i++) { int iRemPartyMinusID = Convert.ToInt32(queryRemPartyMinuses[i].RemPartyMinusID); var queryDocReturnsCustomerTab = await ( from x in db.DocReturnsCustomerTabs where x.RemPartyMinusID == iRemPartyMinusID select x ).ToListAsync(); if (queryDocReturnsCustomerTab.Count() > 0) { throw new System.InvalidOperationException( Classes.Language.Sklad.Language.msg117 + "<tr>" + "<td>" + queryDocReturnsCustomerTab[0].RemPartyMinusID + "</td>" + //партия списания "<td>" + queryDocReturnsCustomerTab[0].DocReturnsCustomerID + "</td>" + //№ д-та "<td>" + queryDocReturnsCustomerTab[0].DirNomenID + "</td>" + //Код товара "<td>" + queryDocReturnsCustomerTab[0].Quantity + "</td>" + //списуемое к-во "</tr>" + "</table>" + Classes.Language.Sklad.Language.msg117_1 ); } //1.1. Удаляем "RemPartyMinuses" - не удаляем!!! //Models.Sklad.Rem.RemPartyMinus _remPartyMinus = await db.RemPartyMinuses.FindAsync(iRemPartyMinusID); //db.RemPartyMinuses.Remove(_remPartyMinus); //await db.SaveChangesAsync(); } #endregion #region Удаляем все записи из таблицы "RemPartyMinuses" - не удаляем!!! //Удаляем все записи из таблицы "RemPartyMinuses" //Что бы правильно Проверяло на Остаток. //А то, товар уже списан, а я проверяю на остаток! //await Task.Run(() => remPartyMinuses.Delete(db, Convert.ToInt32(docServicePurch.DocID))); //remPartyMinuses.Delete(db, Convert.ToInt32(doc.DocID))); #endregion #region Проверки и Списание с партий (RemPartyMinuses) #region Проверка //Переменные int iRemPartyID = docServicePurch2Tab.RemPartyID; double dQuantity = 1; // docServicePurch2Tab.Quantity; //Находим партию Models.Sklad.Rem.RemParty remParty = await db.RemParties.FindAsync(iRemPartyID); db.Entry(remParty).Reload(); // - Это Важно! Триггер изменил значения, то они НЕ видны в проекте, надо обновить значения!!! #region 1. Есть ли остаток в партии с которой списываем! if (remParty.Remnant < dQuantity) { throw new System.InvalidOperationException( Classes.Language.Sklad.Language.msg104 + "<tr>" + "<td>" + docServicePurch2Tab.RemPartyID + "</td>" + //партия "<td>" + docServicePurch2Tab.DirNomenID + "</td>" + //Код товара "<td>1</td>" + //"<td>" + docServicePurch2Tab.Quantity + "</td>" //списуемое к-во "<td>" + remParty.Remnant + "</td>" + //остаток партии "<td>" + (1 - remParty.Remnant).ToString() + "</td>" + //"<td>" + (docServicePurch2Tab.Quantity - remParty.Remnant).ToString() + "</td>" //недостающее к-во "</tr>" + "</table>" + Classes.Language.Sklad.Language.msg104_1 ); } #endregion #region 2. Склад: склад документа должен соответствовать каждой списуемой партии! if (remParty.DirWarehouseID != docServicePurch.DirWarehouseID) { //Это нужно, т.к. к нам от клиента не пришли все значения модели: "docServicePurch.dirWarehouse.DirWarehouseName" Models.Sklad.Dir.DirWarehouse dirWarehouse = await db.DirWarehouses.FindAsync(docServicePurch.DirWarehouseID); throw new System.InvalidOperationException( Classes.Language.Sklad.Language.msg105 + "<tr>" + "<td>" + docServicePurch2Tab.RemPartyID + "</td>" + //партия "<td>" + docServicePurch2Tab.DirNomenID + "</td>" + //Код товара "<td>" + dirWarehouse.DirWarehouseName + "</td>" + //склад документа "<td>" + remParty.dirWarehouse.DirWarehouseName + "</td>" + //склад партии "</tr>" + "</table>" + Classes.Language.Sklad.Language.msg105_1 ); } #endregion #region 3. Организация: организация документа должен соответствовать каждой списуемой партии! if (remParty.DirContractorIDOrg != doc.DirContractorIDOrg) { //Это нужно, т.к. к нам от клиента не пришли все значения модели: "docServicePurch.dirWarehouse.DirWarehouseName" Models.Sklad.Dir.DirContractor dirContractor = await db.DirContractors.FindAsync(doc.DirContractorIDOrg); throw new System.InvalidOperationException( Classes.Language.Sklad.Language.msg106 + "<tr>" + "<td>" + docServicePurch2Tab.RemPartyID + "</td>" + //партия "<td>" + docServicePurch2Tab.DirNomenID + "</td>" + //Код товара "<td>" + dirContractor.DirContractorName + "</td>" + //организация спецификации "<td>" + remParty.dirContractorOrg.DirContractorName + "</td>" + //организация партии "</tr>" + "</table>" + Classes.Language.Sklad.Language.msg106_1 ); } #endregion #endregion #region Сохранение Models.Sklad.Rem.RemPartyMinus remPartyMinus = new Models.Sklad.Rem.RemPartyMinus(); remPartyMinus.RemPartyMinusID = null; remPartyMinus.RemPartyID = docServicePurch2Tab.RemPartyID; remPartyMinus.DirNomenID = Convert.ToInt32(docServicePurch2Tab.DirNomenID); remPartyMinus.Quantity = 1; // docServicePurch2Tab.Quantity; remPartyMinus.DirCurrencyID = docServicePurch2Tab.DirCurrencyID; remPartyMinus.DirCurrencyMultiplicity = docServicePurch2Tab.DirCurrencyMultiplicity; remPartyMinus.DirCurrencyRate = docServicePurch2Tab.DirCurrencyRate; remPartyMinus.DirVatValue = docServicePurch.DirVatValue; remPartyMinus.DirWarehouseID = docServicePurch.DirWarehouseID; remPartyMinus.DirContractorIDOrg = doc.DirContractorIDOrg; remPartyMinus.DirContractorID = doc.DirContractorIDOrg; remPartyMinus.DocID = Convert.ToInt32(docServicePurch.DocID); remPartyMinus.PriceCurrency = docServicePurch2Tab.PriceCurrency; remPartyMinus.PriceVAT = docServicePurch2Tab.PriceVAT; remPartyMinus.FieldID = Convert.ToInt32(docServicePurch2Tab.DocServicePurch2TabID); remPartyMinus.Reserve = false; //docServicePurch.Reserve; remPartyMinus.DirEmployeeID = doc.DirEmployeeID; remPartyMinus.DocDate = doc.DocDate; db.Entry(remPartyMinus).State = EntityState.Added; await db.SaveChangesAsync(); #endregion #endregion #endregion return(docServicePurch2Tab); }
internal async Task <DirWarehouse> mPutPostDirWarehouse( DbConnectionSklad db, DirWarehouse dirWarehouse, EntityState entityState, //EntityState.Added, Modified Classes.Account.Login.Field field //Дополнительные данные о сотруднике ) { if (dirWarehouse.SmenaClose && (dirWarehouse.SmenaCloseTime == null || dirWarehouse.SmenaCloseTime.Length != 5)) { throw new System.InvalidOperationException("Не верное времмя закрытия смены ККМ!"); } db.Entry(dirWarehouse).State = entityState; await Task.Run(() => db.SaveChangesAsync()); #region Sub (Локации) //Если создаём новый склад, то создаём новые под-склады if (entityState == EntityState.Added) { //1.1. Списание Models.Sklad.Dir.DirWarehouse dirWarehouse1 = new DirWarehouse(); dirWarehouse1.Sub = dirWarehouse.DirWarehouseID; dirWarehouse1.DirBankID = dirWarehouse.DirBankID; dirWarehouse1.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse1.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse1.Phone = dirWarehouse.Phone; dirWarehouse1.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar1; dirWarehouse1.DirWarehouseLoc = 1; db.Entry(dirWarehouse1).State = EntityState.Added; await Task.Run(() => db.SaveChangesAsync()); //1.2. Возвраты Models.Sklad.Dir.DirWarehouse dirWarehouse2 = new DirWarehouse(); dirWarehouse2.Sub = dirWarehouse.DirWarehouseID; dirWarehouse2.DirBankID = dirWarehouse.DirBankID; dirWarehouse2.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse2.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse2.Phone = dirWarehouse.Phone; dirWarehouse2.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar2; dirWarehouse2.DirWarehouseLoc = 2; db.Entry(dirWarehouse2).State = EntityState.Added; await Task.Run(() => db.SaveChangesAsync()); //1.3. Заказы для ремонтов Models.Sklad.Dir.DirWarehouse dirWarehouse3 = new DirWarehouse(); dirWarehouse3.Sub = dirWarehouse.DirWarehouseID; dirWarehouse3.DirBankID = dirWarehouse.DirBankID; dirWarehouse3.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse3.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse3.Phone = dirWarehouse.Phone; dirWarehouse3.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar3; dirWarehouse3.DirWarehouseLoc = 3; db.Entry(dirWarehouse3).State = EntityState.Added; await Task.Run(() => db.SaveChangesAsync()); //1.4. Предзаказы Models.Sklad.Dir.DirWarehouse dirWarehouse4 = new DirWarehouse(); dirWarehouse4.Sub = dirWarehouse.DirWarehouseID; dirWarehouse4.DirBankID = dirWarehouse.DirBankID; dirWarehouse4.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse4.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse4.Phone = dirWarehouse.Phone; dirWarehouse4.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar4; dirWarehouse4.DirWarehouseLoc = 4; db.Entry(dirWarehouse4).State = EntityState.Added; await Task.Run(() => db.SaveChangesAsync()); //1.5. БУ.Разбор Models.Sklad.Dir.DirWarehouse dirWarehouse5 = new DirWarehouse(); dirWarehouse5.Sub = dirWarehouse.DirWarehouseID; dirWarehouse5.DirBankID = dirWarehouse.DirBankID; dirWarehouse5.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse5.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse5.Phone = dirWarehouse.Phone; dirWarehouse5.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar5; dirWarehouse5.DirWarehouseLoc = 5; db.Entry(dirWarehouse5).State = EntityState.Added; await Task.Run(() => db.SaveChangesAsync()); } else { //1.1. Списание var query1 = await db.DirWarehouses.Where(x => x.Sub == dirWarehouse.DirWarehouseID && x.DirWarehouseLoc == 1).ToListAsync(); if (query1.Count() > 0) { Models.Sklad.Dir.DirWarehouse dirWarehouse1 = query1[0]; dirWarehouse1.DirBankID = dirWarehouse.DirBankID; dirWarehouse1.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse1.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse1.Phone = dirWarehouse.Phone; dirWarehouse1.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar1; dirWarehouse1.DirWarehouseLoc = 1; db.Entry(dirWarehouse1).State = EntityState.Modified; await Task.Run(() => db.SaveChangesAsync()); } //1.2. Возвраты var query2 = await db.DirWarehouses.Where(x => x.Sub == dirWarehouse.DirWarehouseID && x.DirWarehouseLoc == 2).ToListAsync(); if (query2.Count() > 0) { Models.Sklad.Dir.DirWarehouse dirWarehouse1 = query2[0]; dirWarehouse1.DirBankID = dirWarehouse.DirBankID; dirWarehouse1.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse1.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse1.Phone = dirWarehouse.Phone; dirWarehouse1.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar2; dirWarehouse1.DirWarehouseLoc = 2; db.Entry(dirWarehouse1).State = EntityState.Modified; await Task.Run(() => db.SaveChangesAsync()); } //1.3. Заказы для ремонтов var query3 = await db.DirWarehouses.Where(x => x.Sub == dirWarehouse.DirWarehouseID && x.DirWarehouseLoc == 3).ToListAsync(); if (query3.Count() > 0) { Models.Sklad.Dir.DirWarehouse dirWarehouse1 = query3[0]; dirWarehouse1.DirBankID = dirWarehouse.DirBankID; dirWarehouse1.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse1.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse1.Phone = dirWarehouse.Phone; dirWarehouse1.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar3; dirWarehouse1.DirWarehouseLoc = 3; db.Entry(dirWarehouse1).State = EntityState.Modified; await Task.Run(() => db.SaveChangesAsync()); } //1.4. Предзаказы var query4 = await db.DirWarehouses.Where(x => x.Sub == dirWarehouse.DirWarehouseID && x.DirWarehouseLoc == 4).ToListAsync(); if (query4.Count() > 0) { Models.Sklad.Dir.DirWarehouse dirWarehouse1 = query4[0]; dirWarehouse1.DirBankID = dirWarehouse.DirBankID; dirWarehouse1.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse1.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse1.Phone = dirWarehouse.Phone; dirWarehouse1.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar4; dirWarehouse1.DirWarehouseLoc = 4; db.Entry(dirWarehouse1).State = EntityState.Modified; await Task.Run(() => db.SaveChangesAsync()); } //1.5. БУ.Разбор var query5 = await db.DirWarehouses.Where(x => x.Sub == dirWarehouse.DirWarehouseID && x.DirWarehouseLoc == 5).ToListAsync(); if (query5.Count() > 0) { Models.Sklad.Dir.DirWarehouse dirWarehouse1 = query5[0]; dirWarehouse1.DirBankID = dirWarehouse.DirBankID; dirWarehouse1.DirCashOfficeID = dirWarehouse.DirCashOfficeID; dirWarehouse1.DirWarehouseAddress = dirWarehouse.DirWarehouseAddress; dirWarehouse1.Phone = dirWarehouse.Phone; dirWarehouse1.DirWarehouseName = dirWarehouse.DirWarehouseName + SubWar5; dirWarehouse1.DirWarehouseLoc = 5; db.Entry(dirWarehouse1).State = EntityState.Modified; await Task.Run(() => db.SaveChangesAsync()); } } #endregion return(dirWarehouse); }