Пример #1
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);
        }
Пример #2
0
        //private string FiltForDocExchg_(DataRow drZ, CurLoad xCL)
        //{
        //    int
        //        n;
        //    string
        //        s;

        //    string sF = String.Format("(TD={0}) AND (DT={1}) AND (KSK={2})", drZ["TD"], drZ["DT"], drZ["KSK"]);

        //    //******************
        //    s = "AND(ISNULL(NOMD,'')='')";
        //    try
        //    {
        //        s = (string)drZ["NOMD"];
        //        if (s.Length > 0)
        //        {
        //            s = "AND(NOMD='" + s + "')";
        //        }
        //        else
        //            drZ["NOMD"] = System.DBNull.Value;
        //    }
        //    catch { }
        //    finally
        //    {
        //        sF += s;
        //    }
        //    //******************



        //    s = "AND(ISNULL(NUCH,-1)=-1)";
        //    try
        //    {
        //        n = (int)drZ["NUCH"];
        //        if (n > 0)
        //        {
        //            s = "AND(NUCH=" + n.ToString() + ")";
        //        }
        //        else
        //            drZ["NUCH"] = System.DBNull.Value;
        //    }
        //    catch { s = ""; }
        //    finally
        //    {
        //        sF += s;
        //    }

        //    //s = "AND(ISNULL(KSMEN,'')='')";
        //    //try
        //    //{
        //    //    s = (string)drZ["KSMEN"];
        //    //    if (s.Length > 0)
        //    //    {
        //    //        s = "AND(KSMEN='" + s + "')";
        //    //    }
        //    //    else
        //    //        drZ["KSMEN"] = System.DBNull.Value;
        //    //}
        //    //catch { }
        //    //finally
        //    //{
        //    //    sF += s;
        //    //}



        //    s = "AND(ISNULL(KEKS,-1)=-1)";
        //    try
        //    {
        //        n = (int)drZ["KEKS"];
        //        if (n > 0)
        //        {
        //            s = "AND(KEKS=" + n.ToString() + ")";
        //        }
        //        else
        //            drZ["KEKS"] = System.DBNull.Value;
        //    }
        //    catch { s = ""; }
        //    finally
        //    {
        //        sF += s;
        //    }


        //    s = "AND(ISNULL(KRKPP,-1)=-1)";
        //    try
        //    {
        //        n = (int)drZ["KRKPP"];
        //        if (n > 0)
        //        {
        //            s = "AND(KRKPP=" + n.ToString() + ")";
        //        }
        //        else
        //            drZ["KRKPP"] = System.DBNull.Value;
        //    }
        //    catch { s = ""; }
        //    finally
        //    {
        //        sF += s;
        //    }

        //    //------
        //    if (xCL.nCommand == AppC.F_LOADKPL)
        //    {
        //        //sF += "AND(TYPOP=" + AppC.TYPOP_KMPL.ToString() + ")";
        //        sF = String.Format(sF + "AND(TYPOP={0})AND(NOMD={1})", AppC.TYPOP_KMPL, xCLoad.drPars4Load["NOMD"]);
        //    }
        //    else if (xCL.nCommand == AppC.F_LOADOTG)
        //        sF += "AND(TYPOP=" + AppC.TYPOP_OTGR.ToString() + ")";
        //    //------

        //    return ("(" + sF + ")");
        //}



        private string FiltForDocExchg(DataRow drZ, CurLoad xCL, bool bIsTask)
        {
            int
                n;
            string
                s;

            string sF = String.Format("(TD={0})", drZ["TD"]);

            s = (drZ["DOCBC"] is string) && (drZ["DOCBC"].ToString().Length > 0)?String.Format("AND(DOCBC='{0}')", drZ["DOCBC"]):"";
            if ((s.Length > 0) && (!bIsTask))
            {
                // задания от сервера - по нулевому номеру (000)
                sF += s;
            }
            else
            {
                s   = (drZ["DT"] is string) && (drZ["DT"].ToString().Length > 0) ? String.Format("AND(DT='{0}')", drZ["DT"]) : "";
                sF += s;

                s   = (drZ["NOMD"] is string) && (drZ["NOMD"].ToString().Length > 0) ? String.Format("AND(NOMD='{0}')", drZ["NOMD"]) : "";
                sF += s;

                s   = (drZ["KSK"] is int) && ((int)drZ["KSK"] > 0) ? String.Format("AND(KSK={0})", drZ["KSK"]) : "";
                sF += s;

                s   = (drZ["TYPKPP"] is string) && (drZ["TYPKPP"].ToString().Length > 0) ? String.Format("AND(TYPKPP='{0}')", drZ["TYPKPP"]) : "";
                sF += s;
            }
            return("(" + sF + ")");
        }
