Generar un código de forma aleatoria

1,184 views
Skip to first unread message

Roy Francisco Salas Benavides

unread,
Apr 16, 2012, 6:21:41 PM4/16/12
to Comunidad de Visual Foxpro en Español
Hola amigos del foro... regresando después de mucho tiempo.

Una consulta muy breve o más bien, que me enriquezcan la idea o me la
desechen y me den una...
Necesito generar unos códigos de activación en formato xxx-aaa-bbb y
me gustaría saber si hay alguna forma de que lo pueda hacer de forma
aleatoria para no tener que estár inventando porque ocuparía como unos
1000; son código con el formato de los que usa M$ para activar los
programas de ellos, letras y números en maýuscula... ¿ Alguién con
alguna idea ?... ya estuve viendo el RAND() pero este solo mes da
números y ocupo letras al azar.

Saludos.

Luis Maria Guayan

unread,
Apr 16, 2012, 6:27:51 PM4/16/12
to publice...@googlegroups.com
? GenerateGUID()
FUNCTION GenerateGUID
    LOCAL loObj
    loObj = CREATEOBJECT("Scriptlet.TypeLib")
    * VFP 8.0 and later
    RETURN STREXTRACT(loObj.GUID, "{", "}")
    * Previous versions
    *RETURN CHRTRAN(loObj.GUID, "{}", "")
ENDFUNC

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Antonio.xt

unread,
Apr 16, 2012, 6:43:53 PM4/16/12
to publice...@googlegroups.com

Si la funcion RAND() te regresa solo numeros al azar, puedes tomar solo los numeros ANSI que correspondan a los numeros y letras para que armes tus codigos.

Del codigo 48 a 57 perteneces a los numeros del 0 al 9.
Del codigo 65 a 90 perteneces a las letras mayusculas A a la Z.
Del codigo 97 a 122 perteneces a las letras minusculas a a la z.

Antonio Moreno


Roy Francisco Salas Benavides

unread,
Apr 16, 2012, 6:54:55 PM4/16/12
to Comunidad de Visual Foxpro en Español
Excelente Luis Ma. Gracias por la SUPER PRONTA respuesta.
Pregunta para ampliar el conocimiento... Veo que el formato siempre va
a ser el mismo: 8-4-4-4-12 para un total de 36 dígitos incluyendo los
guiones, como se logra esto ? o esto lo hace la línea: loObj =
CREATEOBJECT("Scriptlet.TypeLib")

La última línea es para eliminar los "{}" ... ¿ por qué ?

Saludos y muchas gracias.


On 16 abr, 16:27, Luis Maria Guayan <luismar...@gmail.com> wrote:
> ? GenerateGUID()
> FUNCTION GenerateGUID
>     LOCAL loObj
>     loObj = CREATEOBJECT("Scriptlet.TypeLib")
>     * VFP 8.0 and later
>     RETURN STREXTRACT(loObj.GUID, "{", "}")
>     * Previous versions
>     *RETURN CHRTRAN(loObj.GUID, "{}", "")
> ENDFUNC
>
> Luis María Guayán
> Tucumán, Argentina
> _________________________http://www.PortalFox.com

Hugo C.

unread,
Apr 16, 2012, 7:31:28 PM4/16/12
to Comunidad de Visual Foxpro en Español
Excelente Maestro.

Saludos.

On 16 abr, 16:27, Luis Maria Guayan <luismar...@gmail.com> wrote:
> ? GenerateGUID()
> FUNCTION GenerateGUID
>     LOCAL loObj
>     loObj = CREATEOBJECT("Scriptlet.TypeLib")
>     * VFP 8.0 and later
>     RETURN STREXTRACT(loObj.GUID, "{", "}")
>     * Previous versions
>     *RETURN CHRTRAN(loObj.GUID, "{}", "")
> ENDFUNC
>
> Luis María Guayán
> Tucumán, Argentina
> _________________________http://www.PortalFox.com

Luis Maria Guayan

