/// // обработка SSCC при вводе public int ProceedSSCC(ScanVarRM xSc, ref PSC_Types.ScDat scD, ServerExchange xSE) { int ret = AppC.RC_OK; bool bTryServer = false; string sSSCC = xSc.Dat; DataRow dr = null; AppC.MOVTYPE MoveType = xCDoc.xDocP.DType.MoveType; if (xSE == null) { xSE = new ServerExchange(this); bTryServer = true; } if (tcMain.SelectedIndex == PG_SCAN) { switch (MoveType) { case AppC.MOVTYPE.AVAIL: // инвентаризации bTryServer = true; break; case AppC.MOVTYPE.RASHOD: // расходные документы bTryServer = true; break; case AppC.MOVTYPE.PRIHOD: // документы поступления bTryServer = false; break; case AppC.MOVTYPE.MOVEMENT: // документы перемещения bTryServer = false; break; default: bTryServer = false; break; } } else if (tcMain.SelectedIndex == PG_SSCC) { bTryServer = false; } xCDoc.xOper.SSCC = xSc.Dat; if (bTryServer) { //ret = ConvertSSCC2Lst(xSE, xSc, ref scD, xNSI.DT[NSI.BD_DOUTD].dt, false); ret = ConvertSSCC2Lst(xSE, xCDoc.sSSCC, ref scD, true, xNSI.DT[NSI.BD_DOUTD].dt); if (ret == AppC.RC_OK) { if (xCLoad.dtZ.Rows.Count == 1) { // однородный поддон scD.sSSCC = sSSCC; dr = AddVirtProd(ref scD); } } } //if (dr == null) // dr = AddDetSSCC(xSc); switch (MoveType) { case AppC.MOVTYPE.AVAIL: // инвентаризации ret = AddGroupDet(ret, (int)NSI.SRCDET.SSCCT, xCDoc.sSSCC); break; case AppC.MOVTYPE.RASHOD: // расходные документы dr = AddSSCC2ProdList(xSc); break; case AppC.MOVTYPE.PRIHOD: // документы поступления dr = AddSSCC2ProdList(xSc); break; case AppC.MOVTYPE.MOVEMENT: // документы перемещения dr = AddSSCC2ProdList(xSc); break; default: dr = AddSSCC2ProdList(xSc); break; } AddSSCC2SSCCTable(xSc.Dat, -1, xCDoc, true); if (dr != null) { drDet = dr; } IsOperReady(); return(ret); }
/// какой из адресов следует заполнить (по типу движения документа) private int 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); }