Пример #3
0
        // Обработка сканирования на панели Документов
        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 string FiltForDocExchg(DataRow drZ, CurLoad xCL)
        {
            int    n;
            string s;

            string sF = String.Format("(TD={0}) AND (DT={1}) AND (KSK={2})", drZ["TD"], drZ["DT"], drZ["KSK"]);

            s = "AND(ISNULL(NUCH,-1)=-1)";
            try
            {
                n = (int)drZ["NUCH"];
                if (n > 0)
                {
                    s = "AND(NUCH=" + n.ToString() + ")";
                }
                else
                {
                    drZ["NUCH"] = System.DBNull.Value;
                }
            }
            catch { s = ""; }
            finally
            {
                sF += s;
            }

            s = "AND(ISNULL(KSMEN,'')='')";
            try
            {
                s = (string)drZ["KSMEN"];
                if (s.Length > 0)
                {
                    s = "AND(KSMEN='" + s + "')";
                }
                else
                {
                    drZ["KSMEN"] = System.DBNull.Value;
                }
            }
            catch { }
            finally
            {
                sF += s;
            }



            s = "AND(ISNULL(KEKS,-1)=-1)";
            try
            {
                n = (int)drZ["KEKS"];
                if (n > 0)
                {
                    s = "AND(KEKS=" + n.ToString() + ")";
                }
                else
                {
                    drZ["KEKS"] = System.DBNull.Value;
                }
            }
            catch { s = ""; }
            finally
            {
                sF += s;
            }


            s = "AND(ISNULL(KRKPP,-1)=-1)";
            try
            {
                n = (int)drZ["KRKPP"];
                if (n > 0)
                {
                    s = "AND(KRKPP=" + n.ToString() + ")";
                }
                else
                {
                    drZ["KRKPP"] = System.DBNull.Value;
                }
            }
            catch { s = ""; }
            finally
            {
                sF += s;
            }

            //------
            if ((xCL.nCommand == AppC.F_LOADKPL) || (xCL.nCommand == AppC.F_ZZKZ1))
            {
                //sF += "AND(TYPOP=" + AppC.TYPOP_KMPL.ToString() + ")";
                //sF = String.Format(sF + "AND(TYPOP={0})AND(NOMD={1})", AppC.TYPOP_KMPL, xCLoad.drPars4Load["NOMD"]);
                sF = String.Format(sF + "AND(TYPOP={0})AND(NOMD={1})", AppC.TYPOP_KMPL, drZ["NOMD"]);
            }
            else if (xCL.nCommand == AppC.F_LOADOTG)
            {
                sF += "AND(TYPOP=" + AppC.TYPOP_OTGR.ToString() + ")";
            }
            //------

            return("(" + sF + ")");
        }