unread,
Apr 16, 2012, 7:33:01 PM4/16/12
to publice...@googlegroups.com
La función retorna un GUID (Globally Unique IDetifierhttp://es.wikipedia.org/wiki/Globally_unique_identifier 

Puedes buscar mas sobre GUID y VFP que hay varios métodos de obtenerlo

 
Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________



Luis Maria Guayan

unread,
Apr 16, 2012, 7:44:24 PM4/16/12
to publice...@googlegroups.com
Pego otra función con la API de Windows:

? CreateGUID()
FUNCTION CreateGUID()
  LOCAL lcRetval, lcStruc_GUID, lcGUID, lnSize
  DECLARE INTEGER CoCreateGuid IN "ole32.dll" ;
  STRING @lcGUIDStruc
  DECLARE INTEGER StringFromGUID2 IN "ole32.dll" ;
  STRING cGUIDStruc, STRING @cGUID, LONG nSize
  lcStruc_GUID = REPLICATE(" ",16)
  lcGUID = REPLICATE(" ",80)
  lnSize = LEN(lcGUID) / 2
  IF CoCreateGuid(@lcStruc_GUID) <> 0
    RETURN ""
  ENDIF
  IF StringFromGUID2(lcStruc_GUID,@lcGuid,lnSize) = 0
    RETURN ""
  ENDIF
  RETURN SUBSTR(STRCONV(lcGUID,6),2,36)
ENDFUNC


En el siguiente enlace encontraras varias opciones:


 
Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________



Roy Francisco Salas Benavides

unread,
Apr 16, 2012, 8:13:24 PM4/16/12
to Comunidad de Visual Foxpro en Español
Excelente profesor...
Gracias Antonio Moreno también por el aporte.

Saludos para ambos.
Caso cerrado. :)

On 16 abr, 17:33, Luis Maria Guayan <luismar...@gmail.com> wrote:
> La función retorna un GUID (Globally Unique IDetifier)http://es.wikipedia.org/wiki/Globally_unique_identifier
>
> Puedes buscar mas sobre GUID y VFP que hay varios métodos de obtenerlo
>
> *Luis María Guayán
> Tucumán, Argentina
> _________________________
> **http://www.PortalFox.com<http://www.portalfox.com/>*
> *Nada corre como un zorro
> _________________________*
>
> El 16 de abril de 2012 19:54, Roy Francisco Salas Benavides <
> rfsal...@gmail.com> escribió:

Walter R. Ojeda Valiente

unread,
Apr 16, 2012, 11:20:21 PM4/16/12
to publice...@googlegroups.com
El código generado varía en cada ejecución de la función. Puedes verificarlo escribiendo:

? GenerateGUID()
? GenerateGUID()
? GenerateGUID()

Y seguramente habrán notado que todos los caracteres corresponden a dígitos hexadecimales.

Saludos.

Walter.





Date: Mon, 16 Apr 2012 19:27:51 -0300
From: luism...@gmail.com
To: publice...@googlegroups.com
Subject: Re: [vfp] Generar un código de forma aleatoria

Luis Maria Guayan

unread,
Apr 17, 2012, 8:47:27 AM4/17/12
to publice...@googlegroups.com
Asi es, es un identificador único (el numero de claves únicas es 2^128 algo así como 3.4*10^38) y la probabilidad de repetición entre computadores es escasísima, por lo que uno de sus usos es para claves de índices subrogados, tanto en VFP como en SQLServer, MySQL y otros ya que permite una buena técnica de sincronización entre distintos servidores

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


ZeRoberto

unread,
Apr 17, 2012, 12:50:52 PM4/17/12
to publice...@googlegroups.com
Luis maria es como el SYS() para nombre de procedimientos unicos

Pero creo que lo que el usuario que creo este tema, quiere un
identificador propio de esa maquina en formato GUID lo puede hacer
sacando datos de la pc como SERIAL y MAC ADDRESS y codificandolos a
Hash y luego a Hexadecimal para crear este tipo de formato con
transform

lcResult = Transform(lcCodigoGenerado, "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}")

No se cuantos caracteres son creo que 32


Saludos

El 17/04/12, Luis Maria Guayan <luism...@gmail.com> escribió:

Luis Maria Guayan

unread,
Apr 17, 2012, 1:38:21 PM4/17/12
to publice...@googlegroups.com
El 17/04/2012 13:50, ZeRoberto escribió:
Luis maria es como el SYS() para nombre de procedimientos unicos


