public int ProceedSSCC(ScanVarRM xSc, ref PSC_Types.ScDat scD) { ServerExchange xSE = null; return(ProceedSSCC(xSc, ref scD, xSE)); }
public int ConvertSSCC2Lst(ServerExchange xSE, string sSSCC, ref PSC_Types.ScDat scD, bool bInfoOnEmk, DataTable dtResult) { int nRec, nRet = AppC.RC_OK; string sP; DataSet dsTrans = null; // вместе с командой отдаем заголовок документа xCUpLoad = new CurUpLoad(xPars); xCUpLoad.sCurUplCommand = AppC.COM_ZSC2LST; if (xCDoc.drCurRow is DataRow) { dsTrans = xNSI.MakeWorkDataSet(xNSI.DT[NSI.BD_DOCOUT].dt, dtResult, new DataRow[] { xCDoc.drCurRow }, null, xSm, xCUpLoad); } MakeTempDOUTD(dtResult); LoadFromSrv dgL = new LoadFromSrv(LstFromSSCC); xCLoad = new CurLoad(); xCLoad.sSSCC = sSSCC; xCLoad.xLP.lSysN = xCDoc.nId; xCLoad.dtZ = dtL; sP = String.Format("(SSCC={0},TYPE={1})", sSSCC, "ROW"); string sL = xSE.ExchgSrv(AppC.COM_ZSC2LST, sP, "", dgL, dsTrans, ref nRet, 20); if (dtL.Rows.Count > 0) { nRet = TestProdBySrv(xSE, nRet); if (nRet == AppC.RC_OK) { nRec = xCLoad.dtZ.Rows.Count; if (nRec == 1) {// будем изображивать сканирование SetVirtScan(xCLoad.dtZ.Rows[0], ref scD, true, bInfoOnEmk); scD.sSSCC = sSSCC; } else {// добавление группы ??? nRet = AppC.RC_MANYEAN; } } } else {// просто сохраним запись ??? - если была сетевая ошибка! при ошибке сервера ничего сохранять не надо! if (xSE.ServerRet != AppC.RC_OK) { Srv.ErrorMsg(sL); } } return(nRet); }
// Обработка сканирования на панели Документов private void ProceedScanSSCC(ScanVarGP xSc, ref PSC_Types.ScDat s) { int nRet = AppC.RC_OK; string sH, sPar, sErr = ""; CurLoad ret = null; ServerExchange xSE = new ServerExchange(this); if ((s.xSCD.bcFlags & ScanVarGP.BCTyp.SP_SSCC) > 0) { AddSSCC2SSCCTable(s.xSCD.Dat, 0, xCDoc, 0, 0, 1); } }
//private void WhatSSCCContent() //{ // int // nRet; // string // sSSCC; // ServerExchange // xSE = new ServerExchange(this); // try // { // if (tcMain.SelectedIndex == PG_SCAN) // { // sSSCC = (string)drDet["SSCC"]; // try // { // if ((xCLoad.sSSCC == sSSCC) && (xCLoad.sComLoad == AppC.COM_ZSC2LST) && (xCLoad.dtZ.Rows.Count > 0)) // { // ShowSSCCContent(xCLoad.dtZ, sSSCC, xCDoc.xOper.xAdrSrc); // return; // } // } // catch { } // if (scCur.nKrKMC == AppC.KRKMC_MIX) // { // PSC_Types.ScDat scD = scCur; // //nRet = ConvertSSCC2Lst(xSE, sSSCC, true, false, ref scD); // nRet = ConvertSSCC2Lst(xSE, scCur.sSSCC, ref scD, true, xNSI.DT[NSI.BD_DOUTD].dt); // if ((nRet == AppC.RC_OK) || (nRet == AppC.RC_MANYEAN)) // { // ShowSSCCContent(xCLoad.dtZ, sSSCC, xCDoc.xOper.xAdrSrc); // return; // } // } // } // } // catch { } // xCDoc.sSSCC = ""; // WaitScan4Func(AppC.F_CNTSSCC, "Содержимое SSCC", "Отсканируйте SSCC"); //} private void WhatSSCCContent() { int nRet; string sSSCC; ServerExchange xSE = new ServerExchange(this); try { if (tcMain.SelectedIndex == PG_SCAN) { sSSCC = (string)drDet["SSCC"]; try { if ((xCLoad.sSSCC == sSSCC) && (xCLoad.sComLoad == AppC.COM_ZSC2LST) && (xCLoad.dtZ.Rows.Count > 0)) { ShowSSCCContent(xCLoad.dtZ, sSSCC, null, xCDoc.xOper.xAdrSrc, ref ehCurrFunc); return; } } catch { } if (scCur.nKrKMC == AppC.KRKMC_MIX) { PSC_Types.ScDat scD = scCur; nRet = ConvertSSCC2Lst(xSE, sSSCC, ref scD, false); if ((nRet == AppC.RC_OK) || (nRet == AppC.RC_MANYEAN)) { ShowSSCCContent(xCLoad.dtZ, sSSCC, xSE, xCDoc.xOper.xAdrSrc, ref ehCurrFunc); return; } } } } catch { } xCDoc.sSSCC = ""; WaitScan4Func(AppC.F_CNTSSCC, "Содержимое SSCC", "Отсканируйте SSCC"); }
/// подготовить и отобразить содержимое SSCC private void ShowSSCCContent(DataTable dtZ, string sSSCC, ServerExchange xSE, AddrInfo xA, ref Srv.CurrFuncKeyHandler ehKeybHdl) { const int NP_LEN = 5; int nTotMest, nM; string sNP, sUser = "", sFIO = ""; char cExCh = '='; DataRow xd; DateTime dVyr; List <string> lKMC = new List <string>(), lCur = new List <string>(); FRACT fTotEd, fE; nTotMest = 0; fTotEd = 0; try { string sA = ""; try { sA = xA.AddrShow; } catch { } try { sUser = xSE.AnswerPars["USER"]; if ((sUser == AppC.SUSER) || (sUser == AppC.GUEST)) { sFIO = (sUser == AppC.SUSER) ? "Admin" : "Работник склада"; } else { NSI.RezSrch zS = xNSI.GetNameSPR(NSI.NS_USER, new object[] { sUser }, "NMP"); if (zS.bFind) { sFIO = sUser + '-' + zS.sName; } else { sFIO = sUser; } } } catch { sFIO = ""; } xInf = aKMCName(String.Format("{0} ({1}) {2}", sSSCC.Substring(2), sA, sFIO), false); xInf.Add(aKMCName("", true, cExCh)[0]); if (dtZ.Rows.Count > 0) { DataView dv = new DataView(dtZ, "", "KMC", DataViewRowState.CurrentRows); foreach (DataRowView dva in dv) { xd = dva.Row; try { nM = (int)xd["KOLM"]; } catch { nM = 0; } try { fE = (FRACT)xd["KOLE"]; } catch { fE = 0; } try { dVyr = DateTime.ParseExact((string)xd["DVR"], "yyyyMMdd", null); } catch { dVyr = DateTime.MinValue; } nTotMest += nM; fTotEd += fE; if (!lKMC.Contains((string)xd["KMC"])) { lKMC.Add((string)xd["KMC"]); } lCur.Add(String.Format("{0,4} {1}", xd["KRKMC"], xd["SNM"])); //lCur.Add(String.Format("{0} {1,6} {2,5:F1} {3,6} {4,7}", dVyr.ToString("dd.MM"), xd["NP"], xd["EMK"], nM, fE)); sNP = xd["NP"].ToString(); if (sNP.Length > NP_LEN) { sNP = sNP.Substring(sNP.Length - NP_LEN, NP_LEN); } else { sNP = sNP.PadLeft(NP_LEN); } lCur.Add(String.Format("{0} {1,5} {2,5:F1} {3,6} {4,7}", dVyr.ToString("dd.MM"), sNP, xd["EMK"], nM, fE)); lCur.Add(aKMCName("", true)[0]); } xInf.Add(String.Format("Всего SKU: {0} Мест:{1} Ед.:{2}", lKMC.Count, nTotMest, fTotEd)); xInf.Add(aKMCName("", true, cExCh)[0]); xInf.Add(" Двыр №пт Емк Мест Ед."); xInf.Add(aKMCName("", true, cExCh)[0]); xInf.AddRange(lCur); } else { xInf.Add("Нет сведений!"); Srv.PlayMelody(W32.MB_3GONG_EXCLAM); } //xHelpS.ShowInfo(xInf, ref ehKeybHdl); Srv.HelpShow xSSCCCont = new Srv.HelpShow(this); //xSSCCCont.ShowInfo(xInf, ref ehKeybHdl); xSSCCCont.ShowInfo(null, (tcMain.SelectedIndex == PG_DOC) ? dgDoc : (tcMain.SelectedIndex == PG_SCAN) ? dgDet : null, xInf, ref ehKeybHdl); } catch (Exception ex) { int ggg = 999; } }
public int ConvertSSCC2Lst(ServerExchange xSE, string sSSCC, ref PSC_Types.ScDat scD, bool bInfoOnEmk) { return(ConvertSSCC2Lst(xSE, sSSCC, ref scD, bInfoOnEmk, xNSI.DT[NSI.BD_DOUTD].dt)); }
private void TryLoadSSCC(string sSSCC, int nRet) { int nM, nRec, nNPP; DataRow dr = null; DataTable dtD = xNSI.DT[NSI.BD_DIND].dt; DataSet ds; ServerExchange xSE = new ServerExchange(this); PSC_Types.ScDat scD = new PSC_Types.ScDat(new BarcodeScannerEventArgs(BCId.Code128, "")); //nRet = ConvertSSCC2Lst(xSE, sSSCC, ref scD, true, xNSI.DT[NSI.BD_DIND].dt); if ((nRet == AppC.RC_OK) || (nRet == AppC.RC_MANYEAN)) { xCDoc.drCurRow["CHKSSCC"] = 1; // для контроля удаляем все предыдущие DataRow[] drMDet = xCDoc.drCurRow.GetChildRows(xNSI.dsM.Relations[NSI.REL2TTN]); foreach (DataRow drDel in drMDet) { xNSI.dsM.Tables[NSI.BD_DOUTD].Rows.Remove(drDel); } DataRow[] drMDetZ = xCDoc.drCurRow.GetChildRows(xNSI.dsM.Relations[NSI.REL2ZVK]); foreach (DataRow drDel in drMDetZ) { xNSI.dsM.Tables[NSI.BD_DIND].Rows.Remove(drDel); } ds = xCLoad.dsZ; Cursor.Current = Cursors.WaitCursor; try { nRec = xCLoad.dtZ.Rows.Count; nM = 0; nNPP = 1; foreach (DataRow drA in dtL.Rows) { scD = new PSC_Types.ScDat(new BarcodeScannerEventArgs(BCId.Code128, "")); nM += SetOneDetZ(ref scD, dtD, ds, drA, xCDoc.drCurRow, ref nNPP); nNPP++; } scCur = new PSC_Types.ScDat(new BarcodeScannerEventArgs(BCId.Code128, "")); SetDetFields(true); Srv.ErrorMsg(String.Format("{0} строк загружено", nRec), String.Format("SSCC...{0}", sSSCC.Substring(15, 5)), false); } catch (Exception exx) { Srv.ErrorMsg(exx.Message, "Ошибка загрузки!", true); } finally { Cursor.Current = Cursors.Default; } } }
private string UpLoadDoc(ServerExchange xSExch, ref int nR) { int i, nRet = AppC.RC_OK; string nComm, sErr = "", sAllErr = ""; DataSet dsTrans; DataRow[] drAUpL = null; LoadFromSrv dgL = null; try { drAUpL = PrepDataArrForUL(xCUpLoad.ilUpLoad.CurReg); if (drAUpL != null) { if (xCUpLoad.sCurUplCommand != AppC.COM_CKCELL) { dgL = new LoadFromSrv(SetUpLoadState); } for (i = 0; i < drAUpL.Length; i++) { nRet = AppC.RC_OK; nComm = (xCUpLoad.naComms[i] == AppC.TYPD_INV) ? AppC.COM_VINV : (xCUpLoad.naComms[i] == AppC.TYPD_VPER) ? AppC.COM_VVPER : (xCUpLoad.naComms[i] == AppC.TYPD_OPR) ? AppC.COM_VOPR : AppC.COM_VTTN; switch ((int)(drAUpL[i]["TYPOP"])) { case AppC.TYPOP_MARK: nComm = AppC.COM_VMRK; break; case AppC.TYPOP_OTGR: case AppC.TYPOP_KMPL: nComm = AppC.COM_VKMPL; break; } if (xCUpLoad.sCurUplCommand.Length == 0) { xCUpLoad.sCurUplCommand = nComm; } dsTrans = xNSI.MakeWorkDataSet(xNSI.DT[NSI.BD_DOCOUT].dt, xNSI.DT[NSI.BD_DOUTD].dt, new DataRow[] { drAUpL[i] }, null, xSm, xCUpLoad); sErr = xSExch.ExchgSrv(xCUpLoad.sCurUplCommand, "", "", dgL, dsTrans, ref nRet, 300); if ((xSExch.ServerRet == AppC.RC_OK) && (sErr != "OK")) { nRet = AppC.RC_HALFOK; } if (nRet != AppC.RC_OK) { nR = nRet; sAllErr += sErr + "\n"; } } } else { nRet = AppC.RC_NODATA; sErr = "Нет данных для передачи"; } } catch (Exception) { nRet = AppC.RC_NODATA; sErr = "Ошибка подготовки"; } if (sAllErr.Length == 0) { nR = nRet; sAllErr = sErr; } return(sAllErr); }
// Обработка сканирования на панели Документов private void ProceedScanDoc(ScanVarGP xSc, ref PSC_Types.ScDat s) { int nRet = AppC.RC_OK; string sH, sPar, sErr = ""; CurLoad ret; ServerExchange xSE = new ServerExchange(this); if ((xSc.bcFlags & ScanVarGP.BCTyp.SP_SSCC_INT) > 0) { xCLoad = new CurLoad(AppC.UPL_ALL); xCLoad.sSSCC = xSc.Dat; xCLoad.drPars4Load = xNSI.DT[NSI.BD_KMPL].dt.NewRow(); LoadKomplLst(xCLoad.drPars4Load, AppC.F_LOADKPL); } else { ret = TransDocCode(ref s, xSE); if (ret != null) { xCLoad = ret; if (xSE.FullCOM2Srv.Length == 0) { if (bInLoad == true) { W32.keybd_event(W32.VK_ESC, W32.VK_ESC, 0, 0); W32.keybd_event(W32.VK_ESC, W32.VK_ESC, 0, 0); W32.keybd_event(W32.VK_ESC, W32.VK_ESC, W32.KEYEVENTF_KEYUP, 0); W32.keybd_event(W32.VK_ESC, W32.VK_ESC, W32.KEYEVENTF_KEYUP, 0); } else { LoadDocFromServer(AppC.F_INITRUN, new KeyEventArgs(Keys.Enter), ref ehCurrFunc); } } else { AutoSaveDat(); LoadFromSrv dgL = new LoadFromSrv(DocFromSrv); xCLoad.nCommand = AppC.F_LOAD_DOC; xCLoad.sComLoad = AppC.COM_ZZVK; sErr = xSE.ExchgSrv(AppC.COM_ZZVK, "", "", dgL, null, ref nRet); MessageBox.Show("Загрузка окончена - " + sErr, "Код - " + nRet.ToString()); PosOnLoaded(nRet); Back2Main(); } } else { xCUpLoad = new CurUpLoad(); if (xSE.FullCOM2Srv.Length == 0) { sPar = String.Format("BC={0};BCT={1}", xSc.Dat, xSc.Id.ToString().ToUpper()); sErr = xSE.ExchgSrv(AppC.COM_UNKBC, sPar, "", null, null, ref nRet); } else { AutoSaveDat(); LoadFromSrv dgL = new LoadFromSrv(DocFromSrv); xCLoad.nCommand = AppC.F_LOAD_DOC; xCLoad.sComLoad = AppC.COM_ZZVK; sErr = xSE.ExchgSrv(AppC.COM_ZZVK, "", "", dgL, null, ref nRet); MessageBox.Show("Загрузка окончена - " + sErr, "Код - " + nRet.ToString()); PosOnLoaded(nRet); Back2Main(); } if (nRet != AppC.RC_OK) { nRet = xSE.ServerRet; if (nRet != AppC.RC_NEEDPARS) { } Srv.PlayMelody(W32.MB_4HIGH_FLY); sH = "Ошибка!"; } else { sH = "Код отправлен"; } Srv.ErrorMsg(sErr, sH, false); } } }
private string UpLoadDoc(ServerExchange xSExch, ref int nR) { int i, nRet = AppC.RC_OK; string nComm, sErr = "", sAllErr = ""; DataSet dsTrans; DataRow[] drAUpL = null; LoadFromSrv dgL = null; try { drAUpL = PrepDataArrForUL(xCUpLoad.ilUpLoad.CurReg); if (drAUpL != null) { if (xCUpLoad.sCurUplCommand != AppC.COM_CKCELL) { dgL = new LoadFromSrv(SetUpLoadState); } for (i = 0; i < drAUpL.Length; i++) { dsTrans = xNSI.MakeWorkDataSet(xNSI.DT[NSI.BD_DOCOUT].dt, xNSI.DT[NSI.BD_DOUTD].dt, new DataRow[] { drAUpL[i] }, null, xSm, xCUpLoad); if (dsTrans.Tables[NSI.BD_DOUTD].Rows.Count > 0) { nRet = AppC.RC_OK; nComm = AppC.COM_VDOC; if (xCUpLoad.sCurUplCommand.Length == 0) { xCUpLoad.sCurUplCommand = nComm; } sErr = xSExch.ExchgSrv(xCUpLoad.sCurUplCommand, "", "", dgL, dsTrans, ref nRet, 600); if ((xSExch.ServerRet == AppC.RC_OK) && (sErr != "OK")) { nRet = AppC.RC_HALFOK; } if (nRet != AppC.RC_OK) { nR = nRet; sAllErr += sErr + "\n"; } } else { Srv.ErrorMsg(String.Format("Тип {0} №{1} от {2} -\nнет данных!", drAUpL[i]["TD"], drAUpL[i]["NOMD"], drAUpL[i]["DT"])); } } } else { nRet = AppC.RC_NODATA; sErr = "Нет данных для передачи"; } } catch (Exception) { nRet = AppC.RC_NODATA; sErr = "Ошибка подготовки"; } if (sAllErr.Length == 0) { nR = nRet; sAllErr = sErr; } return(sAllErr); }
public int ProceedSSCC(ScanVarGP xSc, ref PSC_Types.ScDat scD, ServerExchange xSE) { int ret = AppC.RC_OK; // по умолчанию - обработку скана заканчиваем bool bExt, bCallExch = false, bMaySet = true; string sSSCC = ""; DataRow dr = null; RowObj xR; DialogResult dRez; //ServerExchange // xSE = new ServerExchange(this); if (xSE == null) { xSE = new ServerExchange(this); bCallExch = true; } // Внешние SSCC bExt = ((xSc.bcFlags & ScanVarGP.BCTyp.SP_SSCC_EXT) > 0) ? true : false; sSSCC = scD.sSSCC = xCDoc.xOper.SSCC = xSc.Dat; if (bCallExch) { ret = ConvertSSCC2Lst(xSE, xSc.Dat, ref scD, false); } else { ret = (xCLoad.dtZ.Rows.Count == 1) ? AppC.RC_OK : AppC.RC_MANYEAN; } if (xSE.AnswerPars.ContainsKey("ADRCELL")) { AddrInfo xA = new AddrInfo(xSE.AnswerPars["ADRCELL"], xSm.nSklad); if (xA.Addr.Length > 0) { if (!xCDoc.xOper.IsFillSrc()) { xCDoc.xOper.SetOperSrc(xA, xCDoc.xDocP.nTypD, true); } } } switch (xCDoc.xDocP.TypOper) { case AppC.TYPOP_PRMK: case AppC.TYPOP_MARK: if (!bExt && (xCDoc.xDocP.TypOper == AppC.TYPOP_MARK)) { // будет маркировка сборного поддона dr = AddDetSSCC(xSc, xCDoc.nId, ScanVarGP.BCTyp.SP_SSCC_INT, ""); if (dr != null) { drDet = dr; } break; } if (drDet != null) { xR = new RowObj(drDet); if (xR.IsSSCC) { dRez = MessageBox.Show( String.Format("SSCC={0}\nОтменить (Enter)?\n(ESC)-изменить SSCC", xR.sSSCC), "Уже маркирован!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); bMaySet = (dRez == DialogResult.OK) ? false : true; } if (bMaySet) { drDet["SSCC"] = xSc.Dat; SetOverOPR(false, drDet); } } break; case AppC.TYPOP_MOVE: // операция перемещения if (!xCDoc.xOper.IsFillSrc() && !xCDoc.xOper.IsFillDst() && (xSm.xAdrFix1 == null)) { Srv.ErrorMsg("Адрес не указан!", true); return(ret); } if ((ret == AppC.RC_OK) || (ret == AppC.RC_MANYEAN)) { if (xCLoad.dtZ.Rows.Count == 1) { // однородный поддон if (xCDoc.xOper.IsFillSrc() && ((xCDoc.xOper.xAdrSrc.nType & ADR_TYPE.SSCC) > 0)) { Srv.ErrorMsg("SSCC-Адрес недопустим!", true); break; } else { // 090.08.18 //AddDet1(ref scD, out dr); ret = AppC.RC_WARN; } } else { // сборный поддон идет одной строкой dr = AddDetSSCC(xSc, xCDoc.nId, ScanVarGP.BCTyp.SP_SSCC_EXT, ""); if (dr is DataRow) { ret = AppC.RC_OK; if (AppPars.ShowSSCC) { ShowSSCCContent(xCLoad.dtZ, xSc.Dat, xSE, xCDoc.xOper.xAdrSrc, ref ehCurrFunc); } } } } else { // получить расшифровку SSCC от сервера не удалось if ((xSE.ServerRet == AppC.EMPTY_INT) || (xSE.ServerRet == AppC.RC_OK)) { // но это не ошибка на сервере, возможно, сетевая ошибка dr = AddDetSSCC(xSc, xCDoc.nId, ScanVarGP.BCTyp.SP_SSCC_EXT, ""); ret = AppC.RC_OK; } } if (dr != null) { drDet = dr; } //IsOperReady(dr); IsOperReady(); break; case AppC.TYPOP_DOCUM: case AppC.TYPOP_KMPL: // документ или комплектация if ((!xCDoc.xOper.IsFillSrc() && (xPars.UseAdr4DocMode) && (AppC.xDocTInf[xCDoc.xDocP.nTypD].MoveType == AppC.MOVTYPE.RASHOD))) { Srv.ErrorMsg("Адрес не указан!", true); return(ret); } if (ret == AppC.RC_OK) { if (xCLoad.dtZ.Rows.Count == 1) { // монопаллет, продолжается обычная обработка скана if (!bCallExch) { AddDet1(ref scD, out dr); } else { ret = AppC.RC_WARN; } } } else if (ret == AppC.RC_MANYEAN) { // для сборного поддона if (AppC.xDocTInf[xCDoc.xDocP.nTypD].MoveType == AppC.MOVTYPE.AVAIL) { // в инвентаризацию - добавление без запроса ret = AddGroupDet(ret, (int)NSI.SRCDET.SSCCT, xSc.Dat); } else { if (AppPars.ShowSSCC) { WaitScan4Func(AppC.F_CNTSSCC, "Содержимое SSCC", "Отсканируйте SSCC", xSc); } } // в любом случае обработку скана заканчиваем ret = AppC.RC_OK; } break; case AppC.TYPOP_OTGR: ret = SSCC4OTG(xSE, xSc, ref scD, (bExt) ? ScanVarGP.BCTyp.SP_SSCC_EXT : ScanVarGP.BCTyp.SP_SSCC_INT); break; } return(ret); }
private void LoadAllSSCC() { int nRet = AppC.RC_OK, nK, nRezCtrl; string sE, sSSCC = ""; PSC_Types.ScDat scD = scCur; ServerExchange xSE = new ServerExchange(this); DelTTN4Doc(xCDoc.drCurRow); DataRow[] drSSCCAll = xCDoc.drCurRow.GetChildRows(xNSI.dsM.Relations[NSI.REL2SSCC]); foreach (DataRow drSSCC in drSSCCAll) { if ((int)drSSCC["IN_TTN"] > 0) { sSSCC = (string)drSSCC["SSCC"]; nRet = ConvertSSCC2Lst(xSE, sSSCC, ref scD, false); if ((nRet == AppC.RC_OK) || (nRet == AppC.RC_MANYEAN)) { //if (nRet == AppC.RC_MANYEAN) // nRet = AddGroupDet(AppC.RC_MANYEAN, (int)NSI.SRCDET.SSCCT, sSSCC); nRet = AddGroupDet(AppC.RC_MANYEAN, (int)NSI.SRCDET.SSCCT, sSSCC, false); } if (nRet != AppC.RC_OK) { Srv.ErrorMsg("Ошибка загрузки " + sSSCC, "Код-" + nRet.ToString(), true); DelTTN4Doc(xCDoc.drCurRow); break; } } } if (nRet == AppC.RC_OK) { if (bZVKPresent) { Cursor.Current = Cursors.WaitCursor; xNSI.DT[NSI.BD_DIND].dt.AcceptChanges(); List <DataRow> lDD = new List <DataRow>(); DataView dvZ = new DataView(xNSI.DT[NSI.BD_DIND].dt, xCDoc.DefDetFilter(), "KMC", DataViewRowState.CurrentRows); //for (int i = 0; i < dvZ.Count; i++) //{ // if ( PSC_Types.IsTara((string)dvZ[i].Row["EAN13"], (int)dvZ[i].Row["KRKMC"]) ) // { // lDD.Add(dvZ[i].Row); // dvZ[i].Row.Delete(); // } //} foreach (DataRowView drv in dvZ) { if (PSC_Types.IsTara((string)drv.Row["EAN13"], (int)drv.Row["KRKMC"])) { lDD.Add(drv.Row); drv.Row.Delete(); } } try { xInf = new List <string>(); nRezCtrl = ControlDocZVK(null, xInf, ""); } finally { Cursor.Current = Cursors.Default; foreach (DataRow dr in lDD) { dr.RejectChanges(); } } xHelpS.ShowInfo(xInf, ref ehCurrFunc); } } }
// загрузка справочников с сервера //private int LoadAllNSISrv(string[] aI, bool bMD5, bool xShow) //{ // return (nRet); //} // групповая операция (проверка/загрузка) private void LoadNsiMenu(bool bTestByMD5, string[] aTables) { bool xShow = true, bOldNsi; string i, sFull = "", sT = ""; ServerExchange xSE = new ServerExchange(this); //xBCScanner.WiFi.IsEnabled = true; xBCScanner.WiFi.ShowWiFi(pnLoadDocG, true); xFPan.UpdateSrv(xPars.sHostSrv); xFPan.ShowP(6, 45, "Обновление НСИ", (bTestByMD5 == true) ? "Проверка" : "Загрузка"); xFPan.UpdateHelp("Соединение с сервером"); int j, nErr = 0, nGood = 0, nRet = 0, tc1 = Environment.TickCount; xNSI.dsNSI.EnforceConstraints = false; if (aTables.Length == 0) { //aTables = new string[xNSI.DT.Keys.Count]; //xNSI.DT.Keys.CopyTo(aTables, 0); List <string> lT = new List <string>(); foreach (KeyValuePair <string, NSI.TableDef> td in xNSI.DT) { if (((td.Value.nType & NSI.TBLTYPE.NSI) == NSI.TBLTYPE.NSI) && ((td.Value.nType & NSI.TBLTYPE.LOAD) == NSI.TBLTYPE.LOAD)) // НСИ загружаемое { lT.Add(td.Key); } } aTables = lT.ToArray(); } for (j = 0; j < aTables.Length; j++) { nRet = 0; i = aTables[j]; //if (((bTestByMD5) && (((DateTime)xNSI.BD_TINF_RW(i)["LASTLOAD"]).Date < DateTime.Now.Date)) || // (!bTestByMD5)) try { bOldNsi = (((DateTime)xNSI.BD_TINF_RW(i)["LASTLOAD"]).Date < DateTime.Now.Date); } catch { bOldNsi = true; } if ((bTestByMD5 && bOldNsi) || (!bTestByMD5)) { LoadNSISrv lnsi = new LoadNSISrv(xNSI, i, bTestByMD5); sT = xSE.ExchgSrv(AppC.COM_ZSPR, i, lnsi.sDop, lnsi.dgL, null, ref nRet); if (nRet == 0) { nGood++; } else { nErr++; } sT = xNSI.DT[i].Text + "..." + sT + "\r\n"; sFull += sT; if (xShow == true) { xFPan.UpdateReg(sT); } } } try { xNSI.dsNSI.EnforceConstraints = true; } catch { nErr = 1; } if (nErr == 0) { //xSm.dtLoadNS = DateTime.Now; } sT = Srv.TimeDiff(tc1, Environment.TickCount); if (bTestByMD5 == false) { MessageBox.Show(sFull, "Время-" + sT); } xFPan.HideP(); }
// Обработка сканирования на панели Документов private CurLoad TransDocCode(ref PSC_Types.ScDat s, ServerExchange xSE) { string sEks, sPol; bool ret = false; CurLoad xL = null; if (xScrDoc.CurReg == 0) { string sS = s.s; int i, nLen; xL = new CurLoad(AppC.UPL_FLT, Doc4Chk); ret = true; try { if (s.ci == ScannerAll.BCId.Code128) { nLen = sS.Length; switch (nLen) { case 14: // № накладной ret = false; if (sS.Substring(0, 3) == "821") { // код формы - 821... i = int.Parse(sS.Substring(7, 7)); if (i > 0) { xL.xLP.sNomDoc = i.ToString(); ret = true; } else { xL.xLP.sNomDoc = ""; } } xL.xLP.nTypD = AppC.TYPD_SAM; break; case 26: // Штрихкод для поточного if (sS.Substring(0, 2) == "91") { xSE.FullCOM2Srv = String.Format("COM={0};KSK={1};MAC={2};KP={3};BC={4};", AppC.COM_ZZVK, xSm.nSklad, xSm.MACAdr, xSm.sUser, sS ); } break; case 36: // Отгрузка по участкам и т.п. if (sS.Substring(0, 2) == "50") { // Структура кода на документе (длина - 34) // Тип данных - 50 (2) // Дата - ГГММДД (6) // Смена - (4) // Склад - (3) // Участок - (3) // Экспедитор - (4) // Получатель - (4) // тип документа - (2) // № документа - (8) sS = sS.Substring(2); xL.xLP.dDatDoc = DateTime.ParseExact(sS.Substring(0, 6), "yyMMdd", null); // длина смены i = int.Parse(sS.Substring(6, 1)); if (i > 0) { xL.xLP.sSmena = sS.Substring(7, i); } else { xL.xLP.sSmena = ""; } i = int.Parse(sS.Substring(10, 3)); if (i > 0) { xL.xLP.nSklad = i; } else { xL.xLP.nSklad = AppC.EMPTY_INT; } i = int.Parse(sS.Substring(13, 3)); if (i > 0) { xL.xLP.nUch = i; } else { xL.xLP.nUch = AppC.EMPTY_INT; } sEks = sS.Substring(16, 4); i = int.Parse(sS.Substring(16, 4)); if (i > 0) { xL.xLP.nEks = i; } else { xL.xLP.nEks = AppC.EMPTY_INT; } sPol = sS.Substring(20, 4); i = int.Parse(sS.Substring(20, 4)); if (i > 0) { xL.xLP.nPol = i; } else { xL.xLP.nPol = AppC.EMPTY_INT; } i = int.Parse(sS.Substring(24, 2)); if (i >= 0) { xL.xLP.nTypD = i; } else { xL.xLP.nTypD = AppC.EMPTY_INT; } if ((xL.xLP.nTypD == 0) || (xL.xLP.nTypD == 1)) { // для самовывоза экспедитора нет (17.07.18 - и для центровывоза тоже) xL.xLP.nEks = AppC.EMPTY_INT; i = int.Parse(sEks + sPol); if (i > 0) { xL.xLP.nPol = i; } else { xL.xLP.nPol = AppC.EMPTY_INT; } } i = int.Parse(sS.Substring(26, 8)); if (i > 0) { xL.xLP.sNomDoc = i.ToString(); ret = true; } else { xL.xLP.sNomDoc = ""; } } else { ret = false; } break; default: ret = false; break; } } } catch { ret = false; } } if (ret == false) { xL = null; } return(xL); }
// загрузка справочников с сервера //private int LoadAllNSISrv(string[] aI, bool bMD5, bool xShow) //{ // return (nRet); //} //// групповая операция (проверка/загрузка) //private void LoadNsiMenu(bool bTestByMD5, string[] aTables) //{ // LoadNsiMenu(bTestByMD5, aTables, true); //} // групповая операция (проверка/загрузка) private void LoadNsiMenu(bool bTestByMD5, string[] aTables) { bool xShow = true; ServerExchange xSE = new ServerExchange(this); //xBCScanner.WiFi.IsEnabled = true; xBCScanner.WiFi.ShowWiFi(pnLoadDocG, true); xFPan.ShowP(6, 45, "Обновление НСИ", (bTestByMD5 == true) ? "Проверка" : "Загрузка"); xFPan.UpdateHelp("Соединение с сервером"); //bool bOldNsi; int j, nErr = 0, nGood = 0, nRet = 0, tc1 = Environment.TickCount; string i, sFull = "", sStat, sT = ""; xNSI.dsNSI.EnforceConstraints = false; try { if (aTables.Length == 0) { List <string> lT = new List <string>(); foreach (KeyValuePair <string, NSI.TableDef> td in xNSI.DT) { if (((td.Value.nType & NSI.TBLTYPE.NSI) == NSI.TBLTYPE.NSI) && ((td.Value.nType & NSI.TBLTYPE.LOAD) == NSI.TBLTYPE.LOAD)) // НСИ загружаемое { lT.Add(td.Key); } } aTables = lT.ToArray(); } for (j = 0; j < aTables.Length; j++) { nRet = 0; i = aTables[j]; if (xNSI.DT.ContainsKey(i)) { if (xShow == true) { xFPan.UpdateReg(xNSI.DT[i].Text + "..."); } LoadNSISrv lnsi = new LoadNSISrv(xNSI, i, bTestByMD5); xNSI.DT[i].nCount = Environment.TickCount; sT = xSE.ExchgSrv(AppC.COM_ZSPR, i, lnsi.sDop, lnsi.dgL, null, ref nRet); if (nRet == 0) { nGood++; } else { nErr++; } //sT = String.Format("{0}...{1}\n({2})", xNSI.DT[i].Text, sT, xNSI.DT[i].sDTStat); sT = String.Format("{0}...{1}", xNSI.DT[i].Text, sT); sStat = String.Format("{0} ({1})", sT, xNSI.DT[i].sDTStat); //xSE.TraiceWiFi(sStat); sFull += ((aTables.Length == 1) ? sStat : sT + "\n"); if (xShow == true) { xFPan.UpdateReg(sT); } } } xNSI.dsNSI.EnforceConstraints = true; sT = Srv.TimeDiff(tc1, Environment.TickCount); if (bTestByMD5 == false) { MessageBox.Show(sFull, "Время-" + sT); } } catch { nErr = 1; } finally { xFPan.HideP(); } }
/// // обработка SSCC при вводе public int ProceedSSCC(ScanVarRM xSc, ref PSC_Types.ScDat scD, ServerExchange xSE) { int ret = AppC.RC_OK; bool bTryServer = false; string sSSCC = xSc.Dat; DataRow dr = null; AppC.MOVTYPE MoveType = xCDoc.xDocP.DType.MoveType; if (xSE == null) { xSE = new ServerExchange(this); bTryServer = true; } if (tcMain.SelectedIndex == PG_SCAN) { switch (MoveType) { case AppC.MOVTYPE.AVAIL: // инвентаризации bTryServer = true; break; case AppC.MOVTYPE.RASHOD: // расходные документы bTryServer = true; break; case AppC.MOVTYPE.PRIHOD: // документы поступления bTryServer = false; break; case AppC.MOVTYPE.MOVEMENT: // документы перемещения bTryServer = false; break; default: bTryServer = false; break; } } else if (tcMain.SelectedIndex == PG_SSCC) { bTryServer = false; } xCDoc.xOper.SSCC = xSc.Dat; if (bTryServer) { //ret = ConvertSSCC2Lst(xSE, xSc, ref scD, xNSI.DT[NSI.BD_DOUTD].dt, false); ret = ConvertSSCC2Lst(xSE, xCDoc.sSSCC, ref scD, true, xNSI.DT[NSI.BD_DOUTD].dt); if (ret == AppC.RC_OK) { if (xCLoad.dtZ.Rows.Count == 1) { // однородный поддон scD.sSSCC = sSSCC; dr = AddVirtProd(ref scD); } } } //if (dr == null) // dr = AddDetSSCC(xSc); switch (MoveType) { case AppC.MOVTYPE.AVAIL: // инвентаризации ret = AddGroupDet(ret, (int)NSI.SRCDET.SSCCT, xCDoc.sSSCC); break; case AppC.MOVTYPE.RASHOD: // расходные документы dr = AddSSCC2ProdList(xSc); break; case AppC.MOVTYPE.PRIHOD: // документы поступления dr = AddSSCC2ProdList(xSc); break; case AppC.MOVTYPE.MOVEMENT: // документы перемещения dr = AddSSCC2ProdList(xSc); break; default: dr = AddSSCC2ProdList(xSc); break; } AddSSCC2SSCCTable(xSc.Dat, -1, xCDoc, true); if (dr != null) { drDet = dr; } IsOperReady(); return(ret); }
private int SetOverOPR(bool bAfterScan, DataRow drOpr, string sComm) { bool bNeedTrans; int nRet = AppC.RC_OK; ServerExchange xSE = new ServerExchange(this); if (drOpr != null) { bNeedTrans = (((AppC.OPR_STATE)drOpr["STATE"] != AppC.OPR_STATE.OPR_TRANSFERED) || (xCDoc.xDocP.nTypD != AppC.TYPD_OPR)); if (bNeedTrans) { if (bAfterScan) { if ((scCur.sKMC == (string)drDet["KMC"]) && (scCur.nParty == (string)drDet["NP"]) && (scCur.dDataIzg.ToString("yyyyMMdd") == (string)drDet["DVR"])) { bAfterScan = false; } } if (!bAfterScan) { // выгрузка по кнопочке //drOpr["STATE"] = AppC.OPR_STATE.OPR_READY; xCUpLoad = new CurUpLoad(xPars); xDP = xCUpLoad.xLP; xCUpLoad.bOnlyCurRow = true; xCUpLoad.drForUpl = drOpr; xCUpLoad.sCurUplCommand = sComm; if (xPars.OpAutoUpl) { // авто-выгрузка операций string sL = UpLoadDoc(xSE, ref nRet); if (xSE.ServerRet == AppC.RC_OK) { AddrInfo xA = xCDoc.xOper.xAdrSrc; xCDoc.xOper = new CurOper(false); if (IsAutoMark()) { xCDoc.xOper.SetOperSrc(xA, xCDoc.xDocP.nTypD, false); // Имитация вызова //W32.SimulKey(W32.VK_SHIFT, 0); //W32.SimulKey(W32.VK_D1, 2); } //return (nRet); } if (nRet != AppC.RC_OK) { if (nRet == AppC.RC_HALFOK) { Srv.PlayMelody(W32.MB_2PROBK_QUESTION); MessageBox.Show(sL, "Предупреждение!"); } else { Srv.ErrorMsg(sL, true); } } if ((xSE.ServerRet != AppC.EMPTY_INT) && (xSE.ServerRet != AppC.RC_OK)) { // операция выгрузки не прошла на сервере (содержательная ошибка) //if (xSE.ServerRet == 99) // CompareAddrs(xCDoc.xOper.xAdrDst.Addr, String.Format("---{0}-----------После выгрузки", xSE.ServerRet), true); xCDoc.xOper.SetOperDst(null, xCDoc.xDocP.nTypD, true); } } else { xCDoc.xOper = new CurOper(true); } xCUpLoad = null; } } } else { Srv.ErrorMsg("Продукция не определена!"); } return(nRet); }