public int ProceedSSCC(ScanVarRM xSc, ref PSC_Types.ScDat scD) { ServerExchange xSE = null; return(ProceedSSCC(xSc, ref scD, xSE)); }
//private string SP_GLN = "4810268"; private void OnScanPL(object sender, BarcodeScannerEventArgs e) { if (e.nID != BCId.NoData) { xScan = new ScanVarRM(e, xNSI.DT["NS_AI"].dt); //if ((xScan.bcFlags == ScanVarGP.BCTyp.SP_SSCC_EXT) || // (xScan.bcFlags == ScanVarGP.BCTyp.SP_SSCC_INT)) if ((xScan.bcFlags & ScanVarRM.BCTyp.SP_SSCC) > 0) { tSSCC.Text = xScan.Dat; if (bDocIsKMPL) { // для комплектации if (xMF.StoreSSCC(xScan, nNomPodd, false, out dv) == AppC.RC_OKB) { // предложенный SSCC может быть проставлен bMaySetSSCC = true; } else { bMaySetSSCC = false; } } else {// для всего остального tSSCC.Text = xScan.Dat; } } } }
private int FindSSCCInZVK(ScanVarRM xSc, ref PSC_Types.ScDat sc) { int nRet = AppC.RC_NOSSCC; sc.ZeroZEvals(); if (bZVKPresent) { } return(nRet); }
// добавление в список ТТН отмаркированного поддона private DataRow AddSSCC2ProdList(ScanVarRM xSc) { DataRow ret = null; try { PSC_Types.ScDat sc = new PSC_Types.ScDat(new BarcodeScannerEventArgs(BCId.Code128, "")); sc.sSSCC = xSc.Dat; sc.nNomPodd = int.Parse(xSc.Dat.Substring(13, 7)); //sc.sN = String.Format("Поддон №{0}", sc.nNomPodd); sc.sN = String.Format("SSCC № {0}...{1}", sc.sSSCC.Substring(2, 4), sc.sSSCC.Substring(15, 5)); sc.nKrKMC = AppC.KRKMC_MIX; ret = AddVirtProd(ref sc); } catch //(Exception e) { ret = null; } return(ret); }
public bool StoreSSCC(ScanVarRM xSc, int nPoddonN, bool bNeedWrite, out DataView dv) { int n = 0; string s, sRf, sF, sD = xSc.Dat; bool //bIsExt, bRet = AppC.RC_CANCELB; DataView dvZ; DialogResult dRez; if (sD.Substring(2, 1) == "1") { //bIsExt = true; sF = "SSCC"; } else { //bIsExt = false; sF = "SSCCINT"; } /// 14.02.18 sF = "SSCC"; dv = null; if (xCDoc.drCurRow == null) { return(bRet); } try { if ((int)xCDoc.drCurRow["TYPOP"] == AppC.TYPOP_KMPL) { if (nPoddonN > 0) { //string sRf = xCDoc.DefDetFilter() + String.Format(" AND (SSCC='{0}')", sSSCC); //dv = new DataView(xNSI.DT[NSI.BD_DOUTD].dt, sRf, "", DataViewRowState.CurrentRows); //n = dv.Count; if (IsUsedSSCC(sD)) { dRez = MessageBox.Show( String.Format("SSCC={0}\nОтменить (Enter)?\n(ESC)-проставить SSCC", sD), "Уже использовался!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); n = (dRez == DialogResult.OK) ? 1 : 0; } if (n == 0) {// такой SSCC еще не использовался sRf = xCDoc.DefDetFilter() + String.Format(" AND (NPODDZ={0})", nPoddonN); dv = new DataView(xNSI.DT[NSI.BD_DOUTD].dt, sRf, "", DataViewRowState.CurrentRows); if (dv.Count > 0) { foreach (DataRowView drv in dv) { if ((drv.Row[sF]) != System.DBNull.Value) { s = (drv.Row[sF]).ToString(); if ((s.Length > 0) && (s != sD)) { dRez = MessageBox.Show( String.Format("SSCC={0} уже установлен\nОтменить (Enter)?\n(ESC)-проставить SSCC", drv.Row["SSCC"]), String.Format("Поддон {0}", nPoddonN), MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); n = (dRez == DialogResult.OK) ? 1 : 0; break; } } } if (n == 0) {// поддон еще не отмечался // добавим фильтр на выполненные sRf += String.Format("AND(READYZ<>{0})", (int)NSI.READINESS.FULL_READY); dvZ = new DataView(xNSI.DT[NSI.BD_DIND].dt, sRf, "", DataViewRowState.CurrentRows); n = dvZ.Count; if (n > 0) {// не вся заявка закрыта if (!xCDoc.bFreeKMPL) { dRez = MessageBox.Show( "Заявка не выполнена!\nОтменить (Enter)?\r\n(ESC)-проставить SSCC", String.Format("Поддон {0}", nPoddonN), MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); n = (dRez == DialogResult.OK) ? 1 : 0; } else { n = 0; } } if (n == 0) { bRet = AppC.RC_OKB; if (bNeedWrite) { SetSSCCForPoddon(xSc.Dat, dv, nPoddonN); } //foreach (DataRowView drv in dv) //{ // (drv.Row[sF]) = sSSCC; //} //MessageBox.Show(String.Format("Поддон {0} подготовлен ({1}) позиций", // xCDoc.xNPs.Current, dv.Count)); //xCDoc.xNPs.TryNextPoddon(true); //tCurrPoddon.Text = xCDoc.xNPs.Current.ToString(); } } } else { Srv.ErrorMsg("Нет отсканированных!"); } } else { Srv.ErrorMsg("SSCC поддона уже использовался!"); } } else { Srv.ErrorMsg("№ поддона не установлен!"); } } else { Srv.ErrorMsg("Только для комплектации!"); } } catch (Exception e) { Srv.ErrorMsg("Только для комплектации!"); } return(bRet); }
/// // обработка 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 ProceedProd(ScanVarRM xSc, ref PSC_Types.ScDat sc, bool bDupScan) { bool bDopValuesNeed = true; int nRet = AppC.RC_CANCEL; #region Обработка скана продукции do { if (!CanProd(ref sc)) { break; } if (!AvailKMC4PartInvent(sc.sKMC, true)) { break; } xCDoc.bConfScan = (ConfScanOrNot(xCDoc.drCurRow, xPars.ConfScan) > 0) ? true : false; if (xCDoc.bConfScan) {// документ требует подтверждения ввода для каждой продукции //if ((sc.nRecSrc != (int)NSI.SRCDET.FROMADR) && // (sc.nRecSrc != (int)NSI.SRCDET.SSCCT)) // {// полученную с сервера не проверяем // if (TestProdBySrv(ref sc) != AppC.RC_OK) // break; //} // полученную с сервера ПОКА! проверяем if (TestProdBySrv(ref sc) != AppC.RC_OK) { break; } } if (xCDoc.drCurRow != null) { scCur = sc; //if (!sc.bFindNSI) // Srv.ErrorMsg(String.Format("Код {0} не найден!\nОбновите НСИ!", sc.sEAN), true); bDopValuesNeed = true; nRet = AppC.RC_OK; if (scCur.bVes == true) { scCur.fVsego = scCur.fVes; // убрано 05.07.18 //if (scCur.nRecSrc != (int)NSI.SRCDET.SSCCT) //{ // //if (!xScan.dicSc.ContainsKey("37") && (scCur.tTyp != AppC.TYP_TARA.TARA_POTREB)) // //{ // // scCur.tTyp = AppC.TYP_TARA.TARA_POTREB; // // scCur.fEmk = scCur.fEmk_s = 0; // //} //} if ((xCDoc.xDocP.DType.MoveType == AppC.MOVTYPE.MOVEMENT) && (scCur.tTyp == AppC.TYP_TARA.TARA_PODDON)) { bDopValuesNeed = false; scCur.nMest = scCur.nMestPal; } if (AppPars.bVesNeedConfirm == false) {// подтверждение ввода отключено if ((scCur.tTyp != AppC.TYP_TARA.UNKNOWN) || ((scCur.tTyp == AppC.TYP_TARA.TARA_POTREB) && (scCur.nParty.Length > 0))) { bDopValuesNeed = false; } } if ((scCur.fVes == fDefVes) && (scCur.fVes > 0)) { DialogResult dr = MessageBox.Show("Отменить ввод (Enter)?\r\n(ESC) - продолжить ввод", String.Format("Тот же вес-{0}!", scCur.fVes), MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (dr == DialogResult.OK) { nRet = AppC.RC_CANCEL; } } fDefVes = scCur.fVes; } else { if ((scCur.tTyp == AppC.TYP_TARA.TARA_PODDON)) { if (AppPars.bVesNeedConfirm == false) { bDopValuesNeed = false; } } else { nRet = AppC.RC_OK; } } if ((AppC.RC_OK == nRet) && (AppC.RC_OK == EvalZVKMest(ref scCur, null, 0, 0))) { nRet = Prep4Ed(ref scCur, ref bDopValuesNeed, 0); SetDopFieldsForEnter(false); if (nRet == AppC.RC_OK) { PInfReady(); SetDetFields(false); //ShowDopInfKMPL(scCur.nKolM_alr + scCur.nKolM_alrT); //if (bDopValuesNeed == false) if ((bDopValuesNeed == false) && (bEditMode)) { // редактирование пока отменяется, но есть ли все данные? bDopValuesNeed = (VerifyVvod().nRet == AppC.RC_CANCEL) ? true : false; } if ((bDopValuesNeed == true)) {// будет редактирование int nR = IsGeneralEdit(ref scCur); if (nR == AppC.RC_OK) { AddOrChangeDet(AppC.F_ADD_SCAN); } else if (nR == AppC.RC_CANCEL) { //Srv.ErrorMsg("Неоднозначность!\r\nПерейдите в обычный режим!"); ZVKeyDown(AppC.F_PODD, null, ref ehCurrFunc); } else if (nR == AppC.RC_BADTABLE) { Srv.ErrorMsg("Переключаюсь в заявку...\r\nПовторите сканирование"); ChgDetTable(null, ""); } else if (nR == AppC.RC_ZVKONLY) { Srv.ErrorMsg("Только с заявкой!"); } } else { AddDet1(ref scCur); SetDopFieldsForEnter(true); } } } } } while (false); #endregion return(nRet); }
private void ProceedScanDoc(ScanVarRM xSc, ref PSC_Types.ScDat s) { bool bPrefixPresent; int nNumCode = 0, nNomDoc, nLen; string sSymCode, sPackedDate, sDBC = "", sMLBC = "", sNomDoc = "", sDocBarCode = s.s; DateTime dDoc = xCDoc.xDocP.dDatDoc; if ((s.ci == ScannerAll.BCId.Code128) || (s.ci == ScannerAll.BCId.Interleaved25)) { nLen = sDocBarCode.Length; do { if ((xScan.bcFlags & ScanVarRM.BCTyp.SP_SSCC) > 0) {// загрузка содержимого SSCC break; } if ((nLen >= 8) && (nLen <= 28)) { // возможен штрих-код документа sSymCode = sDocBarCode.Substring(0, 2); // код типа bPrefixPresent = AppC.xDocTDef.ContainsKey(sSymCode); if (bPrefixPresent) {// это точно штрих-код документа! sPackedDate = sDocBarCode.Substring(3, 4); dDoc = UnPackDate(sPackedDate); nNumCode = AppC.xDocTDef[sSymCode].NumCode; if (nNumCode == AppC.TYPD_SVOD) { sMLBC = sDocBarCode; } else { sDBC = sDocBarCode; } try { sNomDoc = sDocBarCode.Substring(sDocBarCode.Length - 6, 6); nNomDoc = int.Parse(sNomDoc); } catch { nNomDoc = 0; } sNomDoc = (nNomDoc > 0) ? nNomDoc.ToString() : ""; } else { try { sDBC = sDocBarCode; int nDefis = sDocBarCode.IndexOf("-"); dDoc = DateTime.ParseExact(sDocBarCode.Substring(nDefis + 1, 10), "dd.MM.yyyy", null); sSymCode = "RN"; nNumCode = AppC.xDocTDef[sSymCode].NumCode; sDBC = sDocBarCode; try { sNomDoc = sDocBarCode.Substring(0, nDefis); nNomDoc = int.Parse(sNomDoc); bPrefixPresent = true; } catch { nNomDoc = 0; } sNomDoc = (nNomDoc > 0) ? nNomDoc.ToString() : ""; } catch { } } if (bEditMode) {// документ уже вводится xCDoc.xDocP.sBC_ML = tBCML.Text = sMLBC; xCDoc.xDocP.sBC_Doc = tBCDoc.Text = sDBC; if (aEdVvod.Current == tKT_p) { xCDoc.xDocP.nNumTypD = nNumCode; //xCDoc.xDocP.sTypD = AppC.xDocTDef[sK].Name; tKT_p.Text = xCDoc.xDocP.nNumTypD.ToString(); tNT_p.Text = AppC.xDocTDef[sSymCode].Name; if (xCDoc.xDocP.sNomDoc.Length == 0) { xCDoc.xDocP.sNomDoc = sNomDoc; tNom_p.Text = xCDoc.xDocP.sNomDoc; } xCDoc.xDocP.dDatDoc = dDoc; aEdVvod.SetCur(aEdVvod[aEdVvod.Count - 1]); } } else {// пробуем загрузку документа xCLoad = new CurLoad(AppC.UPL_FLT); if (bPrefixPresent) { xCLoad.xLP.nNumTypD = nNumCode; } xCLoad.xLP.sNomDoc = sNomDoc; xCLoad.xLP.dDatDoc = dDoc; xCLoad.xLP.sBC_Doc = sDBC; xCLoad.xLP.sBC_ML = sMLBC; LoadDocFromServer(AppC.F_INITRUN, new KeyEventArgs(Keys.Enter), ref ehCurrFunc); } } } while (false); } }