Imagino que te refieres a SYS(2015) que no tiene nada que ver ya que no es aleatorio, sino que depende de la fecha y hora de la PC y múltiples PC obtienen el mismo SYS(2015) a la misma fecha hora. (SYS(2015) solo te asegura un nombre distinto en cada PC a intervalos de 1 milisegundo y se podría repetir cada 100 años)

-- SYS(2015) y su inversa --
http://www.portalfox.com/article.php?sid=111

Roy Francisco Salas Benavides

unread,
Apr 17, 2012, 2:33:04 PM4/17/12
to Comunidad de Visual Foxpro en Español
Jejejeje... se puso interesante el tema...
Bien compañeros, lo que estaba buscando es generar códigos para
activación de los sistemas que tengo, cambiando el esquema de negocio
de producto vrs precio a SaaS, pero necesito alguna forma para
controlar que el cliente no se me haga el tonto y no me pague, de esta
forma mes a mes cada vez que hace el pago se le facilita un código que
lo ingresa y este me habilita 30 días más de uso del programa (más un
"colchón" de tiempo por aquello de los imprevistos), estos códigos los
encripto con un método que ya tengo, los guardo en una tabla y
controlo los que se van utilizando; de esta forma con un mensaje SMS
puedo indicarle al usuario cual es el código de activación y que
continue trabajando. Cómo son unos 3600 códigos, me era necesario
buscar alguna forma de generarlos de forma automática, de allí el
requerimiento.

Con los aportes ya indicados he podido idear el esquema y formato,
ahora estoy en la programación del proceso de activación y control de
los códigos.

Saludos.

On 17 abr, 11:38, Luis Maria Guayan <luismar...@gmail.com> wrote:
> El 17/04/2012 13:50, ZeRoberto escribió:Luis maria es como el SYS() para nombre de procedimientos unicosImagino que te refieres a SYS(2015) que no tiene nada que ver ya que no es aleatorio, sino que depende de la fecha y hora de la PC y múltiples PC obtienen el mismo SYS(2015) a la misma fecha hora. (SYS(2015) solo te asegura un nombre distinto en cada PC a intervalos de 1 milisegundo y se podría repetir cada 100 años)
> -- SYS(2015) y su inversa --http://www.portalfox.com/article.php?sid=111
>
> Luis María Guayán
> Tucumán, Argentina
> _________________________http://www.PortalFox.com

ZeRoberto

unread,
Apr 17, 2012, 10:01:23 PM4/17/12
to publice...@googlegroups.com
Es facil tienes que reunir datos de la pc y codificarlos yo tengo una plantilla que controla lo que tu buscas. pero trabaja mysql
 
 
Saludos

Marcelo Barberis

unread,
Apr 17, 2012, 10:31:36 PM4/17/12
to publice...@googlegroups.com
Y esto de depender mes a mes de un codigo de activacion, no seria mucho la dependencia cliente programador? a mi me parece tener que estar dependiendo mucho de esta manera.
Yo lo que hago es darle el sistema con una cantidad de uso razonable 40 dias o usos, yo lo calcule basado en que el usuario ingresa 1 vez por dia y despues de eso se bloquea y despues un amigo me dio una idea de obligarles a los usuarios registrados del sistema a llamarte para mantenimientos, yo lo idee de ponerle al sistema 180 dias el cual el sistema funciona de maravilla y cuando se cumpla eso el sistema envia un mensaje que dice que el sistema necesita mantenimiento urgente y llame al encargado del sistema entonces voy lo reviso y le cobro por esa asistencia y le doy por ejemplo 90 dias y se repite todo el procedimiento anterior, bueno todos estos datos los guardo en una tabla todo encriptado claro. bueno los dias los puedo cambiar a lo que yo quiero darle, eso depende de mi todo eso, ahh otra cosa en el momento que aparece el mensaje de mantenimiento el sistema sigue funcionando pero relentizo el ingreso de las tablas en el buffer y bueno si no me llaman se hacer cada vez mas lento el ingreso al uso a las tablas del sistema.
--
Ing. Marcelo Barberis Gutierrez
Sistemas Informaticos Inc
Villa Montes - Bolivia
Telef.: +591-76831064

Walter R. Ojeda Valiente

unread,
Apr 17, 2012, 10:43:42 PM4/17/12
to publice...@googlegroups.com
¿Y eso no te parece una estafa?