Пример #5
0
        // добавление полученных заявок в рабочие таблицы
        private int AddZ(CurLoad xCL, ref string sErr)
        {
            int
                nRet = AppC.RC_OK,
                nNPP,
                nM = 0;
            string s;

            PSC_Types.ScDat sD = new PSC_Types.ScDat();
            //object xNewKey;

            DataSet ds = xCL.dsZ;
            DataRow drMDoc;

            DataRow[] drDetZ, drMDetZ;
            DataTable dt  = xNSI.DT[NSI.BD_DOCOUT].dt,
                      dtD = xNSI.DT[NSI.BD_DIND].dt;

            // пока удалим связи и таблицу ТТН из DataSet
            //DataRelation dRel = xNSI.dsM.Relations[NSI.REL2TTN];

            //xNSI.dsM.Relations.Remove(NSI.REL2TTN);
            //xNSI.dsM.Tables.Remove(xNSI.dsM.Tables[NSI.BD_DOUTD]);

            if (xCL.ilLoad.CurReg == AppC.UPL_CUR)
            {// заявка только для текущего документа
                drMDoc = xCDoc.drCurRow;
                //object[] xCur = drMDoc.ItemArray;

                if (ds.Tables[NSI.BD_ZDET].Rows.Count > 0)
                {// имеются детальные строки для загрузки
                 // а это загруженные ранее

                    //drDetZ = drMDoc.GetChildRows(xNSI.dsM.Relations[NSI.REL2ZVK]);
                    //if (drDetZ.Length > 0)
                    //{// их все и удаляем
                    //    foreach (DataRow drDel in drDetZ)
                    //    {
                    //        xNSI.dsM.Tables[NSI.BD_DIND].Rows.Remove(drDel);
                    //    }
                    //}
                    DelDetail4Doc(drMDoc, xNSI.dsM.Tables[NSI.BD_DIND], NSI.REL2ZVK);
                    DelDetail4Doc(drMDoc, xNSI.dsM.Tables[NSI.BD_PICT], NSI.REL2PIC);

                    // установка существующего ключа (SYSN)
                    // каскадно должен измениться и в детальных
                    ds.Tables[NSI.BD_ZDOC].Rows[0]["SYSN"] = drMDoc["SYSN"];
                    nM   = 0;
                    nNPP = 1;
                    foreach (DataRow drA in ds.Tables[NSI.BD_ZDET].Rows)
                    {
                        //nM += SetOneDetZ(ref sD, dtD, drA.ItemArray);
                        nM += SetOneDetZ(ref sD, dtD, drA, drMDoc, ref nNPP);
                        nNPP++;
                    }
                    drMDoc["SOURCE"]  = NSI.DOCSRC_LOAD;
                    drMDoc["CHKSSCC"] = 0;
                    drMDoc["MESTZ"]   = nM;
                    if (xCL.CheckIt)
                    {
                        drMDoc["SSCCONLY"] = 1;
                        DelDetail4Doc(drMDoc, xNSI.dsM.Tables[NSI.BD_DOUTD], NSI.REL2TTN);
                    }
                    else
                    {
                        drMDoc["SSCCONLY"] = 0;
                    }
                    AddPicsDoc(ds.Relations[NSI.REL2PIC], ds.Tables[NSI.BD_ZDOC].Rows[0], xNSI.dsM.Tables[NSI.BD_PICT]);

                    //drMDoc["CONFSCAN"] = ConfScanOrNot(drMDoc, xPars.ConfScan);
                }
                else
                {
                    sErr = "Детальные строки не найдены!";
                    nRet = AppC.RC_CANCEL;
                }
            }
            else
            {// загрузка всего, что пришло (ALL или по фильтру)
                // пока ничего не загрузили
                xCL.dr1st = null;

                for (int i = 0; i < ds.Tables[NSI.BD_ZDOC].Rows.Count; i++)
                {
                    DataRow dr = ds.Tables[NSI.BD_ZDOC].Rows[i];
                    drDetZ = dr.GetChildRows(ds.Relations[NSI.REL2ZVK]);
                    if ((drDetZ != null) && (drDetZ.Length > 0))
                    {// имеются детальные строки для загрузки
                        // по-хорошему, надо искать по нормальному ключу, а не по SYSN
                        //nPKey = (int)dr["SYSN"];
                        s = FiltForDocExchg(dr, xCL);

                        DataRow[] aDr = dt.Select(s);
                        if (aDr.Length > 0)
                        {
                            drMDoc = aDr[0];
                            if (xCL.nCommand == AppC.F_ZZKZ1)
                            {
                                if (MainF.swProt != null)
                                {
                                    //string sCurr = String.Format("Date={0}, SM={1}, PD={2}, SYSN={3}", drMDoc["DT"], drMDoc["KSMEN"], drMDoc["KEKS"], drMDoc["SYSN"]);
                                    swProt.WriteLine(String.Format("{2} Перезапись заказа (SYSN={1})! Ф={0}", s, drMDoc["SYSN"], DateTime.Now.ToString("dd.MM.yy HH:mm:ss - ")));
                                    WriteAllToReg(true);
                                }
                            }
                        }
                        else
                        {
                            drMDoc = null;
                        }

                        //drMDoc = dt.Rows.Find(new object[] { nPKey });

                        if (null != drMDoc)
                        {// ранее уже грузили
                            //drMDetZ = drMDoc.GetChildRows(xNSI.dsM.Relations[NSI.REL2ZVK]);
                            //if (drDetZ.Length > 0)
                            //{// их все и удаляем
                            //    foreach (DataRow drDel in drMDetZ)
                            //    {
                            //        xNSI.dsM.Tables[NSI.BD_DIND].Rows.Remove(drDel);
                            //    }
                            //}
                            DelDetail4Doc(drMDoc, xNSI.dsM.Tables[NSI.BD_DIND], NSI.REL2ZVK);
                            DelDetail4Doc(drMDoc, xNSI.dsM.Tables[NSI.BD_PICT], NSI.REL2PIC);
                        }
                        else
                        {// новая заявка
                            drMDoc = dt.NewRow();
                            object x = drMDoc["SYSN"];
                            drMDoc.ItemArray = dr.ItemArray;
                            //for(int ii = 0; ii < dr.ItemArray.Length; ii++)
                            //{
                            //    if (!(dr.ItemArray[ii].GetType() == typeof(System.DBNull)))
                            //        drMDoc.ItemArray[ii] = dr.ItemArray[ii];
                            //}

                            drMDoc["SYSN"]   = x;
                            drMDoc["SOURCE"] = NSI.DOCSRC_LOAD;
                            drMDoc["TIMECR"] = DateTime.Now;
                            if (xCL.CheckIt)
                            {
                                drMDoc["SSCCONLY"] = 1;
                                DelDetail4Doc(drMDoc, xNSI.dsM.Tables[NSI.BD_DOUTD], NSI.REL2TTN);
                            }
                            else
                            {
                                drMDoc["SSCCONLY"] = 0;
                            }

                            if (xCL.nCommand == AppC.F_LOAD_DOC)
                            {
                                drMDoc["TYPOP"] = AppC.TYPOP_DOCUM;
                            }
                            else
                            if ((xCL.nCommand == AppC.F_LOADKPL) ||
                                (xCL.nCommand == AppC.F_ZZKZ1))
                            {
                                drMDoc["TYPOP"] = AppC.TYPOP_KMPL;
                            }
                            else
                            {
                                drMDoc["TYPOP"] = AppC.TYPOP_PRMK;
                            }

                            dt.Rows.Add(drMDoc);
                        }
                        // установка существующего ключа (SYSN)
                        // каскадно должен измениться и в детальных
                        //dr["DIFF"] = NSI.DOCCTRL.UNKNOWN;
                        dr["SYSN"] = drMDoc["SYSN"];
                        nM         = 0;
                        nNPP       = 1;
                        foreach (DataRow drZ in drDetZ)
                        {
                            //nM += SetOneDetZ(ref sD, dtD, drZ.ItemArray);
                            nM += SetOneDetZ(ref sD, dtD, drZ, drMDoc, ref nNPP);
                            nNPP++;
                        }
                        drMDoc["SOURCE"]  = NSI.DOCSRC_LOAD;
                        drMDoc["CHKSSCC"] = 0;
                        drMDoc["MESTZ"]   = nM;
                        if (xCL.CheckIt)
                        {
                            drMDoc["SSCCONLY"] = 1;
                            DelDetail4Doc(drMDoc, xNSI.dsM.Tables[NSI.BD_DOUTD], NSI.REL2TTN);
                        }
                        else
                        {
                            drMDoc["SSCCONLY"] = 0;
                        }

                        AddPicsDoc(ds.Relations[NSI.REL2PIC], ds.Tables[NSI.BD_ZDOC].Rows[i], xNSI.dsM.Tables[NSI.BD_PICT]);
                        //drMDoc["CONFSCAN"] = ConfScanOrNot(drMDoc, xPars.ConfScan);
                        if (xCL.dr1st == null)
                        {
                            xCL.dr1st = drMDoc;
                        }
                    }
                    else
                    {
                        sErr = String.Format("{0}-Детальные строки не найдены!", dr["SYSN"]);
                        nRet = AppC.RC_CANCEL;
                    }
                }
            }

            // возвращаем таблицу обратно и связи в DataSet
            //xNSI.dsM.Tables.Add(xNSI.dsM.Tables[NSI.BD_DOUTD]);
            //xNSI.dsM.Relations.Add(dsRel);


            return(nRet);
        }
