Exemple #1
0
        public int ProceedSSCC(ScanVarRM xSc, ref PSC_Types.ScDat scD)
        {
            ServerExchange
                xSE = null;

            return(ProceedSSCC(xSc, ref scD, xSE));
        }
Exemple #2
0
 //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;
             }
         }
     }
 }
Exemple #3
0
        private int FindSSCCInZVK(ScanVarRM xSc, ref PSC_Types.ScDat sc)
        {
            int nRet = AppC.RC_NOSSCC;

            sc.ZeroZEvals();
            if (bZVKPresent)
            {
            }
            return(nRet);
        }
Exemple #4
0
        // добавление в список ТТН отмаркированного поддона
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        ///
        // обработка 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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
            }
        }