A mí sí.

Saludos.

Walter.




Date: Tue, 17 Apr 2012 21:31:36 -0500
Subject: Re: [vfp] Re: Generar un código de forma aleatoria
From: alexm...@gmail.com
To: publice...@googlegroups.com

Marcelo Barberis

unread,
Apr 17, 2012, 10:49:04 PM4/17/12
to publice...@googlegroups.com
No Walter, yo expuse mi punto de vista, cada uno tiene su metodologia en el armado de sus sistemas, no creo que estoy estafando, porque para empezar le doy 40 dias de uso para evaluacion, despues el usuario lo registra y por decirte un ejemplo le puse 180 dias y bueno me aseguro que cierto tiempo le pueda hacer algun mantenimiento a su sistema y bueno cobrarle por este servicio, puede incluir alguna actualizacion.

Walter R. Ojeda Valiente

unread,
Apr 17, 2012, 11:01:40 PM4/17/12
to publice...@googlegroups.com
Una cosa es decirle a tu cliente: "el costo de este sistema es de XXX dólares, y después tendrás que pagar YYY dólares mensualmente en concepto de mantenimiento". Y otra muy distinta es decirle: "el costo de este sistema es de XXX dólares", y luego hacerle pagar más que esa suma mediante la trampa de que cada cierto tiempo su sistema se ralentiza.

Para mí, eso es una estafa. El te compró un producto por un precio y luego con artimañas le estás obligando a pagar más.

No creo que te gustaría que te hicieran algo así cuando compras cualquier producto.

Saludos.

Walter.




Date: Tue, 17 Apr 2012 21:49:04 -0500

Marcelo Barberis

unread,
Apr 17, 2012, 11:54:32 PM4/17/12
to publice...@googlegroups.com
Walter, yo te pongo este escenario, tu compras una computadora a un precio XXX$us y le preguntas, tiene garantia? te dicen 2 años de garantia, entonces haces el trato, pasado los dos años, despues de un tiempo pasado la garantia, tu pc esta por decirte lenta por X motivos, entonces tu recurre a los que te vendieron la pc, porque durante los 2 años de garantia tu recurriste a ellos por X motivos debido a que tu ya lo conoces y estuvieron pendiente por la garantia, entonces ellos te hacen el mantenimiento y que haces tu, le pagas XXX$us, el precio que sea, o le dices a ellos que te estan estafando???
Bueno lo que yo hago es seguir esta modalidad, el precio que yo le cobro por Xmantenimiento no interesa, el tiempo que lo pongo o lo configuro no es el tema, Lo que hice es exponer una forma de hacer mi trabajo, si quiero le pongo en la configuracion el 0 o .F. en el campo y listo no aparece nunca, porque al momento de hacer el contrato de venta le hago saber al cliente ciertas modalidades pasado la garantia (1 año).
Modalidad 1: XXX$us por sistema sin mantenimiento, no nos hacermos cargo si el sistema se arruina por mal uso o cualquier otra cosa
Modalidad 2: XXX$us por sistema con x cantidad de mantenimiento con x tiempo de alerta, el cliente nos confirma cada que tiempo desea las alertas. Yo les asesoro en ese tema.

Y las empresas lideres en el mercado la forma que utilizan es venderte soporte tecnico, la diferencia es que tu lo pagas antes y despues ellos te lo dan tu elijes 30 dias, 3 meses, 6 meses, 1 año...., la diferencia es que yo le cobro de acuerdo a la modalidad que ellos eligieron

Walter R. Ojeda Valiente

unread,
Apr 18, 2012, 12:06:10 AM4/18/12
to publice...@googlegroups.com
Bueno, que opinen otros si les interesa el tema, yo ya expuse mi opinión y los motivos que tengo para opinar así, que quieras adornarlo para que no parezca una estafa no implica que no la sea.

Tu ejemplo de la compra de una computadora no es el más adecuado, uno más apropiado sería el siguiente:
- Contratas un servicio de TV por cable que te proveerá de 200 canales.
- Después de unos pocos meses ya no tienes los 200 canales sino muchos menos
- Le reclamas a tu proveedor
- Te dice que si quieres volver a tener los 200 canales debes pagar un adicional
- Y eso se repite periodicamente.

Yo a eso le llamo estafa.