Пример #6
0
        // добавление полученных заявок в рабочие таблицы
        private int AddZ(CurLoad xCL, ref string sErr, bool bIsTask)
        {
            int
                nRet = AppC.RC_OK,
                nNPP,
                nM = 0;
            string
                s;

            PSC_Types.ScDat
                sD = new PSC_Types.ScDat();
            //object xNewKey;

            DataSet
                ds = xCL.dsZ;
            DataRow
                drMDoc;

            DataRow[]
            //drAKMC,
            drDetZ,
            drMDetZ;
            DataTable
                dtDocs = xNSI.DT[NSI.BD_DOCOUT].dt,
                dtZVK  = xNSI.DT[NSI.BD_DIND].dt;

            // пока удалим связи и таблицу ТТН из DataSet
            //DataRelation dRel = xNSI.dsM.Relations[NSI.REL2TTN];

            //xNSI.dsM.Relations.Remove(NSI.REL2TTN);
            //xNSI.dsM.Tables.Remove(xNSI.dsM.Tables[NSI.BD_DOUTD]);

            if ((xCL.ilLoad.CurReg == AppC.UPL_CUR) && (!bIsTask))
            {// заявка только для текущего документа
                drMDoc = xCDoc.drCurRow;
                //object[] xCur = drMDoc.ItemArray;

                if (ds.Tables[NSI.BD_ZDET].Rows.Count > 0)
                {// имеются детальные строки для загрузки
                    // а это загруженные ранее
                    if (!bIsTask)
                    {// предыдущие задания не удаляем
                        drDetZ = drMDoc.GetChildRows(xNSI.dsM.Relations[NSI.REL2ZVK]);
                        if (drDetZ.Length > 0)
                        {// их все и удаляем
                            foreach (DataRow drDel in drDetZ)
                            {
                                xNSI.dsM.Tables[NSI.BD_DIND].Rows.Remove(drDel);
                            }
                        }
                    }
                    // установка существующего ключа (SYSN)
                    // каскадно должен измениться и в детальных
                    ds.Tables[NSI.BD_ZDOC].Rows[0]["SYSN"] = drMDoc["SYSN"];
                    nM   = 0;
                    nNPP = 1;
                    foreach (DataRow drA in ds.Tables[NSI.BD_ZDET].Rows)
                    {
                        nM += SetOneDetZ(ref sD, dtZVK, ds, drA, drMDoc, ref nNPP);
                        nNPP++;
                    }
                    drMDoc["MESTZ"]   = nM;
                    drMDoc["SOURCE"]  = NSI.DOCSRC_LOAD;
                    drMDoc["CHKSSCC"] = 0;
                }
                else
                {
                    sErr = "Детальные строки не найдены!";
                    nRet = AppC.RC_CANCEL;
                }
                //if (drMDoc["SOURCE"] == NSI.DOCSRC_LOAD)
                //{// этот документ загружался
                //    nPKey = drMDoc["SYSN"];
                //    dr = ds.Tables[0].Rows.Find(new object[] { nPKey });
                //}


                //if (dr != null)
                //{// присутствует такой документ в заявках
                //    drDetZ = dr.GetChildRows(ds.Relations[0]);
                //    if ((drDetZ != null) && (drDetZ.Length > 0))
                //    {// имеются детальные строки заявки



                //        nRet = AddOneZ(dt, xCDoc.drCurRow, xCur, dtD, drDetZ);
                //    }
                //    else
                //    {
                //        Srv.ErrorMsg("Детальные строки не найдены!");
                //        return (AppC.RC_CANCEL);
                //    }
                //}
                //else
                //{
                //    Srv.ErrorMsg("Заявка не найдена!");
                //    return (AppC.RC_CANCEL);
                //}
            }
            else
            {// загрузка всего, что пришло (ALL или по фильтру)
                // пока ничего не загрузили
                xCL.dr1st = null;

                for (int i = 0; i < ds.Tables[NSI.BD_ZDOC].Rows.Count; i++)
                {
                    DataRow dr = ds.Tables[NSI.BD_ZDOC].Rows[i];
                    drDetZ = dr.GetChildRows(ds.Relations[NSI.REL2ZVK]);
                    if ((drDetZ != null) && (drDetZ.Length > 0))
                    {// имеются детальные строки для загрузки
                        // по-хорошему, надо искать по нормальному ключу, а не по SYSN
                        //nPKey = (int)dr["SYSN"];
                        s = FiltForDocExchg(dr, xCL, bIsTask);

                        DataRow[] aDr = dtDocs.Select(s);
                        if (aDr.Length > 0)
                        {
                            drMDoc = aDr[0];
                        }
                        else
                        {
                            drMDoc = null;
                        }

                        //drMDoc = dt.Rows.Find(new object[] { nPKey });

                        if (null != drMDoc)
                        {     // ранее уже грузили
                            if (!bIsTask)
                            { // предыдущие задания не удаляем
                                drMDetZ = drMDoc.GetChildRows(xNSI.dsM.Relations[NSI.REL2ZVK]);
                                if (drDetZ.Length > 0)
                                {// их все и удаляем
                                    foreach (DataRow drDel in drMDetZ)
                                    {
                                        xNSI.dsM.Tables[NSI.BD_DIND].Rows.Remove(drDel);
                                    }
                                }
                            }
                        }
                        else
                        {// новая заявка
                            drMDoc = dtDocs.NewRow();
                            object x = drMDoc["SYSN"];
                            drMDoc.ItemArray = dr.ItemArray;
                            //for(int ii = 0; ii < dr.ItemArray.Length; ii++)
                            //{
                            //    if (!(dr.ItemArray[ii].GetType() == typeof(System.DBNull)))
                            //        drMDoc.ItemArray[ii] = dr.ItemArray[ii];
                            //}

                            drMDoc["SYSN"]   = x;
                            drMDoc["SOURCE"] = NSI.DOCSRC_LOAD;
                            drMDoc["TIMECR"] = DateTime.Now;

                            if (xCL.nCommand == AppC.F_LOAD_DOC)
                            {
                                drMDoc["TYPOP"] = AppC.TYPOP_DOCUM;
                            }
                            else
                            {
                                drMDoc["TYPOP"] = AppC.TYPOP_PRMK;
                            }

                            if ((drMDoc["NOMD"] is string) && (((string)drMDoc["NOMD"]).Length > 0))
                            {
                            }
                            else
                            {
                                drMDoc["NOMD"] = xCLoad.xLP.sNomDoc;
                            }
                            if ((drMDoc["DOCBC"] is string) && (((string)drMDoc["DOCBC"]).Length > 0))
                            {
                            }
                            else
                            {
                                drMDoc["DOCBC"] = xCLoad.xLP.sBC_Doc;
                            }
                            if ((drMDoc["MLBC"] is string) && (((string)drMDoc["MLBC"]).Length > 0))
                            {
                            }
                            else
                            {
                                drMDoc["MLBC"] = xCLoad.xLP.sBC_ML;
                            }
                            drMDoc["CHKSSCC"] = 0;
                            dtDocs.Rows.Add(drMDoc);
                        }
                        // установка существующего ключа (SYSN)
                        // каскадно должен измениться и в детальных
                        //dr["DIFF"] = NSI.DOCCTRL.UNKNOWN;
                        dr["SYSN"] = drMDoc["SYSN"];
                        nM         = 0;
                        nNPP       = 1;
                        foreach (DataRow drZ in drDetZ)
                        {
                            nM += SetOneDetZ(ref sD, dtZVK, ds, drZ, drMDoc, ref nNPP);
                            nNPP++;
                        }
                        drMDoc["MESTZ"]  = nM;
                        drMDoc["SOURCE"] = NSI.DOCSRC_LOAD;

                        if (xCL.dr1st == null)
                        {
                            xCL.dr1st = drMDoc;
                        }
                    }
                    else
                    {
                        sErr = String.Format("{0}-Детальные строки не найдены!", dr["SYSN"]);
                        nRet = AppC.RC_CANCEL;
                    }
                }
            }

            // возвращаем таблицу обратно и связи в DataSet
            //xNSI.dsM.Tables.Add(xNSI.dsM.Tables[NSI.BD_DOUTD]);
            //xNSI.dsM.Relations.Add(dsRel);


            return(nRet);
        }
