} // ReactionDocDo internal override ABaseMode Init() { if (!SQL1S.IsVoidDate((DateTime)DocCC.GetAttributeHeader("Дата3"))) { return(Negative("Сборочный уже скомплектован!")); } if (SQL1S.IsVoidDate((DateTime)DocCC.GetAttributeHeader("Дата2"))) { return(Negative("Сборочный не собран!")); } if (!SS.LockDoc(DocCC.ID)) { return(Negative(SS.ExcStr)); } if (SQL1S.IsVoidDate((DateTime)DocCC.GetAttributeHeader("Дата4")) && TransferWindow.Selected) { //Если предкомплектация еще не задана, а окно выдачи уже задано, то делаем предкомплектацию DocCC.SetAttributeHeader("Дата4", DateTime.Now); DocCC.SetAttributeHeader("Время4", APIManager.NowSecond()); DocCC.SetAttributeHeader("Комплектовщик2", Employer.ID); DocCC.Save(); //Если окно задано - то даем команду выводить на табло SendToTablo(1); } return(Positive()); } // ReactionSCEmployersDo
} // ReactionKeyDo /// <summary> /// /// </summary> /// <param name="e"></param> protected override void ReactionSCDo(ReactionSCEventArgs e) { if (CurrentAction == ActionSet.ScanAdress) { if (e.Ref.GetType() != new RefSection(SS).GetType()) { Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); return; } RefSection Section = e.Ref as RefSection; AdressUnLoad.FoundID(Section.ID); string TextQuery = "UPDATE $Спр.МестаПогрузки " + "SET " + "$Спр.МестаПогрузки.Адрес9 = :AdressID ," + "$Спр.МестаПогрузки.Сотрудник8 = :EmployerID ," + "$Спр.МестаПогрузки.Дата9 = :Date ," + "$Спр.МестаПогрузки.Время9 = :Time " + "WHERE "; if (DocUnload.Selected) { TextQuery += " $Спр.МестаПогрузки .КонтрольНабора = :DocUnload "; SQL1S.QuerySetParam(ref TextQuery, "DocUnload", DocUnload.ID); } else { TextQuery += " $Спр.МестаПогрузки .ID = :ID "; SQL1S.QuerySetParam(ref TextQuery, "ID", BoxUnLoad.ID); } SQL1S.QuerySetParam(ref TextQuery, "AdressID", AdressUnLoad.ID); SQL1S.QuerySetParam(ref TextQuery, "EmployerID", Employer.ID); SQL1S.QuerySetParam(ref TextQuery, "Date", DateTime.Now); SQL1S.QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond()); if (!SS.ExecuteWithoutRead(TextQuery)) { Negative("Не удалось зафиксировать! " + SS.WhatUNeed(CurrentAction)); return; } CurrentAction = ActionSet.ScanBox; Refresh(); return; } else if (CurrentAction != ActionSet.ScanBox) { Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); return; } if (e.Ref.GetType() != new RefBox(SS).GetType()) { Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); return; } RefBox Box = e.Ref as RefBox; BoxUnLoad.FoundID(Box.ID); DocUnload = new Doc(SS); CurrentAction = ActionSet.ScanAdress; AdressUnLoad = new RefSection(SS); Refresh(); }
} // SetTransfer (constructor) private void TransferComplete() { //Любая комплектация фиксируется DocCC.SetAttributeHeader("Дата3", DateTime.Now); DocCC.SetAttributeHeader("Время3", APIManager.NowSecond()); DocCC.SetAttributeHeader("Комплектовщик", Employer.ID); DocCC.Save(); SS.Employer = Employer; SS.LockoutDoc(DocCC.ID); SS.OnChangeMode(new ChangeModeEventArgs(Mode.SetInicialization)); Positive(); } // TransferComplete
/// <summary> /// /// </summary> /// <param name="TextQuery"></param> /// <returns></returns> public string QueryParser(string TextQuery) { QuerySetParam(ref TextQuery, "EmptyDate", GetVoidDate()); QuerySetParam(ref TextQuery, "EmptyID", GetVoidID()); QuerySetParam(ref TextQuery, "NowDate", DateTime.Now); QuerySetParam(ref TextQuery, "NowTime", APIManager.NowSecond()); string result = TextQuery; int curI = result.IndexOf('$'); while (curI != -1) { int endI = result.Substring(curI + 1).IndexOf(' '); string part = result.Substring(curI + 1, endI); result = result.Replace("$" + part + " ", GetSynh(part) + " "); curI = result.IndexOf('$'); } return(result); }
private bool RSCDown(string IDDorID, bool thisID) { if (!thisID) { if (IsSC(IDDorID, "Сотрудники")) { return(ReactionCancel()); } else if (IsSC(IDDorID, "Принтеры")) { if (!Printer.FoundIDD(IDDorID)) { return(false); } else { FExcStr = "Принтер выбран!"; return(true); } } else { FExcStr = "Нет действий с данным штрихкодом!"; return(false); } } else { string TextQuery = "Select " + "$Спр.МестаПогрузки.Дата4 as Date, " + "$Спр.МестаПогрузки.КонтрольНабора as Doc " + "from $Спр.МестаПогрузки (nolock) where id = :id"; QuerySetParam(ref TextQuery, "id", IDDorID); DataTable DT; if (!ExecuteWithRead(TextQuery, out DT)) { return(false); } if (DT.Rows.Count == 0) { FExcStr = "Нет действий с данным штрихкодом!"; return(false); } if (DT.Rows[0]["Doc"].ToString() != DocDown.ID) { FExcStr = "Место от другого сборочного!"; return(false); } if ((DateTime)DT.Rows[0]["Date"] != GetVoidDate()) { FExcStr = "Место уже отобрано!"; return(false); } //Лютый пиздец начинается! TextQuery = "begin tran; " + "UPDATE $Спр.МестаПогрузки " + "SET " + "$Спр.МестаПогрузки.Дата4 = :Date , " + "$Спр.МестаПогрузки.Время4 = :Time " + "WHERE " + "id = :itemid; " + "if @@rowcount = 0 rollback tran " + "else begin " + "if exists ( select top 1 id from $Спр.МестаПогрузки as Ref " + "where " + "Ref.ismark = 0 " + "and Ref.$Спр.МестаПогрузки.КонтрольНабора = :iddoc " + "and Ref.$Спр.МестаПогрузки.Дата4 = :EmptyDate ) " + "commit tran " + "else begin " + "declare @res int; " + "exec WPM_GetOrderDown :Employer, :NameParent, @res OUTPUT; " + "if @res = 0 rollback tran else commit tran " + "end " + "end "; QuerySetParam(ref TextQuery, "Employer", Employer.ID); QuerySetParam(ref TextQuery, "Date", DateTime.Now); QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond()); QuerySetParam(ref TextQuery, "itemid", IDDorID); QuerySetParam(ref TextQuery, "iddoc", DocDown.ID); QuerySetParam(ref TextQuery, "EmptyDate", GetVoidDate()); QuerySetParam(ref TextQuery, "NameParent", DocDown.Sector.Trim()); if (!ExecuteWithoutRead(TextQuery)) { return(false); } bool res = ToModeDown(); OnChangeMode(new ChangeModeEventArgs(FCurrentMode)); return(res); } }
} // RSCFreeDownComplete private bool RSCNewComplectation(string IDDorID, bool thisID) { if (!thisID) { if (IsSC(IDDorID, "Сотрудники")) { return(ReactionCancel()); } else { FExcStr = "Нет действий с данным штрихкодом!"; return(false); } } else { string TextQuery = "Select " + "$Спр.МестаПогрузки.Дата8 as Date, " + "$Спр.МестаПогрузки.КонтрольНабора as Doc, " + "$Спр.МестаПогрузки.Сотрудник8 as Employer " + "from $Спр.МестаПогрузки (nolock) where id = :id"; QuerySetParam(ref TextQuery, "id", IDDorID); DataTable DT; if (!ExecuteWithRead(TextQuery, out DT)) { return(false); } if (DT.Rows.Count == 0) { FExcStr = "Нет действий с данным штрихкодом!"; return(false); } LoadBadDoc(IDDorID);//Подсосем данные по документу для просмотра состояния if (DT.Rows[0]["Doc"].ToString() != DocDown.ID) { FExcStr = "Место от другого сборочного!"; return(false); } if ((DateTime)DT.Rows[0]["Date"] != GetVoidDate()) { FExcStr = "Место уже отобрано!"; return(false); } if (DT.Rows[0]["Employer"].ToString() != Employer.ID) { FExcStr = "Этого места нет в задании!"; return(false); } //Лютый пиздец начинается! TextQuery = "begin tran; " + "UPDATE $Спр.МестаПогрузки " + "SET " + "$Спр.МестаПогрузки.Дата8 = :Date , " + "$Спр.МестаПогрузки.Время8 = :Time " + //"$Спр.МестаПогрузки.Адрес9 = dbo.WMP_fn_GetAdressComplete(id) " + "WHERE " + "id = :itemid; " + "if @@rowcount = 0 rollback tran " + "else begin " + "if exists ( " + "select top 1 Ref.id from $Спр.МестаПогрузки as Ref " + "inner join $Спр.Секции as SectionsCollect (nolock) " + "ON SectionsCollect.id = Ref.$Спр.МестаПогрузки.Адрес7 " + "inner join $Спр.Секции as RefSectionsParent (nolock) " + "on left(SectionsCollect.descr, 2) = RefSectionsParent.descr " + "where " + "Ref.ismark = 0 " + "and RefSectionsParent.descr = :NameParent " + "and Ref.$Спр.МестаПогрузки.КонтрольНабора = :iddoc " + "and Ref.$Спр.МестаПогрузки.Дата8 = :EmptyDate ) " + "commit tran " + "else begin " + "declare @res int; " + "exec WPM_GetOrderComplectationNew :Employer, :NameParent, 0, @res OUTPUT; " + "if @res = 0 rollback tran else commit tran " + "end " + "end "; QuerySetParam(ref TextQuery, "Employer", Employer.ID); QuerySetParam(ref TextQuery, "Date", DateTime.Now); QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond()); QuerySetParam(ref TextQuery, "itemid", IDDorID); QuerySetParam(ref TextQuery, "iddoc", DocDown.ID); QuerySetParam(ref TextQuery, "EmptyDate", GetVoidDate()); QuerySetParam(ref TextQuery, "NameParent", DocDown.Sector.Trim()); if (!ExecuteWithoutRead(TextQuery)) { return(false); } bool res = ToModeNewComplectation(); OnChangeMode(new ChangeModeEventArgs(FCurrentMode)); return(res); } }//RSCNewComplectation
private bool RSCLoading(string ID) { //FExcStr - несет смысл if (IsSC(ID, "Сотрудники")) { //Временно отключим блокировку путевого при погрузке версия 4.47 //LockoutDoc(WayBill.ID); return(ToModeChoiseWork(ID)); } //проверим чек погрузки string TextQuery = "select DocWayBill.$ПутевойЛист.ЧекПогрузка " + "from DH$ПутевойЛист as DocWayBill (nolock) " + "where " + "DocWayBill.iddoc = :iddoc "; QuerySetParam(ref TextQuery, "iddoc", WayBill.ID); if (Int32.Parse(ExecuteScalar(TextQuery).ToString()) == 0) { //погрузка не разрешена FExcStr = "Погрузка запрещена!"; return(false); } TextQuery = "Select " + "$Спр.МестаПогрузки.Дата6 as Date, " + "right($Спр.МестаПогрузки.Док , 9) as Doc " + "from $Спр.МестаПогрузки (nolock) where id = :id"; QuerySetParam(ref TextQuery, "id", ID); QuerySetParam(ref TextQuery, "EmptyID", GetVoidID()); DataTable DT; if (!ExecuteWithRead(TextQuery, out DT)) { return(false); } if (DT.Rows.Count == 0) { FExcStr = "Нет действий с данным штрихкодом в этом режиме!"; //блокируем путевой /*TextQuery = * "UPDATE DH$ПутевойЛист " + * "SET " + * "$ПутевойЛист.ЧекПогрузка = 0 " + * "WHERE " + * "DH$ПутевойЛист .iddoc = :id"; * * QuerySetParam(ref TextQuery, "id", WayBill.ID); * ExecuteWithoutRead(TextQuery); */ return(false); } if ((DateTime)DT.Rows[0]["Date"] != GetVoidDate()) { FExcStr = "Ошибка! Место уже погружено!"; //блокируем путевой /*TextQuery = * "UPDATE DH$ПутевойЛист " + * "SET " + * "$ПутевойЛист.ЧекПогрузка = 0 " + * "WHERE " + * "DH$ПутевойЛист .iddoc = :id"; * * QuerySetParam(ref TextQuery, "id", WayBill.ID); * ExecuteWithoutRead(TextQuery); */ return(false); } //Тут какая-то неведомая ошибка возникает, не знаю в чем дело засунул в попытку DataRow[] DR; try { DR = WayBillDT.Select("Doc = '" + DT.Rows[0]["Doc"].ToString() + "'"); } catch { FExcStr = "Неведомая ошибка! Шайтан!"; //блокируем путевой /*TextQuery = * "UPDATE DH$ПутевойЛист " + * "SET " + * "$ПутевойЛист.ЧекПогрузка = 0 " + * "WHERE " + * "DH$ПутевойЛист .iddoc = :id"; * * QuerySetParam(ref TextQuery, "id", WayBill.ID); * ExecuteWithoutRead(TextQuery); */ return(false); } if (DR.Length == 0) { FExcStr = "Не числится в данном путевом!"; //блокируем путевой TextQuery = "UPDATE DH$ПутевойЛист " + "SET " + "$ПутевойЛист.ЧекПогрузка = 0 " + "WHERE " + "DH$ПутевойЛист .iddoc = :id"; QuerySetParam(ref TextQuery, "id", WayBill.ID); ExecuteWithoutRead(TextQuery); return(false); } if (Const.OrderControl) { string currCounter = DR[0]["AdressCounter"].ToString(); DataRow[] tmpDR = WayBillDT.Select("AdressCounter > " + currCounter); if (tmpDR.Length > 0) { tmpDR = WayBillDT.Select("AdressCounter = " + currCounter); if (tmpDR.Length != WayBillDT.Rows.Count) { FExcStr = "Нарушена последовательность погрузки!"; //блокируем путевой /*TextQuery = * "UPDATE DH$ПутевойЛист " + * "SET " + * "$ПутевойЛист.ЧекПогрузка = 0 " + * "WHERE " + * "DH$ПутевойЛист .iddoc = :id"; * * QuerySetParam(ref TextQuery, "id", WayBill.ID); * ExecuteWithoutRead(TextQuery); */ return(false); } } } TextQuery = "UPDATE $Спр.МестаПогрузки " + "SET " + "$Спр.МестаПогрузки.Дата6 = :Date, " + "$Спр.МестаПогрузки.Время6 = :Time " + "WHERE " + "$Спр.МестаПогрузки .id = :id"; QuerySetParam(ref TextQuery, "Date", DateTime.Now); QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond()); QuerySetParam(ref TextQuery, "id", ID); if (!ExecuteWithoutRead(TextQuery)) { return(false); } int needCurrentLine = WayBillDT.Rows.IndexOf(DR[0]); if (!ToModeLoading(WayBill.ID)) { return(false); } CurrentLine = needCurrentLine; if (colorSwitcher) { FExcStr = "Погрузка МЕСТА зафиксирована"; } else { FExcStr = "ПОГРУЗКА места ЗАФИКСИРОВАНА"; } colorSwitcher = !colorSwitcher; return(true); }
//Reaction private bool RSCAcceptance(string IDD) { if (IsSC(IDD, "Сотрудники")) { if (!ToModeChoiseWork(IDD)) { return(false); } QuitModeAcceptance(); return(true); } else if (IsSC(IDD, "Принтеры")) { if (Printer.GetAttribute("IDD").ToString() == IDD) { FPrinter = new RefPrinter(this); FExcStr = "Обнулили принтер!"; return(true); } if (!Printer.FoundIDD(IDD)) { return(false); } return(true); } else if (IsSC(IDD, "Секции")) { if (FPalletID == "") { FExcStr = "Не выбрана паллета!"; return(false); } string SectionsID; GetSC(IDD, "Секции", out SectionsID); string StrPallets = ""; foreach (DataRow dr in FPallets.Rows) { StrPallets += ", '" + dr["ID"].ToString() + "'"; } StrPallets = StrPallets.Substring(2); //Убираем спедери запятые string TextQuery = "UPDATE $Спр.ПеремещенияПаллет " + "SET " + "$Спр.ПеремещенияПаллет.Адрес0 = :ID, " + "$Спр.ПеремещенияПаллет.ФлагОперации = 2 " + "WHERE $Спр.ПеремещенияПаллет .id in (:Pallet) "; TextQuery = TextQuery.Replace(":Pallet", StrPallets); QuerySetParam(ref TextQuery, "ID", SectionsID); QuerySetParam(ref TextQuery, "EmptyDate", GetVoidDate()); QuerySetParam(ref TextQuery, "EmployerID", Employer.ID); QuerySetParam(ref TextQuery, "Date", DateTime.Now); QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond()); if (!ExecuteWithoutRead(TextQuery)) { return(false); } //почистим табличку паллет от греха и почистим паллеты FPallets.Rows.Clear(); FPalletID = ""; FBarcodePallet = ""; return(true); } else { FExcStr = "Не верный тип справочника!"; return(false); } } // SCAcceptance
private bool CompleteLineSampleSet() { string TextQuery; //Заглушка, рефрешим позицию, чтобы не было проблем, если оборвется связь int CountFact = CCItem.CountFact; if (!RDSampleSet(DocSet.ID, CCItem.AdressID)) { CCItem.CountFact = CountFact; return(false); } CCItem.CountFact = CountFact; // текущим событием снова должен встать СканАдреса, тк набор образцов продолжается CurrentAction = ActionSet.ScanAdress; //Отключение по константе //конец заглушки int Line = CCItem.CurrLine; if (CCItem.Count > CCItem.CountFact) { if (Const.StopCorrect) { FExcStr = "Возможность дробить строку отключена!"; return(false); } //добавляем строчку TextQuery = "begin tran; " + "update DT$АдресПеремещение " + "set $АдресПеремещение.Количество = :remaincount " + "where DT$АдресПеремещение .iddoc = :iddoc and DT$АдресПеремещение .lineno_ = :currline; " + "if @@rowcount > 0 begin " + "insert into DT$АдресПеремещение ($АдресПеремещение.Товар , $АдресПеремещение.Количество ," + "$АдресПеремещение.Единица , $АдресПеремещение.Коэффициент , $АдресПеремещение.Состояние0 ," + "$АдресПеремещение.Состояние1 , $АдресПеремещение.Сотрудник0 , $АдресПеремещение.Адрес0 , $АдресПеремещение.Адрес1 ," + "$АдресПеремещение.Дата0 , $АдресПеремещение.Дата1 , $АдресПеремещение.Время0 , $АдресПеремещение.Время1 ," + "$АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " + "lineno_, iddoc, $АдресПеремещение.ЕдиницаШК ) " + "select $АдресПеремещение.Товар , :count ," + "$АдресПеремещение.Единица , $АдресПеремещение.Коэффициент ," + "$АдресПеремещение.Состояние0 , $АдресПеремещение.Состояние1 , :Employer , $АдресПеремещение.Адрес0 ," + " :AdressCollect , $АдресПеремещение.Дата0 , :Date1 , $АдресПеремещение.Время0 , :Time1 , $АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " + "(select max(lineno_) + 1 from DT$АдресПеремещение where iddoc = :iddoc), iddoc, $АдресПеремещение.ЕдиницаШК " + "from DT$АдресПеремещение as ForInst where ForInst.iddoc = :iddoc and ForInst.lineno_ = :currline; " + "if @@rowcount = 0 rollback tran else commit tran " + "end " + "else rollback"; SQL1S.QuerySetParam(ref TextQuery, "count", CCItem.CountFact); SQL1S.QuerySetParam(ref TextQuery, "remaincount", CCItem.Count - CCItem.CountFact); SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocSet.ID); SQL1S.QuerySetParam(ref TextQuery, "currline", CCItem.CurrLine); SQL1S.QuerySetParam(ref TextQuery, "AdressCollect", DocSet.AdressCollect); SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID); SQL1S.QuerySetParam(ref TextQuery, "Date1", DateTime.Now); SQL1S.QuerySetParam(ref TextQuery, "Time1", APIManager.NowSecond()); DataTable DT; if (!ExecuteWithRead(TextQuery, out DT)) { return(false); } } else { //фиксируем строку TextQuery = "UPDATE DT$АдресПеремещение WITH (rowlock) " + "SET $АдресПеремещение.Дата1 = :Date1, " + "$АдресПеремещение.Время1 = :Time1, " + "$АдресПеремещение.Адрес1 = :AdressCollect " + "WHERE DT4327.iddoc = :Doc and DT4327.lineno_ = :lineno_; "; SQL1S.QuerySetParam(ref TextQuery, "Doc", DocSet.ID); SQL1S.QuerySetParam(ref TextQuery, "Date1", DateTime.Now); SQL1S.QuerySetParam(ref TextQuery, "Time1", APIManager.NowSecond()); SQL1S.QuerySetParam(ref TextQuery, "AdressCollect", DocSet.AdressCollect); SQL1S.QuerySetParam(ref TextQuery, "lineno_", CCItem.CurrLine); if (!ExecuteWithoutRead(TextQuery)) { return(false); } } //Запись прошла успешно RefreshAmount(); CurrentAction = ActionSet.ScanAdress; //на всякий случай, если там что-нибудь накроется, то во вьюхе по крайней мере нельзя будет повторно ввести количество PreviousAction = "Отобрано " + CCItem.InvCode.Trim() + " - " + CCItem.CountFact.ToString() + " шт. (строка " + Line.ToString() + ")"; if (AllSetsRow > 0) { RDSampleSet(DocSet.ID, null); } //если в доке больше нет не отобранных, оповестим 1с о завершении набора образцов if (AllSetsRow == 0) { FExcStr = ""; CurrentAction = ActionSet.Waiting; } return(true); } //CompleteLineSampleSet
public bool CompleteCorrectSample(int Choise, int CountCorrect) { //Заглушка, рефрешим позицию, чтобы не было проблем, если оборвется связь if (!RDSampleSet(DocSet.ID, CCItem.AdressID)) { FCurrentMode = Mode.SampleSetCorrect; return(false); } FCurrentMode = Mode.SampleSetCorrect; //конец заглушки if (CountCorrect <= 0 || CountCorrect > CCItem.Count) { FExcStr = "Нельзя скорректировать столько!"; return(false); } int AdressCode; string CorrectReason; string What; switch (Choise) { case 1: AdressCode = 7; CorrectReason = " 2EU "; What = "брак"; break; case 2: AdressCode = 12; CorrectReason = " 2EV "; What = "недостача"; break; default: FExcStr = "Неясная причина корректировки!"; return(false); } string TextQuery; if (CountCorrect == CCItem.Count) //меняем скорректированную строку { TextQuery = "begin tran; " + "update DT$АдресПеремещение " + "set $АдресПеремещение.Количество = :CountCorrect, $АдресПеремещение.Состояние1 = :AdressCode, $АдресПеремещение.Адрес1 = $АдресПеремещение.Адрес0 ," + "$АдресПеремещение.Дата1 = :Date1, $АдресПеремещение.Время1 = :Time1 " + "where DT$АдресПеремещение .iddoc = :iddoc and DT$АдресПеремещение .lineno_ = :currline; " + "if @@rowcount = 0 rollback tran else commit tran "; } else //меняем скорректированную строку и добавляем новую, исходя из количества { TextQuery = "begin tran; " + "update DT$АдресПеремещение " + "set $АдресПеремещение.Количество = :count " + "where DT$АдресПеремещение .iddoc = :iddoc and DT$АдресПеремещение .lineno_ = :currline; " + "if @@rowcount > 0 begin " + "insert into DT$АдресПеремещение ($АдресПеремещение.Товар , $АдресПеремещение.Количество ," + "$АдресПеремещение.Единица , $АдресПеремещение.Коэффициент , $АдресПеремещение.Состояние0 ," + "$АдресПеремещение.Состояние1 , $АдресПеремещение.Сотрудник0 , $АдресПеремещение.Адрес0 , $АдресПеремещение.Адрес1 ," + "$АдресПеремещение.Дата0 , $АдресПеремещение.Дата1 , $АдресПеремещение.Время0 , $АдресПеремещение.Время1 ," + "$АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " + "lineno_, iddoc, $АдресПеремещение.ЕдиницаШК ) " + "select $АдресПеремещение.Товар , :CountCorrect ," + "$АдресПеремещение.Единица , $АдресПеремещение.Коэффициент ," + "$АдресПеремещение.Состояние0 , :AdressCode , :Employer , $АдресПеремещение.Адрес0 ," + "$АдресПеремещение.Адрес0 , $АдресПеремещение.Дата0 , :Date1 , $АдресПеремещение.Время0 , :Time1 , $АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " + "(select max(lineno_) + 1 from DT$АдресПеремещение where iddoc = :iddoc), iddoc, $АдресПеремещение.ЕдиницаШК " + "from DT$АдресПеремещение as ForInst where ForInst.iddoc = :iddoc and ForInst.lineno_ = :currline; " + "if @@rowcount = 0 rollback tran else commit tran " + "end " + "else rollback"; } QuerySetParam(ref TextQuery, "iddoc", DocSet.ID); QuerySetParam(ref TextQuery, "currline", CCItem.CurrLine); QuerySetParam(ref TextQuery, "CountCorrect", CountCorrect); QuerySetParam(ref TextQuery, "Date1", DateTime.Now); QuerySetParam(ref TextQuery, "Time1", APIManager.NowSecond()); QuerySetParam(ref TextQuery, "count", CCItem.Count - CountCorrect); QuerySetParam(ref TextQuery, "Reason", CorrectReason); QuerySetParam(ref TextQuery, "AdressCode", AdressCode); QuerySetParam(ref TextQuery, "Employer", Employer.ID); if (!ExecuteWithoutRead(TextQuery)) { return(false); } PreviousAction = "Корректировка принята " + CCItem.InvCode.Trim() + " - " + CountCorrect.ToString() + " шт. (" + What + ")"; return(ToModeSampleSet()); } // CompleteCorrectSample
} // RefreshCCRP public bool CompleteLineSet() { string TextQuery; //Заглушка, рефрешим позицию, чтобы не было проблем, если оборвется связь int CountFact = CCItem.CountFact; if (!ToModeSet(CCItem.AdressID, DocSet.ID)) { CCItem.CountFact = CountFact; CurrentAction = DocSet.BoxID == SQL1S.GetVoidID() ? ActionSet.ScanAdress : ActionSet.ScanBox; //Отключение по константе return(false); } CCItem.CountFact = CountFact; CurrentAction = DocSet.BoxID == SQL1S.GetVoidID() ? ActionSet.ScanAdress : ActionSet.ScanBox; //Отключение по константе //конец заглушки int Line = CCItem.CurrLine; if (CCItem.Count > CCItem.CountFact) { if (Const.StopCorrect) { FExcStr = "Возможность дробить строку отключена!"; return(false); } //добавить строчку надо TextQuery = "begin tran; " + "update DT$КонтрольНабора " + "set $КонтрольНабора.Количество = :remaincount, " + "$КонтрольНабора.Сумма = :remaincount*$КонтрольНабора.Цена " + "where DT$КонтрольНабора .iddoc = :iddoc and DT$КонтрольНабора .lineno_ = :currline; " + "if @@rowcount > 0 begin " + "insert into DT$КонтрольНабора ($КонтрольНабора.СтрокаИсх , $КонтрольНабора.Товар , $КонтрольНабора.Количество ," + "$КонтрольНабора.Единица , $КонтрольНабора.Цена , $КонтрольНабора.Коэффициент , $КонтрольНабора.Сумма ," + "$КонтрольНабора.Секция , $КонтрольНабора.Корректировка , $КонтрольНабора.ПричинаКорректировки , $КонтрольНабора.ЕдиницаШК ," + "$КонтрольНабора.Состояние0 , $КонтрольНабора.Адрес0 , $КонтрольНабора.СостояниеКорр , $КонтрольНабора.АдресКорр ," + "$КонтрольНабора.ДокБлокировки , $КонтрольНабора.Дата5 , $КонтрольНабора.Время5 , $КонтрольНабора.Контейнер , " + "lineno_, iddoc, $КонтрольНабора.Контроль ) " + "select $КонтрольНабора.СтрокаИсх , $КонтрольНабора.Товар , :count ," + "$КонтрольНабора.Единица , $КонтрольНабора.Цена , $КонтрольНабора.Коэффициент , :count*$КонтрольНабора.Цена ," + "$КонтрольНабора.Секция , $КонтрольНабора.Корректировка , $КонтрольНабора.ПричинаКорректировки , $КонтрольНабора.ЕдиницаШК ," + "$КонтрольНабора.Состояние0 , $КонтрольНабора.Адрес0 , $КонтрольНабора.СостояниеКорр , $КонтрольНабора.АдресКорр ," + "$КонтрольНабора.ДокБлокировки , $КонтрольНабора.Дата5 , $КонтрольНабора.Время5 , $КонтрольНабора.Контейнер , " + "(select max(lineno_) + 1 from DT$КонтрольНабора where iddoc = :iddoc), iddoc, 0 " + "from DT$КонтрольНабора as ForInst where ForInst.iddoc = :iddoc and ForInst.lineno_ = :currline; " + "select max(lineno_) as newline from DT$КонтрольНабора where iddoc = :iddoc; " + "if @@rowcount = 0 rollback tran else commit tran " + "end " + "else rollback"; QuerySetParam(ref TextQuery, "count", CCItem.CountFact); QuerySetParam(ref TextQuery, "remaincount", CCItem.Count - CCItem.CountFact); QuerySetParam(ref TextQuery, "iddoc", DocSet.ID); QuerySetParam(ref TextQuery, "currline", CCItem.CurrLine); DataTable DT; if (!ExecuteWithRead(TextQuery, out DT)) { return(false); } //Писать будем в добалвенную, так лучше! Поэтому обновляем корректную строчку CCItem.CurrLine = (short)DT.Rows[0]["newline"]; } //фиксируем строку TextQuery = "UPDATE DT$КонтрольНабора WITH (rowlock) " + "SET $КонтрольНабора.Дата5 = :Date5, " + "$КонтрольНабора.Время5 = :Time5, " + "$КонтрольНабора.Контейнер = :id " + "WHERE DT$КонтрольНабора .iddoc = :DocCC and DT$КонтрольНабора .lineno_ = :lineno_; "; QuerySetParam(ref TextQuery, "id", GetVoidID()); QuerySetParam(ref TextQuery, "DocCC", DocSet.ID); QuerySetParam(ref TextQuery, "Date5", DateTime.Now); QuerySetParam(ref TextQuery, "Time5", APIManager.NowSecond()); QuerySetParam(ref TextQuery, "lineno_", CCItem.CurrLine); if (!ExecuteWithoutRead(TextQuery)) { return(false); } //Запись прошла успешно CurrentAction = ActionSet.ScanAdress; //на всякий случай, если там что-нибудь наебнется, то во вьюхе по крайней мере нельзя будет повторно ввести количество PreviousAction = "Отобрано " + CCItem.InvCode.Trim() + " - " + CCItem.CountFact.ToString() + " шт. (строка " + Line.ToString() + ")"; return(ToModeSet(null, null)); } // CompleteLineSet