Esempio n. 1
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);
        }
Esempio n. 2
0
        /// какой из адресов следует заполнить (по типу движения документа)
        private int SrcOrDest(ScanVarGP xSc, ref PSC_Types.ScDat scD)
        {
            bool
                bSrcNeed = AppC.xDocTInf[xCDoc.xDocP.nTypD].AdrFromNeed,
                bDstNeed = AppC.xDocTInf[xCDoc.xDocP.nTypD].AdrToNeed;
            int
                nNumDocType = xCDoc.xDocP.nTypD,
                nSrcOrDst   = 0;

            AppC.MOVTYPE
                MoveType = AppC.xDocTInf[xCDoc.xDocP.nTypD].MoveType;

            if ((xSc.bcFlags & ScanVarGP.BCTyp.SP_ADR_OBJ) > 0)
            {// это обычный адрес
                switch (MoveType)
                {
                case AppC.MOVTYPE.AVAIL:            // инвентаризации
                    nSrcOrDst = 1;
                    break;

                case AppC.MOVTYPE.RASHOD:           // расходные документы
                    nSrcOrDst = 1;
                    break;

                case AppC.MOVTYPE.PRIHOD:           // документы поступления
                    nSrcOrDst = 2;
                    break;

                case AppC.MOVTYPE.MOVEMENT:         // документы перемещения
                    if (!xCDoc.xOper.IsFillSrc())
                    {
                        nSrcOrDst = 1;
                    }
                    else
                    {
                        if (!xCDoc.xOper.IsFillDst() && ((xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_OBJ_SET) == 0))
                        {
                            nSrcOrDst = 0;          // будет запрос
                        }
                        else
                        {
                            nSrcOrDst = 2;          // будет приемник
                        }
                    }
                    break;

                default:
                    if (xCDoc.xOper.IsFillSrc())
                    {     // источник - задан
                        if (bDstNeed)
                        { //... - true
                            if (!xCDoc.xOper.IsFillDst())
                            {
                                nSrcOrDst = 2;
                            }
                        }
                        else
                        {    //... - false
                            // надо посмотреть, чем заполнен
                            if (!xCDoc.xOper.IsFillDst())
                            {
                                nSrcOrDst = 1;
                            }
                        }
                    }
                    else
                    {    // источник - пусто
                        if (bSrcNeed)
                        {
                            nSrcOrDst = 1;
                        }
                        else
                        {
                            if (bDstNeed)
                            {    // false - true
                                if (!xCDoc.xOper.IsFillDst())
                                {
                                    nSrcOrDst = 2;
                                }
                            }
                            else
                            {    // false - false
                                if (!xCDoc.xOper.IsFillDst())
                                {
                                    nSrcOrDst = 1;
                                }
                            }
                        }
                    }
                    break;
                }
            }
            else
            {// для SSCC
                nSrcOrDst = AppC.RC_NOTADR;

                //switch (MoveType)
                //{
                //    case AppC.MOVTYPE.AVAIL:        // инвентаризации
                //        if ((xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_SRC_SET) > 0)
                //            nSrcOrDst = AppC.RC_NOTADR;                                 // использовать содержимое
                //        else
                //        {
                //            if (xPars.UseAdr4DocMode)
                //                nSrcOrDst = AppC.RC_CONTINUE;                               // сначала - адрес
                //            else
                //                nSrcOrDst = AppC.RC_NOTADR;                                 // использовать содержимое
                //        }
                //        break;
                //    case AppC.MOVTYPE.RASHOD:       // расходные документы
                //        if ((xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_SRC_SET) == 0)
                //            nSrcOrDst = 1;
                //        else
                //        {
                //            if ((xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_OBJ_SET) > 0)
                //                nSrcOrDst = 2;
                //            else
                //                nSrcOrDst = AppC.RC_NOTADR;
                //        }
                //        break;
                //    case AppC.MOVTYPE.PRIHOD:       // документы поступления
                //        if ((xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_OBJ_SET) > 0)
                //            nSrcOrDst = 2;                                              // использовать содержимое
                //        else
                //            nSrcOrDst = AppC.RC_NOTADR;                                 // сначала - адрес
                //        break;
                //    case AppC.MOVTYPE.MOVEMENT:     // документы перемещения
                //        if ((xCDoc.xOper.nOperState == AppC.OPR_STATE.OPR_EMPTY))
                //        {
                //            nSrcOrDst = 1;                                              // адрес-источник
                //        }
                //        else
                //        {
                //            if ((xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_OBJ_SET) > 0)
                //            {// есть объект, но он должен быть коробка или штучка
                //                nSrcOrDst = 2;                                              // адрес-источник
                //            }
                //            else
                //            {
                //                nSrcOrDst = AppC.RC_NOTADR;
                //            }

                //        }
                //        nSrcOrDst = AppC.RC_NOTADR;
                //        break;
                //    default:
                //        if (xCDoc.xOper.IsFillSrc())
                //        {// источник - задан

                //            if (bDstNeed)
                //            {//... - true
                //                if (!xCDoc.xOper.IsFillDst())
                //                    nSrcOrDst = 2;
                //            }
                //            else
                //            {//... - false
                //                // надо посмотреть, чем заполнен
                //                if (!xCDoc.xOper.IsFillDst())
                //                    nSrcOrDst = 1;
                //            }
                //        }
                //        else
                //        {// источник - пусто
                //            if (bSrcNeed)
                //                nSrcOrDst = 1;
                //            else
                //            {
                //                if (bDstNeed)
                //                {// false - true
                //                    if (!xCDoc.xOper.IsFillDst())
                //                        nSrcOrDst = 2;
                //                }
                //                else
                //                {// false - false
                //                    if (!xCDoc.xOper.IsFillDst())
                //                        nSrcOrDst = 1;
                //                }
                //            }
                //        }
                //        break;
                //}
            }

            if (nSrcOrDst == 0)
            {// выяснить не удалось
                DialogResult drQ = MessageBox.Show("\"Источник\" - Yes\n\"Приемник\" - No\nОтмена - Cancel",
                                                   "Какой адрес установить?",
                                                   MessageBoxButtons.YesNoCancel,
                                                   MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
                if (drQ == DialogResult.Yes)
                {
                    nSrcOrDst = 1;
                }
                else if (drQ == DialogResult.No)
                {
                    nSrcOrDst = 2;
                }
            }

            return(nSrcOrDst);
        }