// Proceso de preparación por Palet. public void SalidaPalet(params object[] parametrosS) { COMPRADIO.PRORAD Iptr = (COMPRADIO.PRORAD)parametrosS[0]; CString cstUbiOri = new CString(); CString cstDCOri = new CString(); CString cstPalet = new CString(); string cstLectura = null; int ret = 0, opc; char RetVal; opc = _INICIALIZAR; try { do { switch (opc) { case _INICIALIZAR: cstUbiOri = ""; cstDCOri = ""; cstPalet = ""; // Inicializar estado Salida Palet. RetVal = Iptr.SalInicializar(); switch (RetVal) { // OK case 'S': opc = _CARGAR_DATOS; break; // No OK case 'N': UserError(Iptr); opc = _FINALIZAR; break; // Resto de casos: Tomar como error. default: // NOK opc = _FINALIZAR; break; } break; case _CARGAR_DATOS: // Cargar datos palet a preparar. RetVal = Iptr.SalPeticionUbicacion(); switch (RetVal) { // OK case 'S': opc = _LECT_UBIORI; break; // No OK case 'N': UserError(Iptr); opc = _FINALIZAR; break; // Resto de casos: Tomar como error. default: // NOK UserError("SAP-????", "Opción no controlada"); opc = _FINALIZAR; break; } break; // Pedir ubicación origen. case _LECT_UBIORI: cstUbiOri = ""; cstDCOri = ""; cstLectura = ""; Pantalla_SalidaPalet(Iptr, _SECCION_1); clreol(0, _LINEA_INPUTS + 0); gotoxy(0, _LINEA_INPUTS + 0); printf(Iptr.GetMessage(_LECT_UBIORI_1, "Introduzca origen")); clreol(0, _LINEA_INPUTS + 1); gotoxy(0, _LINEA_INPUTS + 1); printf(Iptr.GetMessage(_LECT_UBIORI_2, "<F1: Salta>")); clreol(0, _LINEA_INPUTS + 2); gotoxy(0, _LINEA_INPUTS + 2); ret = leer_char(ref cstLectura, 16); switch (ret) { // Abandonar programa case _TECLA_ESC: opc = _FINALIZAR; break; // Saltar ubicación. case _TECLA_F1: opc = _SALTAR_UBICACION; break; // Validar ubicación sin DC. case _TECLA_0: cstUbiOri = cstLectura; opc = _VALIDAR_UBIORI; break; // Resto de teclas: ignorar. default: UserError("SAP-????", "Opción no controlada"); opc = _LECT_UBIORI; break; } break; // Pedir DC ubicación origen. case _LECT_DCORI: cstDCOri = ""; cstLectura = ""; Pantalla_SalidaPalet(Iptr, _SECCION_1); clreol(0, _LINEA_INPUTS + 0); gotoxy(0, _LINEA_INPUTS + 0); printf(Iptr.GetMessage(_LECT_DCORI_1, "Introduzca DC")); clreol(0, _LINEA_INPUTS + 1); gotoxy(0, _LINEA_INPUTS + 1); clreol(0, _LINEA_INPUTS + 2); gotoxy(0, _LINEA_INPUTS + 2); ret = leer_char(ref cstLectura, 2); switch (ret) { // Pedir origen. case _TECLA_ESC: opc = _LECT_UBIORI; break; // Validar ubicación origen con DC. case _TECLA_0: cstDCOri = cstLectura; opc = _VALIDAR_UBIORI; break; // Saltar ubicación. case _TECLA_F1: break; // Resto de teclas: Ignorar. default: UserError("SAP-????", "Opción no controlada"); opc = _LECT_DCORI; break; } break; // Validar la ubicación origen. case _VALIDAR_UBIORI: RetVal = System.Convert.ToChar(Iptr.SalValidarOrigen(cstUbiOri, cstDCOri)); switch (RetVal) { // OK case 'S': opc = _LECT_UBIORI; break; // NOK case 'N': UserError(Iptr); opc = _LECT_UBIORI; break; // OK: Leer el DC case 'D': opc = _LECT_DCORI; break; // Error en BBDD. case 'C': UserError(Iptr); opc = _FINALIZAR; break; // Resto de casos: Ignorar. default: UserError("SAP-????", "Opción no controlada"); opc = _LECT_UBIORI; break; } break; // Pedir nº de palet / SSCC. case _LECT_BULTO: cstPalet = ""; cstLectura = ""; Pantalla_SalidaPalet(Iptr, _SECCION_1); clreol(0, _LINEA_INPUTS + 0); gotoxy(0, _LINEA_INPUTS + 0); printf(Iptr.GetMessage(_LECT_BULTO_1, "Introduzca bulto")); clreol(0, _LINEA_INPUTS + 1); gotoxy(0, _LINEA_INPUTS + 1); printf(Iptr.GetMessage(_LECT_BULTO_2, "<F1:Salta F3:Vacia>")); clreol(0, _LINEA_INPUTS + 2); gotoxy(0, _LINEA_INPUTS + 2); ret = leer_char(ref cstLectura, 20); switch (ret) { // Ir a pedir ubicación origen case _TECLA_ESC: opc = _LECT_UBIORI; break; // Saltar la ubicación. case _TECLA_F1: opc = _SALTAR_UBICACION; break; // Validar el bulto case _TECLA_0: cstPalet = cstLectura; opc = _VALIDAR_BULTO; break; // La ocupación está vacía. case _TECLA_F3: opc = _VACIAR_OCUPACION; break; // Resto de teclas: ignorar default: UserError("SAP-????", "Opción no controlada"); opc = _LECT_BULTO; break; } break; // Validar el nº de palet case _VALIDAR_BULTO: RetVal = Iptr.SalValidarPalet(cstPalet); switch (RetVal) { // OK: Confirmar. case 'S': opc = _DATOS_OK; break; // NOK case 'N': UserError(Iptr); opc = _LECT_BULTO; break; // Error en BBDD. case 'C': UserError(Iptr); opc = _FINALIZAR; break; // Resto de casos: Ignorar. default: UserError("SAP-????", "Opción no controlada"); opc = _LECT_BULTO; break; } break; // Confirmar preparación del palet. case _DATOS_OK: Pantalla_SalidaPalet(Iptr, _SECCION_1); clreol(0, _LINEA_INPUTS + 1); clreol(0, _LINEA_INPUTS + 2); clreol(0, _LINEA_INPUTS + 3); ret = preguntar(Iptr.GetMessage(_DATOS_OK_1, "Datos OK (S/N)"), _LINEA_INPUTS + 1); switch (ret) { // Grabar datos. case _TECLA_SI: opc = _ACTUALIZAR; break; // Resto teclas: Ignorar default: opc = _LECT_BULTO; break; } break; // Actualizar palet preparado. case _ACTUALIZAR: RetVal = System.Convert.ToChar(Iptr.SalActualizar()); switch (RetVal) { // OK case 'S': // Palet preparado. opc = _CARGAR_DATOS; break; // NOK case 'N': UserError(Iptr); opc = _LECT_BULTO; break; // Error en BBDD case 'C': UserError(Iptr); opc = _FINALIZAR; break; // Resto de casos: Tomar como OK. default: UserError("SAP-????", "Opción no controlada"); opc = _CARGAR_DATOS; break; } break; // Cerrar estado Salidas Palet. case _FINALIZAR: opc = _NO_OPERACION; break; default: opc = _NO_OPERACION; break; } }while (opc != _NO_OPERACION); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); Console.ReadKey(); } finally { RetVal = System.Convert.ToChar(Iptr.SalFinalizar()); } return; }
//------------------------------------------------- // Menú. Versión configurable. //------------------------------------------------- /// <summary> /// Menú general de opciones - Formato configurable. /// </summary> /// /// <param name="parametros"> Array de parámetros</param> /// /// <remarks> /// parametros[0] - Objeto COMPRADIO. /// </remarks> /// /// <seealso cref="menu(object[])"/> /// <seealso cref="_tmain"/> /// /// <returns></returns> public int DisplayPantallaPro(params object[] parametros) { COMPRADIO.PRORAD Iptr = (COMPRADIO.PRORAD)parametros[0]; int opc; int tecla; char cRetVal; CString cstSeccion = ""; Char cstMenu = ' '; CString cstComando = ""; CString cstEntry = ""; opc = _INICIALIZAR_MENU; do { switch (opc) { case _INICIALIZAR_MENU: cstSeccion = _SECCION_0; opc = _LECTURA_MENU; break; // Mostrar el menú activo. case _LECTURA_MENU: clrscr(); DisplayUserScr(Iptr, _PROGRAMA, cstSeccion, "MENUS"); cstMenu = ' '; gotoxy(0, _LINEA_INPUTS); do { gotoxy(_COLUMNA_INPUTS, _LINEA_INPUTS); tecla = getkey(); } while (tecla == -1); switch (tecla) { // Ir al nivel anterior, ó exit. case _TECLA_ESC: opc = _PREVIOUS_MENU; break; // Validar la opción de menú. default: cstMenu = System.Convert.ToChar(tecla); opc = _VALIDAR_MENU; break; } break; // Validar el menú case _VALIDAR_MENU: cRetVal = System.Convert.ToChar(Iptr.ValidarMenu(_PROGRAMA, cstSeccion, cstMenu)); switch (cRetVal) { // OK: Ejecutar la función seleccionada. case 'F': cstComando = Iptr.MnuNamespace + "." + Iptr.MnuClase + ", " + Iptr.MnuEnsamblado; cstEntry = Iptr.MnuEntryPoint; System.Object[] pmo = { Iptr, new System.Object[] { } }; Type t = System.Type.GetType(cstComando); if (t == null) { UserError("_SYS-0010", Iptr.GetMessage("_SYS-0010", "Llamada es NULL", Iptr.MensajesRF)); opc = _LECTURA_MENU; break; } object ot = System.Activator.CreateInstance(t); ot.GetType().GetMethod(cstEntry).Invoke(ot, pmo); opc = _LECTURA_MENU; break; // OK: Displayar el menú seleccionado. case 'M': cstSeccion = Iptr.MnuSeccion; opc = _LECTURA_MENU; break; // Salir. case 'Q': opc = _FINALIZAR_MENU; break; // Opción incorrecta. case 'N': UserError(Iptr); opc = _LECTURA_MENU; break; // Error. case 'C': UserError(Iptr); opc = _FINALIZAR_MENU; break; // Resto de casos: ignorar. default: opc = _LECTURA_MENU; break; } break; // Ir al nivel anterior de menú. case _PREVIOUS_MENU: cstSeccion = System.Convert.ToString(Iptr.MnuSeccion); cRetVal = System.Convert.ToChar(Iptr.PreviousMenu(_PROGRAMA, cstSeccion, 'Q')); switch (cRetVal) { // OK: Display menú. case 'S': cstSeccion = (string)Iptr.MnuSeccion; opc = _LECTURA_MENU; break; // Salir. case 'Q': opc = _FINALIZAR_MENU; break; // Opción incorrecta case 'N': UserError(Iptr); opc = _LECTURA_MENU; break; // Error case 'C': UserError(Iptr); opc = _FINALIZAR_MENU; break; // Resto de casos: ignorar default: opc = _LECTURA_MENU; break; } break; // Finalizar tratamiento de menú case _FINALIZAR_MENU: opc = _NOOPERACION_MENU; break; } } while (opc != _NOOPERACION_MENU); return(0); }
//------------------------------------------------- // Función principal. //------------------------------------------------- /// <summary> /// Punto de entrada al programa de RF. /// </summary> /// <seealso cref="menu(object[])"/> /// <seealso cref="DisplayPantallaPro(object[])"/> /// <returns></returns> public int _tmain() { int opc, ret, siguiente_operacion = 0; int nRetCode = 0; char RetVal = ' '; string lectura_operario = null; string lectura_terminal = null; // compradio.proradClass comInstance = new compradio.proradClass(); COMPRADIO.PRORAD comInstanceCS = new COMPRADIO.PRORAD(); try { opc = _INICIALIZAR; do { switch (opc) { case _INICIALIZAR: // Conectar la BBDD clrscr(); gotoxy(0, 14); Console.WriteLine("Conectando ..."); // RetVal = System.Convert.ToChar(comInstance.inicioconexion()); RetVal = comInstanceCS.InicioConexion(); switch (RetVal) { // OK case 'S': opc = _LECTURA_OPERARIO; break; // Error inicializar. case 'N': UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); nRetCode = 2; opc = _FINALIZAR; break; // Error general. case 'C': UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); nRetCode = 2; opc = _FINALIZAR; break; // Resto de casos: OK default: opc = _LECTURA_OPERARIO; break; } break; // Entrar código de operario. case _LECTURA_OPERARIO: clrscr(); gotoxy(0, 1); printf(comInstanceCS.GetMessage("INI-0005", "PRORAD.2").TrimEnd()); gotoxy(0, 4); printf(comInstanceCS.GetMessage("INI-0006", "Operario: ").TrimEnd()); lectura_operario = ""; gotoxy(10, 4); ret = leer_char(ref lectura_operario, 4); switch (ret) { // Salir del programa case _TECLA_ESC: opc = _FINALIZAR; break; // Pedir terminal case _TECLA_0: opc = _VALIDAR_OPERARIO; break; // Resto de casos: ignorar default: opc = _LECTURA_OPERARIO; break; } break; // Entrar tipo terminal case _LECTURA_TERMINAL: clrscr(); gotoxy(0, 1); printf(comInstanceCS.GetMessage("INI-0005", "PRORAD.2").TrimEnd()); gotoxy(0, 4); printf(comInstanceCS.GetMessage("INI-9006", "Operario: {0}").TrimEnd(), lectura_operario); gotoxy(0, 5); printf(comInstanceCS.GetMessage("INI-0007", "Terminal: ").TrimEnd()); lectura_terminal = ""; gotoxy(10, 5); ret = leer_char(ref lectura_terminal, 2); switch (ret) { // Ir a pedir operario. case _TECLA_ESC: siguiente_operacion = _LECTURA_OPERARIO; opc = _DESCONECTAR_OPERARIO; break; // Realizar las validaciones case _TECLA_0: opc = _VALIDAR_TERMINAL; break; // Resto de casos: ignorar default: opc = _LECTURA_TERMINAL; break; } break; // Validar operario case _VALIDAR_OPERARIO: // RetVal = System.Convert.ToChar(comInstance.conectarusuario(lectura_operario)); RetVal = comInstanceCS.ConectarUsuario(lectura_operario); switch (RetVal) { // OK: Mostar menú de opciones. case 'S': opc = _LECTURA_TERMINAL; break; // Valores incorrectos. case 'N': UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); opc = _LECTURA_OPERARIO; break; // Error case 'C': UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); nRetCode = 3; opc = _FINALIZAR; break; // Resto de casos: ignorar default: opc = _LECTURA_OPERARIO; break; } break; // Validar terminal. case _VALIDAR_TERMINAL: // RetVal = System.Convert.ToChar(comInstance.scrvalidarterminal(lectura_terminal)); RetVal = comInstanceCS.ValidarTerminal(lectura_terminal); switch (RetVal) { // OK: Mostar menú de opciones case 'S': opc = _DATOS_OK; break; // Valores incorrectos case 'N': UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); opc = _LECTURA_TERMINAL; break; // Error case 'C': UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); nRetCode = 4; opc = _FINALIZAR; break; // Resto de casos: ignorar default: opc = _LECTURA_TERMINAL; break; } break; // Desconectar operario activo case _DESCONECTAR_OPERARIO: // RetVal = System.Convert.ToChar(comInstance.desconectarusuario()); RetVal = comInstanceCS.DesconectarUsuario(); switch (RetVal) { // Siguiente operación a realizar: // - Pedir operario // - Cerrar BBDD case 'S': opc = siguiente_operacion; break; // Error case 'C': UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); nRetCode = 5; opc = _FINALIZAR; break; // Resto valores: Error default: UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); nRetCode = 6; opc = _FINALIZAR; break; } break; // Display del menú general case _DATOS_OK: // Cargar la línea inicial de inputs. _LINEA_INPUTS = comInstanceCS.LineaInputs; // Cargar la columna de inputs. // _COLUMNA_INPUTS = System.Convert.ToInt32(comInstanceCS.ColumnaInputs); _COLUMNA_INPUTS = comInstanceCS.ColumnaInputs; // Llamada al menú principal. menu(comInstanceCS); //DisplayPantallaPro(comInstanceCS); nRetCode = 0; opc = _LECTURA_TERMINAL; break; // Finalizar programa case _FINALIZAR: opc = _DESCONECTAR_BBDD; break; // Cerrar BBDD case _DESCONECTAR_BBDD: // RetVal = System.Convert.ToChar(comInstance.finconexion()); RetVal = comInstanceCS.FinConexion(); switch (RetVal) { // Valores incorrectos case 'N': UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); break; // Error case 'C': UserError(comInstanceCS.UsrErrorC, comInstanceCS.UsrError); break; } opc = _FINALIZAR; break; default: opc = _FINALIZAR; break; } } while (opc != _FINALIZAR); } catch (Exception ex) { string cadena = DateTime.Now.ToString() + "|" + ex.Message + "|" + ex.StackTrace + System.Environment.NewLine; System.IO.FileStream fs = new System.IO.FileStream("PRORAD.LOG", System.IO.FileMode.Append); fs.Write(ASCIIEncoding.ASCII.GetBytes(cadena), 0, cadena.Length); fs.Close(); nRetCode = ex.HResult; Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); Console.ReadKey(); } finally { RetVal = comInstanceCS.DesconectarUsuario(); RetVal = comInstanceCS.FinConexion(); } return(nRetCode); }
// Proceso de recuento de material. public void RecuentoMaterial(params object[] parametrosE) { COMPRADIO.PRORAD Iptr = (COMPRADIO.PRORAD)parametrosE[0]; CString cstCodEAN = new CString(); CString cstCantid = new CString(); CString cstAlbaran = new CString(); string cstLectura = null; int ret = 0, opc; char RetVal; CONSULTAALBARANES oCns = null; opc = _INICIALIZAR; try { do { switch (opc) { case _INICIALIZAR: cstCodEAN = ""; cstCantid = ""; cstAlbaran = ""; cstLectura = ""; // Inicializar estado recuento de material por albarán. RetVal = System.Convert.ToChar(Iptr.RecInicializar()); switch (RetVal) { // OK case 'S': opc = _LECT_ALBARAN; break; // Resto de casos: Tomar como error. default: // NOK opc = _FINALIZAR; break; } break; // Pedir nº de albarán a recontar case _LECT_ALBARAN: cstAlbaran = ""; Pantalla_RecuentoMaterial(Iptr, _SECCION_1); clreol(0, _LINEA_INPUTS + 0); gotoxy(0, _LINEA_INPUTS + 0); printf(Iptr.GetMessage(_LECT_ALBARAN_1, "Introduzca albaran")); clreol(0, _LINEA_INPUTS + 1); gotoxy(0, _LINEA_INPUTS + 1); printf(Iptr.GetMessage(_LECT_ALBARAN_2, "<F2:Consulta>")); clreol(0, _LINEA_INPUTS + 2); gotoxy(0, _LINEA_INPUTS + 2); ret = leer_char(ref cstLectura, 10); cstAlbaran = cstLectura; switch (ret) { // Abandonar programa case _TECLA_ESC: opc = _FINALIZAR; break; // Consulta de albaranes case _TECLA_F2: opc = _CONS_ALBARANES; break; case _TECLA_0: opc = _VALIDAR_ALBARAN; break; // Resto de teclas: ignorar. default: opc = _LECT_ALBARAN; break; } break; // Validar el nº de albarán // Se viene desde _LECT_ALBARAN (TECLA_0) y _CONS_ALBARAN case _VALIDAR_ALBARAN: RetVal = Iptr.RecValidarAlbaran(cstAlbaran); switch (RetVal) { // OK case 'S': opc = _LECT_CODEAN; break; // NOK case 'N': UserError(Iptr); opc = _LECT_ALBARAN; break; // Error en BBDD. case 'C': UserError(Iptr); opc = _FINALIZAR; break; // Resto de casos: Tomar como OK default: // Albarán OK opc = _LECT_CODEAN; break; } break; // Solicitamos código de barras del artículo. case _LECT_CODEAN: cstCodEAN = ""; cstCantid = ""; Pantalla_RecuentoMaterial(Iptr, _SECCION_1); clreol(0, _LINEA_INPUTS + 0); gotoxy(0, _LINEA_INPUTS + 0); printf(Iptr.GetMessage(_LECT_CODEAN_1, "Introduzca EAN")); clreol(0, _LINEA_INPUTS + 1); clreol(0, _LINEA_INPUTS + 2); gotoxy(0, _LINEA_INPUTS + 2); ret = leer_char(ref cstLectura, 20); cstCodEAN = cstLectura; switch (ret) { // Ir a pedir albarán. case _TECLA_ESC: opc = _LECT_ALBARAN; break; case _TECLA_0: RetVal = System.Convert.ToChar(Iptr.RecValidarEAN(cstCodEAN)); switch (RetVal) { // OK case 'S': opc = _LECT_CANTID; break; // NOK case 'N': UserError(Iptr); opc = _LECT_CODEAN; break; // Error en BBDD. case 'C': UserError(Iptr); opc = _FINALIZAR; break; // Resto de casos: Tomar como OK default: // Albarán OK opc = _LECT_CANTID; break; } break; // Resto de teclas: ignorar. default: opc = _LECT_CODEAN; break; } break; // Entrar la cantidad recontada. case _LECT_CANTID: cstCantid = ""; Pantalla_RecuentoMaterial(Iptr, _SECCION_1); clreol(0, _LINEA_INPUTS + 0); gotoxy(0, _LINEA_INPUTS + 0); printf(Iptr.GetMessage(_LECT_CANTID_1, "Introduzca cantidad")); clreol(0, _LINEA_INPUTS + 1); gotoxy(0, _LINEA_INPUTS + 1); printf(Iptr.GetMessage(_LECT_CANTID_2, "<F2:Poner a cero>")); clreol(0, _LINEA_INPUTS + 2); gotoxy(0, _LINEA_INPUTS + 2); ret = leer_char(ref cstLectura, 10); cstCantid = cstLectura; // Tratamiento lectura switch (ret) { // Ir a pedir EAN case _TECLA_ESC: opc = _LECT_CODEAN; break; // Poner a cero cantidad recontada de la línea case _TECLA_F2: opc = _PONER_CERO; break; case _TECLA_0: RetVal = Iptr.RecValidarCnt((string)cstCantid); switch (RetVal) { // OK case 'S': // Albarán OK opc = _DATOS_OK; break; // NOK case 'N': UserError(Iptr); opc = _LECT_CANTID; break; // Cantidad > cantidad pedida case 'P': UserError(Iptr); clreol(0, _LINEA_INPUTS + 1); ret = preguntar(Iptr.GetMessage(_LECT_CANTID_3, "Aceptar cantidad (S/N)"), _LINEA_INPUTS + 1); switch (ret) { // Aceptar cantidad recontada > cantidad pedida case _TECLA_SI: opc = _DATOS_OK; break; // Por defecto NO acepta la cantidad default: opc = _LECT_CANTID; break; } break; // Error en BBDD case 'C': UserError(Iptr); opc = _FINALIZAR; break; // Resto de casos: Tomar como OK default: // Albarán OK opc = _DATOS_OK; break; } break; // Resto de teclas: Ignorar. default: opc = _LECT_CANTID; break; } break; // Actualizar cantidad recontada en la línea del albarán case _DATOS_OK: Pantalla_RecuentoMaterial(Iptr, _SECCION_1); clreol(0, _LINEA_INPUTS + 1); ret = preguntar(Iptr.GetMessage(_DATOS_OK_1, "Datos OK (S/N)"), _LINEA_INPUTS + 1); switch (ret) { // Grabar datos case _TECLA_SI: opc = _ACTUALIZAR; break; // Resto teclas: Ignorar default: opc = _LECT_CANTID; break; } break; // Actualizar cantidad y estado albarán de entrada. case _ACTUALIZAR: RetVal = System.Convert.ToChar(Iptr.RecActualizar()); switch (RetVal) { // OK case 'S': // Recuento actualizado opc = _LECT_CODEAN; break; // NOK case 'N': UserError(Iptr); opc = _LECT_CANTID; break; // Error en BBDD case 'C': UserError(Iptr); opc = _FINALIZAR; break; // Resto de casos: Tomar como OK default: // Recuento actualizado opc = _LECT_CODEAN; break; } break; // Consulta de albaranes. case _CONS_ALBARANES: oCns = new CONSULTAALBARANES(); oCns.ConsultaAlbaranes(Iptr); oCns = null; // Recuperar albarán actual, si hay. cstAlbaran = (string)Iptr.CnsNumAlb; opc = _VALIDAR_ALBARAN; break; // Cerrar estado recuento de material. case _FINALIZAR: opc = _NO_OPERACION; break; default: opc = _NO_OPERACION; break; } }while (opc != _NO_OPERACION); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); Console.ReadKey(); } finally { RetVal = System.Convert.ToChar(Iptr.RecFinalizar()); } return; }