Saludos.

Walter.




Date: Tue, 17 Apr 2012 22:54:32 -0500

Douglas Sánchez

unread,
Apr 18, 2012, 12:48:28 AM4/18/12
to publice...@googlegroups.com
Nis mas ni menos Walter tiene razon yo aca no vendo caro los sistema pero siempre cuido ese detalle, si vendo algo tiene que funcionar al 100, si se equivocan y tiene consultas durante un tiempo indefinido se les da soporte o sea asesesoria, pero si kieren despues de la garantia implementa nuevos informe o nuevas caracteristicas ese detalle siempre lo vendo ya no es gratis.

Saludes a todos

Carlos Miguel FARIAS

unread,
Apr 18, 2012, 7:09:28 AM4/18/12
to publice...@googlegroups.com
Marcelo:
Pautar un precio de mantenimiento, es correcto. Pautar precio especial
para mantenimiento adaptativo, es correcto, pautar precios para
corregir fallas o mal función en el programa fuera del lapso de
prueba, es correcto, porque si esta previamente aclarado (tu garantia
expresa) no estas estafando.
Hacer que el producto falle o mal funcione para cobrar el arreglo, es
una estafa, porque esta proveyendo un producto con una falencia
(inducida, no fortuita) y que no se puede decir que es emergente de un
desgaste natural. Si se descubre que estas haciendo eso, sos candidato
a una demanda muy grande, porque si esa empresa, por la falencia que
vos producis, comete algún tipo de delito, vos sos el responsable,
porque forzastes al delito, y pasaras a ser responsable ante el
tercero y ante la empresa.
Imaginate, compras un auto, y después de un tiempo, empieza a fallar
solo para que tengas que hacerle un service. que tal si lo que fallan
son los frenos, y tu ABS se convierten en FPLM, con las consecuencias
previsibles?
Que hagas una cosa asi, pasa por tu conciencia, que lo publiques aqui,
es confesar un delito, que tal si alguien que sabe a quien le vendes,
se entera y se lo dice a tus clientes, es más, en el foro hay personas
que integran fuerzas policiales, deberían proceder.
Saludos: Miguel, La Pampa (RA)


El 18/04/12, Douglas Sánchez <dougl...@gmail.com> escribió:

edgar suarez kummers

unread,
Apr 18, 2012, 7:40:45 AM4/18/12
to publice...@googlegroups.com
Carlos Miguel:

No salvo de responsabilidad a Marcelo, es cierto que comete un delito.

Bolivia es en cierta forma muy similar a Colombia ... ningún extranjero ha podido dominar a estos indios hijos de puta ( no por su madre sino por sus costumbres ) ...

Mi Padre, Español, honesto y trabajador fue engañado por sus socios y nos arruinaron totalmente ... siendo la empresa que fundó mi padre la más grande en su género en Colombia.

Te repito, trabajar con esos indios hijos de puta es difícil ... lo que hace Marcelo es salirles adelante ... es seguro que en otro ambiente Marcelo no utilizaría técnicas de ese estilo.

En Madrid, España, donde yo trabajaba con equipos de control usaban esa misma técnica de Marcelo para aprovechar el momento del mantenimiento ( por falla inducida ) para decirle al cliente ... " Oiga, que Usted debe algunas cuotas de los equipos que le hemos suministrado ... por favor póngase al día " y si todavía no terminaba de pagar entonces le dejaban de nuevo sembrada otra falla gracias a los relojes internos de los equipos ... 

El error que comete Marcelo es ser honesto con el grupo y referirles esos hechos.

saludos

edgar
--
edgar suarez kummers

Guillermo MDQ

unread,
Apr 18, 2012, 9:30:49 AM4/18/12
to publice...@googlegroups.com
El ejemplo que comenta Edgar es totalmente distinto a lo que hace Marcelo.
No esta mal ir controlando las cuotas o forma de pago del sistema y si el cliente incurre en mora, pues entonces se le puede trabar el sistema para que no lo siga utilizando hasta que se ponga al dia con lo que debe.
Muy distinto es programar una falla en el sistema para obligarlo al cliente a que lo llame para cobrarle mantenimiento.
Es mucho mas etico acordar con el cliente una cuota de mantenimiento mensual, bimestral o por el tiempo que se desee que andar escondiendo una falla dentro del programa.
Si le cobras el mantenimiento de forma normal, vos te aseguras una entrada de dinero fija y el cliente sabe que todos los meses o por el periodo acordado que sea tiene su sistema controlado y en optimas condiciones de funcionamiento.
Y estoy de acuerdo con lo que dijo Miguel.