Пример #7
0
 private int AddZ(CurLoad xCL, ref string sErr)
 {
     return(AddZ(xCL, ref sErr, false));
 }
Пример #8
0
        // обработка функций и клавиш на панели
        private bool Doc_KeyDown(int nFunc, KeyEventArgs e)
        {
            bool   ret = false;
            string sMsg;

            if (nFunc > 0)
            {
                if (bEditMode == false)
                {
                    switch (nFunc)
                    {
                    case AppC.F_ADD_REC:                // добавление новой
                        AddOrChangeDoc(AppC.F_ADD_REC);
                        ret = true;
                        break;

                    case AppC.F_CHG_REC:                // корректировка
                        if (xCDoc.drCurRow != null)
                        {
                            AddOrChangeDoc(AppC.F_CHG_REC);
                        }
                        ret = true;
                        break;

                    case AppC.F_DEL_ALLREC:             // удаление всех
                    case AppC.F_DEL_REC:                // или одного
                        DelDoc(nFunc);
                        StatAllDoc();
                        ret = true;
                        break;

                    case AppC.F_TOT_MEST:
                        // всего мест по накладная/заявка
                        ShowTotMest();
                        ret = true;
                        break;

                    case AppC.F_CTRLDOC:
                        // контроль текущего документа
                        ControlDocs(AppC.F_INITREG, null, ref ehCurrFunc);
                        ret = true;
                        break;

                    case AppC.F_GOFIRST:
                    case AppC.F_GOLAST:
                        //CurrencyManager cmDoc = (CurrencyManager)BindingContext[dgDoc.DataSource];
                        //if (cmDoc.Count > 0)
                        //    cmDoc.Position = (nFunc == AppC.F_GOFIRST) ? 0 : cmDoc.Count - 1;
                        Go1stLast(dgDoc, nFunc);
                        ret = true;
                        break;

                    //case AppC.F_CHGSCR:
                    //    // смена экрана
                    //    xScrDoc.NextReg(AppC.REG_SWITCH.SW_NEXT);
                    //    ret = true;
                    //    break;
                    case AppC.F_FLTVYP:
                        // установка фильтра по выгруженным
                        xPars.bHideUploaded = !xPars.bHideUploaded;
                        FiltForDocs(xPars.bHideUploaded, xNSI.DT[NSI.BD_DOCOUT]);
                        ret = true;
                        break;

                    //case AppC.F_CHG_GSTYLE:
                    case AppC.F_LOADKPL:
                        xCLoad = new CurLoad(AppC.UPL_FLT);
                        if (LoadKomplLst(null, AppC.F_LOADKPL))
                        {
                            xCLoad.drPars4Load = null;
                            xDLLPars           = AppC.F_LOADKPL;
                            DialogResult xDRslt = CallDllForm(sExeDir + "SGPF-Kompl.dll", false);
                            if (xCLoad.drPars4Load != null)
                            {
                                xCLoad.sSSCC = "";
                                LoadKomplLst(xCLoad.drPars4Load, AppC.F_LOADKPL);
                            }
                        }
                        ret = true;
                        break;

                    case AppC.F_LOADOTG:
                        xCLoad = new CurLoad(AppC.UPL_FLT);
                        if (LoadKomplLst(null, AppC.F_LOADOTG))
                        {
                            xCLoad.drPars4Load = null;
                            xDLLPars           = AppC.F_LOADOTG;
                            DialogResult xDRslt = CallDllForm(sExeDir + "SGPF-Kompl.dll", false);

                            if (xCLoad.drPars4Load != null)
                            {
                                LoadKomplLst(xCLoad.drPars4Load, AppC.F_LOADOTG);
                            }
                        }
                        ret = true;
                        break;

                    case AppC.F_LOAD4CHK:
                        Doc4Chk = true;
                        Srv.PlayMelody(W32.MB_1MIDDL_HAND);
                        Srv.ErrorMsg("Загрузка для контроля!", "Режим загрузки", false);
                        ret = true;
                        break;


                    case AppC.F_TMPMOV:
                        SetTempMove();
                        ret = true;
                        break;

                    case AppC.F_CHG_LIST:
                        xNSI.ChgGridStyle(NSI.BD_DOCOUT, ((xNSI.DT[NSI.BD_DOCOUT].nGrdStyle == NSI.GDOC_VNT) ? NSI.GDOC_INV : NSI.GDOC_VNT));
                        ret = true;
                        break;
                    }
                }
            }
            else
            {
                switch (e.KeyValue)
                {
                case W32.VK_ENTER:
                    if (nCurDocFunc == AppC.DT_SHOW)
                    {
                        if (xCDoc.drCurRow != null)
                        {
                            tcMain.SelectedIndex = PG_SCAN;
                            ret = true;
                        }
                    }
                    break;
                }
            }
            e.Handled |= ret;
            return(ret);
        }
