Respuestas de foro creadas

Viendo 15 entradas - de la 211 a la 225 (de un total de 232)
  • Autor
    Entradas
  • en respuesta a: Imagenes del Sistema #33927
    Javier AderJavier Ader
    Participante

    creo que se está refiriendo a las opciones de la ventana Imagen del Sistema dentro del perfil System Administrator (esta ventana esta desactivada por defecto; supongo que al tiene que haber activado modificando el diccionario de datos). Esta ventana, si no entiendo mal, permite definir la “imágenes de otras ventanas” (la lista que aparece en el campo Imagen dentro de la ventana Ventana,Pestaña y Campos). Ahí por ej aparece el icono que llevan las ventanas relacionadas con Entidades comerciales , con nombre BPartner y con “url”: /org/openXpertya/images/BPartner16.gif . Bueno, a lo que voy es que esa “url” me parece que no hace referencia a lo que haya en el servidor de aplicaciones (bah… creo…) si no que es el path dentro del jar OXP.jar; en particular es icono corresponde a orgopenXpertyaimagesBPartner16.gif dentro de OXP.jar (la similitudes de la “url” y el path dentro del jar obviamente no es una coincidencia).
    Es decir, pongas lo que pongas dentro del servidor de aplicaciones (pero creo que en realidad te estas refiriendo al servidor web) o dentro del directorio ServidorOXP no importa; las “urls” se van a ir a buscar como un recurso dentro del jar.
    Mi conclusión es que, salvo que libertya maneje las “urls” de una manera más general y no simplemente como un path dentro del jar, no se puede hacer lo que estás pidiendo sin recompilar libertya luego de haber agregado las imagenes que deseas (también te queda la opción que te puse en el link anterior; e.d agregar imágenes dentro del jar sin recompilar). En cualquier caso, no se puede hacer simplemente poniendo un archivo en un directorio.
    Ok, todo esto “lo creo”, pero tengo la sensación que es así (si no lo fuera, el cliente “pesado” jamás vería las nuevas imágenes ya que este busca en el jar local siempre; el servidor de aplicaciones creo que no se usa para estas cosas)

    en respuesta a: Imagenes del Sistema #33926
    Javier AderJavier Ader
    Participante

    Buenas. Mucha idea de esa función de agregar imágenes no conozco, pero las imágenes también están en el la versión “ejecutable”; e.d dentro del uno de los .jar. Esos .jar tienen las clases de java compiladas pero también las imágenes; la única diferencia es que un .jar es en realidad un archivo .zip como cualquier otro. Ok, esto tal vez ya lo sabías y no tenga mucho que ver con lo que planteas… salvo que la única manera de agregar imágenes sea poniéndolas dentro de los jar (acá http://www.libertya.org/comunidad/foro-libertya/6-ayuda/786-temas-de-interfaz-de-usuario?limit=6&start=6#808 hice algo por el estilo; en el caso de solo agregar imágenes me parece que no es necesario modificar el MANIFEST.MF o el LLIBERTYA.SF).

    en respuesta a: Contabilidad y compra de productos #33899
    Javier AderJavier Ader
    Participante

    así parece… edite la tabla m_product_costing; la fila asociada al producto tenia casi todas las columans en cero (menos la ultimas 3: pricelastinv, totalinvqty y totalinvamt que supongo que salieron de una de las listas de compra…); cambie la columna currentcostprice a 10 (el valor unitario), y reaplique el remito y me genero las entradas de manera correcta (100 ya que eran 10 productos). Tambien habia entradas creadas para los otros productos que cree, también con valores en cero (pero no para los que venian creadas desde la instalación, 2 de los cuales no son “productos” si no tipos de gastos; supongo que estos son excluidos de procuct_costing). Estos valores también los usa para los inventarios físicos no? (ok, pruebo y si veo algo raro aviso)
    Asumo que debe haber alguna ventana o pestaña para setear estos valores, después veo si la encuentro.

    en respuesta a: vistas #33894
    Javier AderJavier Ader
    Participante

    bueno, mucha idea no tengo… pero igual; supongo que presentación = GUI no? Bueno, al menos las clases asociadas a los formularios (no a las ventanas en general) las podes ver en la tabla ad_form en la base de datos en la columna classname,por lo general bajo el namespace org.openXpertya.apps.*. Ahora, en que paquete se encuentra por lo general estas clases, ni idea pero casi seguro que estan bajo el paquete “client”.
    Las ventanas en general (por ej, la de entidades comerciales, por decir algo), aunque mucho no investigue, me parece que no tienen asociada una clase en particular cada una; me da la sensación que las gui de estas se generan solo a partir del diccionario de datos y debe haber una sola clase (bastante compleja supongo) que genera todo esto.
    Lo que se me ocurre que se puede hacer es usar eclipse en modo debugger o poner un par de breackpoints para saber que clases estan implementando que ventanas, por ej mirando la stack (no me pregunstes mucho mas porque de eclipse se muy poco, pero tiene que poder hacerse); despues investigas estas clases y o las buscas en eclipse para saber en que paquete están. Bueno, pero para eso vas a tener que compilarlo, pero no debería serte mucho problema si es que estas queriendo hacer algo a tan bajo nivel.

    en respuesta a: No puede aplicar contablemente el libro de caja #33892
    Javier AderJavier Ader
    Participante

    Ahhhhhhhh creo que ya se… pero es muy probable que pase con la configuración de libro de caja que viene ya creada o tal vez hice algo raro yo o hay algo que no termino de entender con los permisos a organizaciones (lo del procesador contable… probé todo; automático, pero con 30 días hacia atrás y hacia adelante; es modo manual pero abriendo todos los periodos del mes pasado y del actual, todo esto siempre reiniciando el servidor y nada; ni un warning, ni el log, ni en los avisos y en la solapa errores en preferencias; en el area de notificación me decía “Datos actualizados” e.d, todo parecía normal, menos que no me creaba los asientos).
    La configuración de libro de caja tenia como Organizacion a “*” (no se si la traía o si la puse yo ya que en algún momento tuve que habilitar la organización “*”). Cree otra configuración, pero esta vez no me permitió escoger * (mejor, porque mi idea era probar con la organización real por si era un tema de privilegios). Cree un libro de caja usando esta configuración, le puse una linea, lo complete y lo aplique… y todo bien! me creo los asiento y el botón paso a Aplicado.

    Bueno, casi seguro que viene por ahí el tema (lo que es malo es que no de ni un aviso). Supongo que podría cerrar los libros anteriores de manera sucia: modifico la entrada en tabla C_Cashbook perteneciente al libro de caja que trae la instalación y modifico el ad_org_id de 0 (lo que esta ahora, e.d “*”) a 1000047 (el id de mi organización) y despues lo aplico. Casi seguro que va a andar, pero no se si es lo correcto. Tal vez haya que darle permisos al perfil de administración para que pueda acceder a “*” pero…. esto no debería venir asi ya? además creo que el perfil ya tiene permisos de acceder a *; en realidad hasta intente loguearme y escoger “*” como organización y despues aplicarlo; y tampoco (esto me hace preguntar: que pasa si una configuración de libro de caja pertenece a una organización X , pero el libro de caja que se basa en este pertene a Y? Quién lo va a poder aplicar? Un usuario de X o de Y? bueno… habrá que probar…)

    P.D: Estoy casi seguro que la conf de libro que viene preinstalada trae como organización a “*” (ya que tengo un backup de una instalación anterior), lo raro es que esto me haya pasado solo a mi… no es la primera cosa rara que me pasa jaja

    en respuesta a: PCs cliente #33889
    Javier AderJavier Ader
    Participante

    No, no tenes que instalar postgres en las maquinas en los que corre el cliente (ni el liviano ni el pesado); tampoco libertya. Java si es necesario pero solo necesitas el JRE; si instalaste el JDK también te sirve porque esto incluye un JRE (el JRE es trae basicamente la maquina virtual; el JDK trae además el compilador y cosas por el estilo que solo son necesarias que estén instaladas en el servidor).

    La configuración de postgres creo que esta bien (aunque yo tengo “0.0.0.0/0 trust” en donde vos tenes “0/0 trust”; pero debe ser lo mismo)

    Igual, lo que veo que te esta pasando es que el nombre del servidor de la base de datos en el screenshot(Database Host: Servidor_BaseDeDatos) esta mal; ahi tiene que ir o la ip del servidor o el nombre de la maquina (Servidor_BaseDeDatos es el valor que te trae por defecto la primera vez que corres el cliente, pero ese no es el nombre de tu servidor).

    Para mi tenes que hacer esto: poniendo la ip o el nombre del servidor en el test de aplicación y haciendo correr solo este test (en realidad es el único que debes correr; si este pasa realmente bien, pone un tilde en el test de base de datos; y cuando tenes los dos tildes esta todo bien), te debería llenar la configuración correcta con respecto a la postgres. Cuando corres este test automaticamente te completa la ip o nombre del servidor donde esta corriendo postgres (además de los otros datos como port de postgres, nombre de base de datos, etc). El tema es que estos datos te los envia el servidor de aplicaciones dependiendo de los datos que pongas usando el script configurar.sh (en la entrada Servidor de Base de Datos de la ventana que te muestra configurar.sh tenes que tener o 192.168.0.102 o vkmc-thermalx2 ; eso va a ser lo que te envíe el test de aplicación)

    en respuesta a: PCs cliente #33887
    Javier AderJavier Ader
    Participante

    De mis épocas de Ubuntu creo recordar que no había ningún firewall activado por defecto, pero bueno, eran otros tiempos.
    Yo te diría que hagas el telnet contra los ports que usa el servidor directamente (no contra 110).

    telnet vkmc-thermalx2 “puerto JNP”
    Por defecto 1099; con esto probás que se pueda acceder al servidor de aplicaciones; si no te tira errores de conexiones esta accesible (error de conexión es “Conection refused” o conexión denegada o “Port inaccesible”); yo lo probé bajo windows y el servidor de aplicaciones en cuanto te contectas te envía una cantidad de cosas no completamente legibles, pero deberías poder leer algunas letras ascii como por ej “java.rmi.MarshalledObject” ; despues de esto telnet se me “auto” finalizo, ya que interpreto esos datos y muy probablemente no los comprendió (bueno… era de esperar)

    telnet vkmc-thermalx2 “puerto de postgress”
    Por defecto 5432; en el caso de postgress, este no envia nada en cuanto te conectas, asi que si todo va ok , te tiene que quedar el cursor en espera; Ctrl+C o Ctrl+D para finalizar)

    Telnet lo que hace es crear un conexión tcp común; asi que si telnet se conecta se tiene que poder conectar los clientes.

    Otro tema es que haya un firewall en la maquina cliente que impida de entrada la generación de la conexión, pero lo veo poco probable (bajo firewall XP este si es el caso ya que hay que darle permisos a Java para poder crear conexiones salientes)

    Por último, en cualquiera de los dos maquinas para ver bien lo que esta pasando podes instalar Wireshark o Ethereal (seguro que synaptic los encontras en seguida). Con estos podes “sniffear” la placa de red y ver que conexión (o intentos de conexion) ocurren.

    P.D : haaaaaaa la otra es que postgress este configurado para rechazar conexiones desde otras maquinas; chequeaste esto?. Si este es el caso, la conexión no se va a dar simplemente porque postgress no quiere (y no por un firewall o algo por el estilo) Bajo la instalación de windows, el isntalador de libertya se toma el trabajo de modificar la configuración por defecto de postgres para que acepte conexiones desde cualquier lado (si no, creo que el comportamiento por defecto es solo aceptar desde localhost o desde alguna de las ips que tenga el servidor). En un thread de instalación sobre ubuntu creo haber visto que esto se debía hacer manualmente.

    en respuesta a: Temas de Interfaz de Usuario #33834
    Javier AderJavier Ader
    Participante

    jaja me sali con la mía sin tocar una linea de código. Es una forma bastante sucia, pero puede que sirva para aquellos que no quieren o no pueden compilar y tienen el mismo problema (basicamente, muchas ventanas con distintos perfiles) asi que lo comparto (de todas maneras no lo recomiendo para usos en producción, ya que se rompen ciertas reglas de seguridad y de chequeos de integridad de código; solo es para los que están conociendo a libertya o haciendo pruebas):
    1) se agarra el cliente pesado; se lo descomprime en un directorio cualquiera
    2) se va al subdirecotrio lib
    3) se agarra el OXP.jar y se lo descomprime con cualquier descompresor de zip (7zip por ejemplo). Un .jar es un .zip normal solo con una estructura de directorios definida.
    4) se va al subdirectorio META-INF, y se edita el archivo MANIFEST.MF con cualquier editor de textos borrando todas las lineas que vienen despues de “Main-Class: org.openXpertya.OpenXpertya”
    (OBS: si no se hace esto el programa no va arrancar ya que va a detectar que hay archivos modificados; la otra forma es calcular los hash sha1 de las nuevas imagens y ponerlas en las entradas correspondientes con nombres “Name:”; esto es en realidad la parte “sucia” )
    5) se elimina el archivo LIBERTYA.SF por razones similares a las anteriores.
    6) ahora se va al subdirectorio orgopenXpertyaimages y se reemplaza el archivo OXP16.gif por cualquier gif con dimensiones 16×16 (google-> free icons y se encuentran a patadas), obviamente respentando el nombre del archivo.
    7 ) ahora se recrea el nuevo OXP.jar: se comprimen los directorios y archivos generados en la descompresión del paso 3 (en este caso en particular los directorios com, META-INF, openXpertya y org ) y se los comprime en un arhivo zip; digamos OXP.zip.
    8) se renombra OXP.zip por OXP.jar y se lo pone en lugar del OXP.jar orignal (el ogininal si quiern simplemente renombrelo por si algo falla; diamgoa por OXP-orig.jar)
    9) se ejecuta libertya.exe y listo

    Adjunto una imagen para que quede claro cual es la idea (lo mismo se ve cuando uno hace alt-tab)
    (versión grade: http://www.eltita.com.ar/libertya/libertya-icon-mod.jpg )

    P.D: el mismo procedimiento se puede hacer para otras imágenes, pero sinceramente no le veo mucha utilidad [img size=385]http://www.libertya.org/media/kunena/attachments/legacy/images/libertya_icon_mod2.JPG[/img]

    en respuesta a: Temas de Interfaz de Usuario #33833
    Javier AderJavier Ader
    Participante

    bueno antonio, arranque por tu lado…pero algo raro esta pasando. Esta vez estoy ejecutando el compilar.bat (primero el que esta en tools… despues me di cuenta que tambien hay uno bajo client y pase a ese) desde la maaquina de mi hermana (2 nucleos, 4gb de ram… asi que por ahi no va la cosa) y esta compilando hace como 5 minutos, pero en eclipse desde mi maquina viejita me lo compilo muchísimo más rápido!!! Incluso redirige la saida a un archivo porque siempre tuve la sensación que la salidad por consola bajo Windows ralenta a cualquiera que la use mucho. Ok, no se por donde viene el tema pero me parece que este compilar.bat (cualquiera de ellos) termina disparando la compilación de todo, inclusive de las herramientas externas, cuando me parece que esto no es necesario.
    Después comento que paso.

    AGREGO: bueno…. es obvio que el problema viene por los paths con espacios (java esta en “Archivos de Programas” por ej). En el archivo de salida (en la consola iba tan rapido que no alcanzaba a leer) se ven cosas como

    “de” no se reconoce como un comando interno o externo,
    programa o archivo por lotes ejecutable.

    repetido varias veces al comienzo y despues entra en bucle infinito al intentar crear el “keytore” desde utils_devVariblesCompilacion.bat (que es lo primero que llama cualquier compilar.bat)…no hay keystore, la creamos, no hay keystore la creamos, y asi forever intercalando un “C:Achivos” comando no reconocido, que es cuando intenta ejecutar el keytool de java…). Así que no se, o reinstalo java en path sin espacio vuelvo a eclipse.
    También vi que el variableCompilación.bat inteta crear el C:ServidorOXP… la compilación me iba a pisar mi actual instalación???? si es asi me alegro de que haya fallado jaja (igual eso es solo cosa de cambiar una linea en variablesCompilacion.bat y listo).

    en respuesta a: Temas de Interfaz de Usuario #33832
    Javier AderJavier Ader
    Participante

    Antonio, me parece o me estás queriendo hacer trabajar? jaja. Bueno, igual, si voy a compilar preferia compilar una versión (o varias) con un icono distinto (un icono distinto es mucho más visual en el alt-tab) y supongo que no tengo que cambiar código si no algún archivo en algún directorio llamado “imagenes” o algo por el estilo (igual, tal vez tambien haga lo que me decis, de curioso más que nada). La otra es compilar una versión que tome como parámetro el nombre del archivo a usar para guardar el profile (y/o que busque el icono a usar en algún lugar predefinido; he visto que hay un icono de open xpertya en el cliente pesado) y cambiarlo directamente en el “main” (supongo que se puede hacer).
    El tema es que he logrado “ejecutarlo” desde eclipse haciendo algunos cambios (solo algunas strings que aparecen en la pantalla de login, para probar más que nada), pero de ahi a compilarlo a un “exe” no se si es tan facíl (estoy casi seguro que el exe es básicamente solo un “launcher” pero bueno… no estoy muy canchero con eclipse).
    Si me dan una ayuda de como hacer el “build” al exe, se los agradecería (lo más probable es que sea un pavada y me termine dando cuenta solo, pero por la dudas pregunto de antemano).

    P.D : eclipse no anda en realidad tan lento; el tema es que mi máquina esta medio vieja y la primera vez que “importe” libertya lo hice en un workspace muy “poblado” (después use libertya en un workspace separado y anduvo más rápido).

    P.D 2: espero que tambíén exista un “compilar.bat” porque estoy en XP. Despues lo chequeo ya que los fuentes los tengo en otra maquina.

    en respuesta a: Clases que usan el puerto en serie (contr. fisc) #33804
    Javier AderJavier Ader
    Participante

    Bueno, un poco lo mire. Hace solicite a hasar de las Clases Fiscales Multiplaforma (antes me habian mandado la versión en ActiveX) con la esperanza de que me mandaran las fuentes del spooler actual; pero no… Esta libreria C++ esta hecha para comunicarse directamente al controlador via el puerto serial o al spooler via tcp (la unica clase que tratan con TCP/IP son unas llamadas SocketTCP y SocketUDP; tiene metodos simples como enviarByte(), recibirByte pero no mucho más); basicamente tienen toda la lógica de genración de comandos “crudos” (orden de campos, chequeos de errores) que despues lo envian por RS232, TCP o UDP. Esto me hace pensar que el spooler no tienen mocho trabajo más que lo que viene por TCP/IP enviarlo a un puertdo serial y viceversa (ok, esto si puede ser bastante trabajo si se lo quiere hacer multiplataforma).
    De cualquier manera, si no hay un spooler de epson (o si genera algun tipo de problemas de licencias ) me da la sensación que esta “mitad” del problema se podria resolver relativamente facil. Como no estoy como para programar en C o C++ y andar haciendo malabares con #endif y librerias que no conozco para poder acceder a los puertos seriales (alguien en algún momento lo va a tener que hacer) intente simplificar y ver si se podia desde Java. Encontre dos librerias, una de Sun que no esta en JDK (creo…) y que me parece que no anda bajo Windows (y tampoco mire mucho la licencia) y esta http://code.google.com/p/giovynetserialport/ , que anda bajo Windwos y Linux y esta bajo GPL. A partir de esta se podria hacer un spoolercito más o menos rápido (falta como manejar TCP/IP, pero eso en Java debe ser incluso más fácil; he visto servers webs de un solo archivo java!).
    La otra parte es viene por el lado de manejar la idiosincracia de Epson y entrar en los detalles del protocolo y formato de los paquetes. En este sentido , por lo que vi, tiene buena documentación (y el protocolo y el formato general de los comandos parece bastante simples byteInicio + byteSequencia + byteComando + (byteLimitadorDeCampo + bytesDeValor)* + byteFin + 4byteCodigoBCC ) asi que lei un poco y juntando un poco todo lo anterior hice este programita

    serial.Serial.java

    Code:
    package serial;

    import app.Com;
    import app.Parameters;

    public class Serial {

    /***
    * Pequeño programa que muestra información sobre el controladores/impresores fiscales
    * epson modelos TM-2000AF+,TM300AF+, TM-2000AF, TM-U950F,TM-285F,LX-300F
    * @param args
    * @throws Exception
    */
    public static void main(String[] args) throws Exception{

    String strPort= “COM4”;
    if (args.length> 0)
    strPort = args[0];

    Parameters param = new Parameters();
    param.setPort(strPort);
    param.setBaudRate(“9600″);
    Com portCom = new Com(param);

    //intervalo entre envio de caracteres
    int intervalo = 50; //20 caracteres por segundo en envio, sera mucho?

    char numSeq = ComandoEpson.NumSeqInicial;

    char codComandoInfo = 0x2a; //codigo de comando de solicitud de informacion
    //comando de informacion Normal
    ComandoEpson cmdInfoN = ComandoEpson.crearComando(numSeq, codComandoInfo,”N”);
    //comando de info sobre las capacidades del controlador
    numSeq = ComandoEpson.proximoNumSeq(numSeq);
    ComandoEpson cmdInfoP = ComandoEpson.crearComando(numSeq, codComandoInfo,”P”);
    //comando de solicitud de info del contribuyente
    numSeq = ComandoEpson.proximoNumSeq(numSeq);
    ComandoEpson cmdInfoC = ComandoEpson.crearComando(numSeq, codComandoInfo,”C”);
    //comando de info sobre los contadores internos de docs. fiscales y no fiscales
    numSeq = ComandoEpson.proximoNumSeq(numSeq);
    ComandoEpson cmdInfoA = ComandoEpson.crearComando(numSeq, codComandoInfo,”A”);
    //comando de info sobre el documento que se esta emitiendo
    numSeq = ComandoEpson.proximoNumSeq(numSeq);
    ComandoEpson cmdInfoD = ComandoEpson.crearComando(numSeq, codComandoInfo,”D”);

    ComandoEpson[] comandos = new ComandoEpson[] {
    cmdInfoN, cmdInfoP,cmdInfoC,cmdInfoA, cmdInfoD };

    for (int i = 0 ; i < comandos.length; i ++) { ComandoEpson cmd = comandos[i]; System.out.println("Enviando comando..."); portCom.sendString(cmd.getStringRaw(), intervalo); System.out.println("Leyendo respuesta..."); //se lee hasta encontrar el inicio de datos; FALTA VErificar que puede enviar //el controlador en respuestas... portCom.receiveToString(ComandoEpson.INICIODATOS, 10); //lee hasta encontrar el caracter de fin de datos String respSinBCC = portCom.receiveToString(ComandoEpson.FINDATOS, 10); respSinBCC = ComandoEpson.INICIODATOS + respSinBCC; //despues lee los ultimo 4 carateres (deberian ser hexa) que son el BCC String respBCC = portCom.receiveToString(4, 10); System.out.println("Respuesta:" + respSinBCC ); System.out.println("BCC Respuesta: " + respBCC ); char seqResp = respSinBCC.charAt(1); //chequa que el numeor de secuencia sea el esperado System.out.println(cmd.getNumSequencia() == seqResp ? "Secuencia OK!" :"ERORR: Fuera de secuencia"); //chequea el BCC de la respuesta String bccEsperado = ComandoEpson.calBCC(respSinBCC); //por alguna cuestion rara, la documentacion de epson muestra ejemplos //con BCC en minusculas; el emulador que tengo retonra en minuscla //asi que como fix hago el egual ignorando cases System.out.println(respBCC.equals(bccEsperado)?"BCC de Resp OK!" :"ERROR: BCC de Resp"); } portCom.close(); } }


    serial.ComandoEpson.java

    Code:
    package serial;

    import java.util.*;

    public class ComandoEpson {

    public static final char INICIODATOS = 0x02;
    public static final char SEPARADORCAMPOS = 0x1c;
    public static final char FINDATOS = 0x03;

    public static final char NumSeqInicial = 0x20;
    //los numeros de secuencia deben estar
    //entre 0x20 y 0x7f inclusive
    public static char proximoNumSeq(char i)
    {
    if (i >= 0x7f) //se vuelve al primero
    return 0x20;
    if (i < 0x20) //no deberia pasar... return 0x20; return 0x20 +1; } char numSeq; char cod; List valoresDeCampos;
    boolean error = false;
    String descError = “”;
    String stringRaw;
    public char getNumSequencia() { return numSeq;}
    public char getCodigoComando() { return cod;}
    public List
    getValoresDeCampos(){ return valoresDeCampos;}
    public boolean getTieneError(){ return error;}
    public String getDescError() { return descError;}
    public String getStringRaw() { return stringRaw;}

    protected ComandoEpson(char cod, char numSeq, List valoresDeCampos ,
    boolean error, String descError, String stringRaw)
    {
    this.cod = cod;
    this.numSeq = numSeq;
    this.valoresDeCampos = valoresDeCampos;
    this.error = error;
    this.descError = descError;
    this.stringRaw = stringRaw;
    }

    public static ComandoEpson crearComando(char numSeq, char codComando,
    String valCampo1)
    {
    List valoresDeCampos = new ArrayList();
    valoresDeCampos.add(valCampo1);

    return crearComando(numSeq,codComando,valoresDeCampos);
    }

    public static ComandoEpson crearComando(char numSeq, char codComando,
    String valCampo1,String valCampo2)
    {
    List valoresDeCampos = new ArrayList();
    valoresDeCampos.add(valCampo1);
    valoresDeCampos.add(valCampo2);

    return crearComando(numSeq,codComando,valoresDeCampos);
    }
    public static ComandoEpson crearComando(char numSeq, char codComando,
    String valCampo1,String valCampo2, String valCampo3)
    {
    List valoresDeCampos = new ArrayList();
    valoresDeCampos.add(valCampo1);
    valoresDeCampos.add(valCampo2);
    valoresDeCampos.add(valCampo3);

    return crearComando(numSeq,codComando,valoresDeCampos);
    }

    public static ComandoEpson crearComando(char numSeq,
    char codComando, List valoresDeCampos ){
    validarNumSeq(numSeq);
    validarCodComando(codComando);
    //faltaria valirde la lista de los valores de los campos

    //construye la forma “raw” del comado
    StringBuilder strB = new StringBuilder();
    //cabezera; 0x02, numero de secuencia, codigo de comando
    strB.append(new char[]{INICIODATOS,numSeq,codComando});

    for(String valCampo : valoresDeCampos )
    {
    strB.append(SEPARADORCAMPOS);
    strB.append(valCampo);
    }
    strB.append(FINDATOS);
    //ahora calcula el bcc y se lo agrega
    String bcc = calBCC(strB.toString());
    strB.append(bcc);
    String strRaw = strB.toString();

    //falta
    boolean error = false;
    String descError = “”;
    ComandoEpson cmd = new ComandoEpson(codComando,numSeq,valoresDeCampos,error,
    descError,strRaw);
    return cmd;

    }
    private static void validarNumSeq(char num)
    {
    if (num > 0x7f || num <0x20)
    throw new Error("Número de secuencia invalido");

    }
    private static void validarCodComando(char cod)
    {
    //FALTA
    }
    public static String calBCC (String s)
    {
    char[] chars = s.toCharArray();
    int res = 0;
    for(int i = 0; i< chars.length; i++) { res = res + chars[i]; } //che.. no confio si >> es portable….
    // comvierte res a una string hexa
    char d = (Integer.toHexString(res % 16)).charAt(0);
    res = res / 16;
    char c = (Integer.toHexString(res % 16)).charAt(0);
    res = res / 16;
    char b = (Integer.toHexString(res % 16)).charAt(0);
    res = res / 16;
    char a = (Integer.toHexString(res % 16)).charAt(0);
    String bccStrHexa = new String (new char[]{a,b,c,d});

    //la documentacion de epson NO DEJA EN claro (al menos en los ejemplos)
    //si el BCC va en mayuscula o en minuscula… mi emulador retorna
    //en mayuscula y parece aceptar cualquirea forma
    return bccStrHexa.toUpperCase();
    }

    }

    Arranco siendo un prueba de concepto, pero me termino gustando (mas que nada la clase ComandoEpson que un posible uso real con un par de mejoras).
    Que hace: basicamente envia por el port serial que recibe como parametro (el nombre; bajo Windwos tomas COMx, bajo linux, no me fije, pero casi seguro algo de la forma /dev/algox ) el comando “Solicitud de Estado” (pagina 42 del manual MANPRG23.pdf que se puede bajar desde Epson) con sus 4 variantes:
    N: Información normal o compatible con TM-300AF . Homologado por GR22 AFIP-DGI (voy a tener que buscar en diccionario “homologado”)
    P: Información de las caracterizaticas de controlador
    C: Información del contribuyente (CUIT, punto de venta, sit. iva, etc)
    A: Información sobre los contadores de documentos fiscales y no fiscales
    D: Información sobre el documento que se esta emitiendo
    (OJO, lo que retorna el controlador no lo “parsea” simlemente lo manda a la consola, asi que si lo corren desde una terminal puede traer problemas ya que muchos datos no son “ascii”, muchos son binarios puros; redirección la salida a un arhcivo o corranlo dese eclipse que trae su propia cosola).

    Bueno, más allá de si tiene utilidad por si mismo (puede servir para testear si un controlador fiscal real al menos esta respondiendo y ver cierta información importante) lo interesante es que lo probé contra un emulador de controladores fiscales (que de paso emula un puerto virtual; por eso en el codigo se ve el nombre “COM4” y no algo mas natural como COM1) lo recibia perfectamente y reconocia los comandos validos (hace un chequeo bastante correcto al parecer; en varias pruebas me detectaba por ej, comandos desconocidos de manera correcta, ed. retornando un error; y tambien chequeba el codigo de comprobación BCC) y retornaba al parecer, lo que tenia que retorna (al menos no le erraba en el numero de secuenca ni el BCC de la respuesta).

    Pongo el último spoiler con los un ejemplo de salida (enviando los 4 comando que hablo mas arriba)

    Code:
    Enviando comando…
    Leyendo respuesta…
    Respuesta: *008006000091126101539123410001000EMULADOR FISCALTEXTO DE AUDITORIA
    BCC Respuesta: 1101
    Secuencia OK!
    BCC de Resp OK!
    Enviando comando…
    Leyendo respuesta…
    Respuesta:!*00800600080070050080085SSS2REMULADORFISCAL
    BCC Respuesta: 0BCB
    Secuencia OK!
    BCC de Resp OK!
    Enviando comando…
    Leyendo respuesta…
    Respuesta:!*00800600000000000010001C21001000000001000Razon Social
    BCC Respuesta: 0DA9
    Secuencia OK!
    BCC de Resp OK!
    Enviando comando…
    Leyendo respuesta…
    Respuesta:!*008006000000000000000000000000000000000000000000000000000000000
    BCC Respuesta: 0D46
    Secuencia OK!
    BCC de Resp OK!
    Enviando comando…
    Leyendo respuesta…
    Respuesta:!*00808620No hay 1 comprobante fiscal abierto
    BCC Respuesta: 0EFE
    Secuencia OK!
    BCC de Resp OK!

    (notese que hay caracters no ascii; es un copy and past crudo)

    Bueno, un comando ya esta implementado… faltan los 99 restantes jajaj

    P.D: el que lo quiera probar compilarlo y correrlo miren en la página de la librería http://www.giovynet.com/serialport.html que explica como hacerlo bajo eclipse como si el que lee fuera un nene de dos años (lo cual me sirvio muchisimo a ya que mi destreza bajo eclipse es casi nula jaja). Como emulador use el que esta en el post de más arriba; pero estaria bueno sacudirle a un controlador epson real (algún valiente?)

    en respuesta a: Temas de Interfaz de Usuario #33831
    Javier AderJavier Ader
    Participante

    haaaaaaaaa entoces se me va a complicar;a no ser que en me loquee como distintos usuarios o haga algunos scripcitos con “runas” haciendolo correr como otros usuarios de mi maquina…. pero lo veo medio complicado (y no se si me da para crear tantos usuarios).
    La otra, y esta puede ser interesante, es crear un scrip cmd que simplemente cambie las variables de entorno de la locacion del perfil de usuario con la esperaranza de que busque el libertya.properties en otro lado. *1

    El tema es que las ventanas de libertya solo muestran el nombre del usuario y no el perfil. El único “fix” (si se puede llamar asi) fue crear 4 o 5 usuarios libertya; uno llamado COMPRAS que solo tiene asociado el perfil Compras; uno VENTAS que tiene asociado el perfil VENTAS etc. Ahora al menos me va a a parecer en el “alt-tab” el nombre del perfil jaja. Ok, igual todavía no probé esta forma de usarlo así que no se si me va a ser muy útil.

    También intente cambiarle el icono visual que me muestra el “alt-tab” de libertya creandole un acceso directo y cambiandole el icono al acceso…. pero al alt-tab (e.d al explorer) no le importa ese icono; siempre termina asociandole el del exe final…
    La otra es bajarse algun programilla que anda por ahi que modifica los .exe cambiándoles el icono (la idea es tener 3 o 4 clientes livianos, cada uno con un icono diferente, uno para cada perfil) pero lo veo demasiado “sucio” y no encontré ninguno open source y ni siquiera free…

    libertya.exe no tendrá algún argumento para ir a buscar el .properties a otro lado? (me da fiaca mirar el código porque eclipse por alguna razón me esta tardando un siglo en cargarse; más tarde de última miro un poco)

    *1 probe con cosas como

    Code:
    set HOMEPATH=C:Documents and SettingsUsuariolibertyaSystem
    start libertya.exe

    con y sin start y usando la variable USERPROFILE …. y no anduvo.

    en respuesta a: Soporte de “Vendedores” #33790
    Javier AderJavier Ader
    Participante

    Gracias Federico. Ahi anduvo. En conclusión solo me habia faltado darle permisos al perfil (desde Administrador ya que System solo se necesita activar la funcionalidad en caso de que este desactivada) ya que con agregarselo al arból del perfil no alcanza.
    Ok, igual por lo que vi parece llevar un modelo distinto al que yo tenia pensado; por ej, las comisiones se deben hace vendedor por vendedor, lo cual no debe ser un problema si tenes 10 o 20; si tenés digamos 1000 (raro, pero en algunas empresas que basicamente solo tienen vendedores, puede darse) y no se que tan bien manejará la clasificación de productos con respecto a las comisiones. En un caso para el cual tengo pensado plantear libertya como solución los productos tienen una clasificación con respecto a las comisiones; algunos no dan ningún porcentajes, otros dan digamos 5% y otros, digamos 10% (creo que hay formas de filtros, pero por medio de Subfamilias de productos; lo cual también se usa para otras cosas como Tarifas, y al final uno debe terminar mezclando las clasificaciones)… pero bueno, también los vendedores tienen rangos, lo cual también afecta al proceso… Después lo estudio un poco mejor, tal vez de todas maneras sirva.

    en respuesta a: Soporte de “Vendedores” #33789
    Javier AderJavier Ader
    Participante

    Buenas. Intentando activar la funcionalidad de comisiones pude activar al usuario Supervisor y System (supongo que tienen las mismas capacidades aunque Supervisor parece estar asociada por defecto a mas componias y perfiles); logre loguearme con el perfil System Administrator en la “compania” System y organización “*”.
    Mirando un poco en el Manteniento de Diagrama de Arbol ; arbol Menu, las siguiente entradas bajo Ventas
    -> Configuración de Ventas y Mercadotecnia
    —> Definicion de Ventas (flujo de trabajo)
    —> Region de Ventas (Ventana)
    —> Ejecución de Comisiones /Commission (ventana)
    —> Canal de marketing (creo que no es necesaio)
    —> Campaña de Marketing (creo que no es necesario)
    —> Ejecutar Detalle de Comisiones (informe creo…)

    Ok, después entre como Administrador de Sistema en mi organización y agrege ese subarbol al perfil Administrador. Después me loquie como Administrador y efectivamente Configuración de Ventas y Mercadotecnía me aparecía. El problema es que solo me apareció el flujo de trabajo y ejecutar Detalle de Comisiones; Comisiones por ej no aparecia (y si lo quería acceder desde el flujo de trabajo me tiraba un error de seguridad). Entonces fui con el usuario System a “Ventanas; Pestañas y Campos”, active “Comission” (no aparecia traducida), en tipo de Entidad le puse Usuario Final y tilde Transaccion de Ventas (ni idea que es esto, pero tome como base la ventana Clients o Banks, las cuales son accesibles desde los perfiles en la compania Libertya). Aun asi, siquio sin aparecer en el arbol de Administrador.
    Supongo que no solo hay que activar la ventana si no tambien darle permisos al Perfil “Administrador” (en la segunda pestaña de Ventanas; nombrada Acceso), pero ahi solo me permite seleccionar Companía System, org, * y Perfil System Administrator. Esto último me hace pensar que me tengo que loguear con System o Supervisor , con perfil System Administrator pero en la Compania libertya; pero esto no lo puedo hacer (pero tampoco se si es lo que se necesita).
    Va mas o menos por ahí el tema?

    en respuesta a: Clases que usan el puerto en serie (contr. fisc) #33803
    Javier AderJavier Ader
    Participante

    Y Epson no tiene algo parecido? Bueno, si me pasas el link de descarga (o alguna otra forma de obtenerlo) de los fuentes de wspooler los miro un poco y veo si se puede adaptar (si no, siempre algo se puede aprender). Yo de hasar tengo actualmente los controles activeX y en zip nombrado “Drivers y manuales …” aparece el wspooler (junto con otros), pero solo los binarios y algunos archivos headers de C.
    Para probar tengo actualmente un “emulador” de controladores fiscales (tanto de hasar como de epson), http://www.impresoras-fiscales.com.ar/emulador.htm , aunque solo corre bajo Windows, es cerrado y no se que tan bien los simulará (ya que no proviene ni de epson ni de hasar). No se si habrá otras opciones de emulación disponibles.
    Igual, me da la sensación que lo que debería llevar más trabajo es interiorizarse en los comandos internos de los distintos modelos de Epson, los manuales a primera vista parecen bastante “gorditos” (aunque me da la sensación que deben tener un “filosía” similar a los de hasar).

Viendo 15 entradas - de la 211 a la 225 (de un total de 232)