Saludos
Guillermo

Douglas Sánchez

unread,
Apr 18, 2012, 10:12:14 AM4/18/12
to publice...@googlegroups.com
Bueno yo opino, que esto seria valido si el Sistema se vende al Crédito y se piensa pagar en 10 cuota entonces se podria programar algo cada ves que se venza la cuota dias posteriores se bloquee el sistema ya sea parcial o totalmente y esto si se podria plasmar en un contrato y especificar que en el momento de bloqueo llamar a un numero y es LLave lleve encriptado el periodo y seria una semana por ejemplo y si se pega y paga pues se le da un codigo de un mes.

ya eso es hablado con el clientes.

Saludes a todos.

ZeRoberto

unread,
Apr 18, 2012, 3:32:31 PM4/18/12
to publice...@googlegroups.com
Lo estan entendiendo mal es como cualquier aplicacion que se baja de
internet, te dan x dias de evaluacion, si te gusta y te es until
entonces compras la licencia, te dan un codigo y lo desbloqueas, este
dato se guarda encriptado en la base de datos y tu aplicacion es ok
mientras no borren la base de datos o cambies de placa madre + serie
hd + disco duro.

Saludos

El 18/04/12, Douglas Sánchez <dougl...@gmail.com> escribió:

Walter R. Ojeda Valiente

unread,
Apr 18, 2012, 5:07:43 PM4/18/12
to publice...@googlegroups.com
Claro, mientras el cliente no te ha abonado el monto total tienes derecho a protegerte, pero una vez que ya ha saldado su deuda contigo y ya no te debe ni un centavo, no puedes a propósito hacer funcionar mal tus programas para cobrarle luego en concepto de "mantenimiento".

Yo creo que si alguien hace algo así y el caso se va a un juicio, en la práctica totalidad de los casos el Juez le dará la razón al afectado y el programador deshonesto se las verá negras.

Saludos.

Walter.





Date: Wed, 18 Apr 2012 08:12:14 -0600

Subject: Re: [vfp] Re: Generar un código de forma aleatoria

ssanmiguelh

unread,
Apr 18, 2012, 5:30:05 PM4/18/12
to publice...@googlegroups.com
Concuerdo contigo Walter.
Creo que el tema de cobrar mantenimiento debería ser explicado desde un inicio, si el cliente acepta le cobro, sino no le cobro;
en la propuesta debería decir:
*************CASO UNO - cliente acepta y Cobro mantenimiento
descripcion             cantidad      costo
MANTENIMIENTO     1             $$$$$$.00

*************CASO DOS - cliente no acepto , No cobro mantenimiento
descripcion             cantidad      costo
MANTENIMIENTO     0             0.00
*************CASO UNO - cliente es exonerado del cobro
descripcion             cantidad      costo
MANTENIMIENTO     1             0.00


Saludos,


El miércoles, 18 de abril de 2012 16:07:43 UTC-5, Walter R. Ojeda Valiente escribió:
Claro, mientras el cliente no te ha abonado el monto total tienes derecho a protegerte, pero una vez que ya ha saldado su deuda contigo y ya no te debe ni un centavo, no puedes a propósito hacer funcionar mal tus programas para cobrarle luego en concepto de "mantenimiento".

Yo creo que si alguien hace algo así y el caso se va a un juicio, en la práctica totalidad de los casos el Juez le dará la razón al afectado y el programador deshonesto se las verá negras.

Saludos.

Walter.





Date: Wed, 18 Apr 2012 08:12:14 -0600
Subject: Re: [vfp] Re: Generar un código de forma aleatoria
From: dougl...@gmail.com

ssanmiguelh

unread,
Apr 18, 2012, 5:30:50 PM4/18/12
to publice...@googlegroups.com
perdon debi decir:

*************CASO TRES - cliente es exonerado del cobro

descripcion             cantidad      costo
MANTENIMIENTO     1             0.00



Reply all
Reply to author
Forward
0 new messages