Пример #9
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);
        }
Пример #10
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);
                }
            }
        }
Пример #11
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);
            }
        }
Пример #12
0
        // обработка функций и клавиш на панели
        private bool Doc_KeyDown(int nFunc, KeyEventArgs e)
        {
            bool
                ret = false;

            if (nFunc > 0)
            {
                if (bEditMode == false)
                {
                    switch (nFunc)
                    {
                    case AppC.F_ADD_REC:                // добавление новой
                    case AppC.F_CHG_REC:                // корректировка
                        AddOrChangeDoc(nFunc);
                        ret = true;
                        break;

                    case AppC.F_DEL_ALLREC:             // удаление всех
                    case AppC.F_DEL_REC:                // или одного
                        DelDoc(nFunc);
                        //StatAllDoc();
                        ret = true;
                        break;

                    case AppC.F_TOT_MEST:
                        // всего мест по накладная/заявка
                        ShowTotMest();
                        ret = true;
                        break;

                    case AppC.F_CTRLDOC:
                        // контроль текущего документа
                        ControlDocs(AppC.F_INITREG, null, ref ehCurrFunc);
                        ret = true;
                        break;

                    case AppC.F_GOFIRST:
                    case AppC.F_GOLAST:
                        //CurrencyManager cmDoc = (CurrencyManager)BindingContext[dgDoc.DataSource];
                        //if (cmDoc.Count > 0)
                        //    cmDoc.Position = (nFunc == AppC.F_GOFIRST) ? 0 : cmDoc.Count - 1;
                        Go1stLast(dgDoc, nFunc);
                        ret = true;
                        break;

                    //case AppC.F_CHGSCR:
                    //    // смена экрана
                    //    xScrDoc.NextReg(AppC.REG_SWITCH.SW_NEXT);
                    //    ret = true;
                    //    break;
                    case AppC.F_FLTVYP:
                        // установка фильтра по выгруженным
                        xPars.bHideUploaded = !xPars.bHideUploaded;
                        FiltForDocs(xPars.bHideUploaded, xNSI.DT[NSI.BD_DOCOUT]);
                        ret = true;
                        break;

                    case AppC.F_CHG_GSTYLE:
                    case AppC.F_LOADKPL:
                        xCLoad = new CurLoad(AppC.UPL_FLT);
                        if (LoadKomplLst(null, AppC.F_LOADKPL))
                        {
                            xCLoad.drPars4Load = null;
                            xDLLPars           = AppC.F_LOADKPL;
                            DialogResult xDRslt = CallDllForm(sExeDir + "SGPF-Kompl.dll", false);
                            if (xCLoad.drPars4Load != null)
                            {
                                xCLoad.sSSCC = "";
                                LoadKomplLst(xCLoad.drPars4Load, AppC.F_LOADKPL);
                            }
                        }
                        ret = true;
                        break;

                    case AppC.F_LOADOTG:
                        xCLoad = new CurLoad(AppC.UPL_FLT);
                        if (LoadKomplLst(null, AppC.F_LOADOTG))
                        {
                            xCLoad.drPars4Load = null;
                            xDLLPars           = AppC.F_LOADOTG;
                            DialogResult xDRslt = CallDllForm(sExeDir + "SGPF-Kompl.dll", false);

                            if (xCLoad.drPars4Load != null)
                            {
                                LoadKomplLst(xCLoad.drPars4Load, AppC.F_LOADOTG);
                            }
                        }
                        ret = true;
                        break;
                        //case AppC.F_SAMEKMC:
                        //    // смена режима Документальный/Операционный
                        //    if (xSm.RegApp == AppC.REG_DOC)
                        //    {
                        //        xSm.RegApp = AppC.REG_OPR;
                        //        sMsg = "Операционный установлен";
                        //        lPoluch.Text = "Операция";
                        //    }
                        //    else
                        //    {
                        //        xSm.RegApp = AppC.REG_DOC;
                        //        sMsg = "Документальный установлен";
                        //        lPoluch.Text = "Получ-ль";
                        //    }
                        //    //StatAllDoc();
                        //    Srv.PlayMelody(W32.MB_4HIGH_FLY);
                        //    MessageBox.Show(sMsg, "Смена режима");
                        //    ret = true;
                        //    break;
                    }
                }
            }
            else
            {
                switch (e.KeyValue)
                {
                case W32.VK_ENTER:
                    if (nCurDocFunc == AppC.DT_SHOW)
                    {
                        if (xCDoc.drCurRow != null)
                        {
                            tcMain.SelectedIndex = PG_SCAN;
                            ret = true;
                        }
                    }
                    break;
                }
            }
            e.Handled |= ret;
            return(ret);
        }