/// <summary> /// Обновим входящую поставку в WIR /// </summary> /// <param name="context"></param> /// <param name="id_wir"></param> /// <param name="out_sypp"></param> /// <param name="user"></param> /// <returns></returns> public int UpdateWIR_SAPOutgoingSupply(ref EFDbContext context, long id_wir, Out_Supply out_sypp, string user) { try { if (context == null) { context = new EFIDS.Concrete.EFDbContext(); } ; // Проверим и скорректируем пользователя if (String.IsNullOrWhiteSpace(user)) { user = System.Environment.UserDomainName + @"\" + System.Environment.UserName; } EFWagonInternalRoutes ef_wir = new EFWagonInternalRoutes(context); EFSAPOutgoingSupply ef_sap_os = new EFSAPOutgoingSupply(context); // Получим wir WagonInternalRoutes wir = ef_wir.Context.Where(w => w.id == id_wir).FirstOrDefault(); if (wir == null) { return((int)errors_base.not_wir_db); // В базе данных нет записи по WagonInternalRoutes (Внутреннее перемещение вагонов) } // Проверим sap исходящая поставка указана if (wir.id_sap_outbound_supply != null) { SAPOutgoingSupply sap_os = ef_sap_os.Context.Where(s => s.id == wir.id_sap_outbound_supply).FirstOrDefault(); if (sap_os == null) { return((int)errors_base.not_sap_os_db); // В базе данных нет записи по SAPOutgoingSupply (SAP Исходящая поставка) } // Проверим id соответсвуют (SAPOutgoingSupply и Out_Supply) if (sap_os.id_out_supply == out_sypp.id) { // Соответсвует обновим sap_os.id_outgoing_car = wir.id_outgoing_car; sap_os.num = wir.num; sap_os.VBELN = out_sypp.VBELN; sap_os.ERDAT = out_sypp.ERDAT; sap_os.ZBEZEI = out_sypp.ZBEZEI; sap_os.STAWN = out_sypp.STAWN; sap_os.NAME1_AG = out_sypp.NAME1_AG; sap_os.KUNNR_AG = out_sypp.KUNNR_AG; sap_os.ZRWNAME = out_sypp.ZRWNAME; sap_os.ZENDSTAT = out_sypp.ZENDSTAT; sap_os.ZCRSTNAME = out_sypp.ZCRSTNAME; sap_os.ZCROSSSTAT = out_sypp.ZCROSSSTAT; sap_os.ZZVES_NETTO = out_sypp.ZZVES_NETTO; sap_os.ABTNR = out_sypp.ABTNR; sap_os.VTEXT = out_sypp.VTEXT; sap_os.ZZDOLG = out_sypp.ZZDOLG; sap_os.ZZFIO = out_sypp.ZZFIO; sap_os.ZZPLATEL = out_sypp.ZZPLATEL; sap_os.ZZNAME_PLATEL = out_sypp.ZZNAME_PLATEL; //sap_os.note = out_sypp.note, sap_os.change = DateTime.Now; sap_os.change_user = user; ef_sap_os.Update(sap_os); return(2); // Обновлена } else { ef_sap_os.Delete(sap_os.id); // не соответсвует, удалим (и создадим новый) } } // Содадим и добавим новую исходящую поставку SAPOutgoingSupply sap_os_new = new SAPOutgoingSupply() { id = 0, id_out_supply = 0, id_outgoing_car = wir.id_outgoing_car, num = wir.num, VBELN = out_sypp.VBELN.Trim(), ERDAT = out_sypp.ERDAT, ZBEZEI = out_sypp.ZBEZEI.Trim(), STAWN = out_sypp.STAWN.Trim(), NAME1_AG = out_sypp.NAME1_AG.Trim(), KUNNR_AG = out_sypp.KUNNR_AG.Trim(), ZRWNAME = out_sypp.ZRWNAME.Trim(), ZENDSTAT = out_sypp.ZENDSTAT.Trim(), ZCRSTNAME = out_sypp.ZCRSTNAME.Trim(), ZCROSSSTAT = out_sypp.ZCROSSSTAT.Trim(), ZZVES_NETTO = out_sypp.ZZVES_NETTO, ABTNR = out_sypp.ABTNR.Trim(), VTEXT = out_sypp.VTEXT.Trim(), ZZDOLG = out_sypp.ZZDOLG.Trim(), ZZFIO = out_sypp.ZZFIO.Trim(), ZZPLATEL = out_sypp.ZZPLATEL.Trim(), ZZNAME_PLATEL = out_sypp.ZZNAME_PLATEL.Trim(), note = null, create = DateTime.Now, create_user = user, }; sap_os_new.Out_Supply = out_sypp; ef_sap_os.Add(sap_os_new); wir.SAPOutgoingSupply = sap_os_new; ef_wir.Update(wir); return(1); // Добавлена новая } catch (Exception e) { e.ExceptionMethodLog(String.Format("UpdateWIR_SAPOutgoingSupply(context = {0}, id_wir = {1}, cur_out_sypp = {2}, user = {3})", context, id_wir, out_sypp, user), servece_owner, eventID); return((int)errors_base.global); } }
/// <summary> /// Правка разметки по прибытию /// </summary> /// <param name="context"></param> /// <param name="arr_cars"></param> /// <param name="id_condition"></param> /// <param name="id_type"></param> /// <param name="date_rem_vag"></param> /// <param name="user"></param> /// <returns></returns> public int OperationUpdateWagonMarking(ref EFDbContext context, ArrivalCars arr_cars, int id_condition, int?id_type, DateTime?date_rem_vag, string user) { try { // Проверка контекста if (context == null) { context = new EFDbContext(); } // Проверим и скорректируем пользователя if (String.IsNullOrWhiteSpace(user)) { user = System.Environment.UserDomainName + @"\" + System.Environment.UserName; } // Определим наличие вагона в прибытии if (arr_cars == null) { return((int)errors_base.not_arrival_cars_db); // Ошибка, нет записи вагона по прибытию } // if (arr_cars.id_arrival_uz_vagon == null) { return((int)errors_base.not_arrival_uz_vagon); //Ошибка, нет сылки на документ прибывшего вагона } // Получим контекст список документов на принятые вагоны EFArrival_UZ_Vagon ef_arr_uz_vag = new EFArrival_UZ_Vagon(context); // Получим запись документа принятого вагона Arrival_UZ_Vagon arr_uz_vag = ef_arr_uz_vag.Context.Where(v => v.id == arr_cars.id_arrival_uz_vagon).FirstOrDefault(); if (arr_uz_vag == null) { return((int)errors_base.not_arrival_uz_vagon); //Ошибка, нет записи документа прибывшего вагона } // Получим контекст справочник вагонов EFDirectory_Wagons ef_dir_wag = new EFDirectory_Wagons(context); // Получим запись вагона из справочника Directory_Wagons wagon = ef_dir_wag.Context.Where(w => w.num == arr_uz_vag.num).FirstOrDefault(); if (wagon == null) { return((int)errors_base.not_dir_wagon_of_db); // Указаного вагона нет в базе } // Получим контекст Внутренего перемещения EFWagonInternalRoutes ef_wir = new EFWagonInternalRoutes(context); WagonInternalRoutes wir = ef_wir.Context.Where(r => r.id_arrival_car == arr_cars.id).FirstOrDefault(); if (wir == null) { return((int)errors_base.not_wir_db); // Ошибка, нет записи внутренего перемещения вагона } // Найдем первую запись WagonInternalOperation first_wio = wir.WagonInternalOperation.Where(o => o.parent_id == null).OrderBy(o => o.id).FirstOrDefault(); if (first_wio == null) { return((int)errors_base.not_wio_db); // Ошибка, нет записи операций внутренего перемещения вагона } int id_condition_first = first_wio.id_condition; // Определим все записи List <WagonInternalOperation> list_wio = wir.WagonInternalOperation.OrderBy(o => o.id).ToList(); // Обновим годность по внутренему перемещению foreach (WagonInternalOperation wio in list_wio) { if (wio.id_condition == id_condition_first) { wio.id_condition = id_condition; } else { break; // Дрогая годность выйти изцикла } } ef_wir.Update(wir); // Запись документа есть правим тип и годность по прибытию arr_uz_vag.id_condition = id_condition; arr_uz_vag.id_type = id_type; ef_arr_uz_vag.Update(arr_uz_vag); // Запись справочника есть, правим дату ремонта wagon.date_rem_vag = date_rem_vag; ef_dir_wag.Update(wagon); return(1); } catch (Exception e) { e.ExceptionMethodLog(String.Format("OperationUpdateWagonMarking(context={0}, arr_cars={1}, id_condition ={2}, id_type={3}, date_rem_vag ={4}, user={5})", context, arr_cars, id_condition, id_type, date_rem_vag, user), servece_owner, this.eventID); return((int)errors_base.global);// Ошибка } }