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

            return(ProceedSSCC(xSc, ref scD, xSE));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: ProceedSSCC.cs プロジェクト: TabVV/SkladDisp
        // Обработка сканирования на панели Документов
        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);
            }
        }
コード例 #4
0
        //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");
        }
コード例 #5
0
        /// подготовить и отобразить содержимое 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;
            }
        }
コード例 #6
0
 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));
 }
コード例 #7
0
        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;
                }
            }
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        // Обработка сканирования на панели Документов
        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);
                }
            }
        }
コード例 #10
0
ファイル: exchg.cs プロジェクト: TabVV/Sklad1C
        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);
        }
コード例 #11
0
ファイル: ProceedSSCC.cs プロジェクト: TabVV/SkladDisp
        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);
        }
コード例 #12
0
ファイル: ProceedSSCC.cs プロジェクト: TabVV/SkladDisp
        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);
                }
            }
        }
コード例 #13
0
        // загрузка справочников с сервера
        //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();
        }
コード例 #14
0
        // Обработка сканирования на панели Документов
        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);
        }
コード例 #15
0
ファイル: PanelNSI.cs プロジェクト: TabVV/SkladDisp
        // загрузка справочников с сервера
        //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();
            }
        }
コード例 #16
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);
        }
コード例 #17
0
ファイル: ProceedAdr.cs プロジェクト: TabVV/SkladDisp
        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);
        }