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); }
//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 + ")"); }
// Обработка сканирования на панели Документов 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); } }
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 + ")"); }
// добавление полученных заявок в рабочие таблицы 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); }
// добавление полученных заявок в рабочие таблицы 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); }
private int AddZ(CurLoad xCL, ref string sErr) { return(AddZ(xCL, ref sErr, false)); }
// обработка функций и клавиш на панели 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); }
// Обработка сканирования на панели Документов 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); }
// Обработка сканирования на панели Документов 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); } } }
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); } }
// обработка функций и клавиш на панели 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); }