elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 436
11  Foros Generales / Dudas Generales / Re: como crear un visitante en este foro? en: 28 Junio 2024, 18:23 pm
Quieres decir que eliminó la cuenta? vale perdon  :rolleyes:
Exacto...
Para postear como visitante:
1 Te logueas.
2 Escribes lo que sea.
3 Te das de baja en el foro.
Ahora ya tras el paso 3, parecerá escrito por un 'visitante'...
12  Programación / Programación Visual Basic / Re: Programa Facturacion en: 28 Junio 2024, 18:12 pm
He estado mirando el código para hacerme una idea de los cambios que has realizado y deducir que intentas hacer.

Lo que veo, es que has clonado los formularios: Facturación (ahora pasan a llamarse FacturacionCompra y FacturacionVenta), el de compra y el carrito.

Según parece quieres que además de ofrecer una ventana para la facturación de las ventas de los productos, otro igual para la compra de los productos que luego se han de vender.
Para esto has creado sendos duplicados de la ventana de compras y el carrito... bien.

Sin embargo para que esto funciones bien, el almacén o bien debe modificarse o bien debe crearse otro almacén. Y me dirás por qué?.
Por que el almacén retirene los productos en stock a la venta, pero los datos que se reflejan en él son básicamente de cara a la venta, por ejemplo el precio de venta y el IVA, o si está en oferta. No obstante ya dejé ibniciado en el mismo registro la posibilidad de consignar otros detalles, como un umbral de aviso para reponer (comprar) cuando las unidades se vayan quedando sin existencias. Sin embargo no incluye el precio que se pagó por ello al comprarlo, ni si se aplicaron descuentos al comprar tal o cual producto.
Si creas un duplicado del almacén, esto es no tocas nada del actual, tendrías que crear otro registro para la compra de los artículos que iría asociado al formulario FacturacionCompras, que usaría la ventana compraStock (actualmente compras1) y al carritoStock (actualmente carrito1). Lógicamente los campos de los registros usados para ese almacén, deberán constar en el de facturación, compra y carrito propios.

Otra opción es que el almacén actual integre todos los campos precisos... el almacén actual, facturacionVentas, compra y carrito, no necesitan ser tocados básicamente, aunque hay que ver como afecta en lagunos casos (al leer registros puesto que el tamaño del registro cambiará).
Lo ideal es que los campos adicionales vayan al final de los campos actuales... debes decidir que campos serían esos, por ejemplo actualmente este es el registro del almacén:

Código
  1. Public Type RegArticulosAlmacen                             ' 52 bytes por registro de artículo en el almacén.
  2.    IdArticulo                          As Integer          ' 01   Identificador único autoincremental del artículo en el almacén.
  3.      Reservado1                        As Integer          ' 03     (Reservado: Por si se debe cambiar el Id a tipo long, sin alterar los ficheros).
  4.    IdOferta                            As Integer          ' 05   Identificador d ela oferta. Cada artículo SOLO puede tener asociada UNA oferta (el precio aquí no se toca).
  5.      Reservado2                        As Integer          ' 07     (Reservado: Por si se debe cambiar el Id a tipo long, sin alterar los ficheros).
  6.    ItemsEnStock                        As Integer          ' 09   Cantidad del artículo actualmente en stock en el almacén.
  7.    UnidadesPorCaja                     As Integer          ' 11   Cantidades que trae cada caja (cuando no precede se debe poner 1).
  8.    UmbralRelativoAvisoReponer          As Integer          ' 13   Alcanzada esta cantidad (porcentaje) o menos, se debe enviar un aviso al departamento de compras.
  9.    UmbralAbsolutoAvisoReponer          As Integer          ' 15   Cantidad mínima (absoluta) que alcanzada da aviso...
  10.      Reservado3                        As Long             ' 17   Para futurible ampliación 8 bytes disponibles (una vez ocupados añadir más campos supondrá modificar el fichero).
  11.      Reservado4                        As Long             ' 21      "     "         "
  12.    ImpuestoIVA                         As Single           ' 25   Porcentaje del precio unitario que supone el impuesto.
  13.    PrecioUnitario                      As Single           ' 29   Precio actual del artículo (sin descuentos, lleva el valor del impuesto incluído).
  14.    Nombre                              As String * FIXED_CHARS_ARTICULO   ' 33
  15. End Type
  16.  

Ahora se podrían añadir al menos 3 campos (al final se ven)... tú debes valorar si se requiere alguno más.
Código
  1. Public Type RegArticulosAlmacen                             ' 64 (52+12) bytes por registro de artículo en el almacén.
  2.    IdArticulo                          As Integer          ' 01   Identificador único autoincremental del artículo en el almacén.
  3.      Reservado1                        As Integer          ' 03     (Reservado: Por si se debe cambiar el Id a tipo long, sin alterar los ficheros).
  4.    IdOferta                            As Integer          ' 05   Identificador d ela oferta. Cada artículo SOLO puede tener asociada UNA oferta (el precio aquí no se toca).
  5.      Reservado2                        As Integer          ' 07     (Reservado: Por si se debe cambiar el Id a tipo long, sin alterar los ficheros).
  6.    ItemsEnStock                        As Integer          ' 09   Cantidad del artículo actualmente en stock en el almacén.
  7.    UnidadesPorCaja                     As Integer          ' 11   Cantidades que trae cada caja (cuando no precede se debe poner 1).
  8.    UmbralRelativoAvisoReponer          As Integer          ' 13   Alcanzada esta cantidad (porcentaje) o menos, se debe enviar un aviso al departamento de compras.
  9.    UmbralAbsolutoAvisoReponer          As Integer          ' 15   Cantidad mínima (absoluta) que alcanzada da aviso...
  10.      Reservado3                        As Long             ' 17   Para futurible ampliación 8 bytes disponibles (una vez ocupados añadir más campos supondrá modificar el fichero).
  11.      Reservado4                        As Long             ' 21      "     "         "
  12.    ImpuestoIVA                         As Single           ' 25   Porcentaje del precio unitario que supone el impuesto.
  13.    PrecioUnitario                      As Single           ' 29   Precio actual del artículo (sin descuentos, lleva el valor del impuesto incluído).
  14.    Nombre                              As String * FIXED_CHARS_ARTICULO   ' 33
  15.    '--- campos nuevos para la compra ---
  16.    PrecioCompra                        As Single           ' 53   Precio unitario que costó su compra.
  17.    ImpuestoIVACompra                   As Single           ' 57   Porcentaje del precio unitario que supone el impuesto al comprarlo.
  18.    DescuentoCompra                     As Single           ' 61   Cantidad descontada por las sumas de cualquier conceptos.
  19. End Type     ' 65 (64 bytes por registro)

De igual modo cuando leas este registro para la ventana FacturacionCompra, hay que crear una función que tome del registro solo los campos deseados.... a imitación de la función 'RegArticuloToString'.
Esta función (RegArticuloToString), ahora procedería llamarse 'RegArticuloVentaToString'. Ésta función tal cual está ahora no precisa cambios para la ventana de de FacturacionVentas.

Claro que cuando se realice una compra, no solo se debe actualizar un nuevo fichero 'FacturacionCompra', también se debe actualizar convenientemente el almacén.
Si el artículo no existe se crea un id nuevo para él, si ya existe hay varias consideraciones a tener en cuenta:
1 - La cantidad en stock se incrementa en la cantidad comprada (es decir se suma al valor de itemsEnStock).
2 - Si el precio de compra es ahora distinto del precio de compra de la vez anterior, tal vez sea preciso actuaizar también el precio de venta unitario.
3 - Algo similar con el porcentaje de impuesto si cambia...
4,5,6... etc...
Claro que en los casos 2 y 3, puede optarse por crear un artículo nuevo con nuevo precio y nuevo valor del impuesto (respectivamente según el caso), y seguir manteniendo el artículo previo hasta fin de existencias, con su precio e impuesto acorde al que tenían cuando se compró.
Esas son decisiones que se deben tomar conforme al cliente o a las leyes existentes en el país, si son de obligado cumplimiento.

Nota, que cuando se compran artículos, se puede mantener el mismo fichero de facturación (para compras y ventas) a condición de que el valor de costo se ponga en negativo. Así cuando se revisa la facturación puede cargarse en una sola ventana  de facturación o puedes tenerlo dividido en 2, FacturacionCompra y FacturacionVenta, en este caso al leer un registro se comprueba si su valor es mayor o menos que 0...
En la ventana de FacturacionVentas irán todos los registros cuyo valor es mayor de 0 (se vendió, se embolsa dinero), y en la ventana de FacturacionCompras irán todos los registros cuyo valor es menor que 0 (se compró, aflojamos el bolsillo)...

Yo usaría una sola ventana de facturación y un solo fichero de facturación. Pero si quieres mantener dos formularios por separado, quizás interesare también mantener asociado a cada formulario su propio fichero de facturación. Sea lo que sea lo que decidas, tienes que ser coherente y ver como afecta al resto de formularios, para actualizarlos según convenga.

Por último puesto que cambia el registro del almacén, también habrá que editar el formulario 'FrmEditarArticulo', para que recoja los nuevos campos que se añadan en el mismo (yo he propuesto 3 campos, quizás quieras modificarlos, eliminar o añadir alguno más).

Y creo que he resuelto las dudas que puedas tener...

Un error que si me ha parecido ver, es que has declarado en una de esas ventanas clones los canales de ficheros privados a la función que abre el fichero... eso es un error, porque fuera de esa función (salvo que se devuelva por referencia el canal), no habrá modo de acceder a él después de abierto... Esa puede ser la razón por la que tienes algún problema de los que describes.
Las variables que mantienen el número de canal abierto con los ficheros, deben ser públicos en un módulo si más de una ventana tiene necesidad de usarlos. Si solo usas x ficheros en un formulario, entonces basta que dichos canales estén declarados privados en ese formulario, así estarán disponibe para las diferentes funciones que lo usen.
Todavía si lo usa un formulario masivamente y en una o dos más solo una función, puedes declararlo privado en ese formulario y pasarlo como parámetro a las funciones de los otros formularios que lo precisaren...

Si hubieras creado clases (que es lo que debieras haber hecho transformando el proyecto),  habrías podido organizar mejor la privacidad (encapsuación), para los ficheros. Creando una clase para  manejar los ficheros, y que cada ventana que lo precise creara una instancia de ella (la clase clsFile)... Pero como no parece que vayas a hacer nada de todo esto, olvídalo.
13  Sistemas Operativos / Windows / Re: «Imposible» cambiar resolución de pantalla en W10. en: 25 Junio 2024, 15:54 pm
Hay resoluciones que solo están disponibles cuando eliges una determinada cantidad de colores y/o frecuencia específica...
...por ejemplo supongamos que tu sistema fuere capaz de ofrecer 50,60,75 y 100 herzios, en 50, 60 y 75 podría ser capaz de ofrecer mucha variedad de resoluciones pero en cambio a 100 herzios solo 1024x768...

En fin, si pones una captura se verá que opciones hay disponibles.

p.d.: Lo que ocurre cuando desinstalas los drivers y reinicias el equipo es que detectará hardware nuevo y solicitará instalar los drivers...
Yo te diría que mejor que desinstalar, buscaras si hay actualizaciones.
... pero esto solo que asegures que no es el caso que te describo al comienzo del mensaje... se empieza siempre por lo más simple y tonto.

Bien te has centrado en la idea menor y parece que ya lo probaste... y el principal, el resto de ideas, las has probado?.
¿No eres capaz de hacer una simple captura y ponerla por aquí para que veamos que resolución tienes y cuales admite tu monitor y ver si el problema está por ahí ????
14  Programación / Programación Visual Basic / Re: Programa Facturacion en: 25 Junio 2024, 15:44 pm
Anoche estuve revisando un poco por encima el código, pero como no me acordaba de que era lo que pedías, no me centré en nada concreto (ahora vengo a releer que problemas tenías).

De entrada se te coló un mp4 de 1'8Gb. en el zip... que es lo que le daba peso al archivo.
Las bases de datos, pues no hay... hay ficheros con nombre aleatorio corto de 0 y 1kb.

y por encima te comento solo algunas cosas, sería largo comentar todo:

Cuando abro el proyecto, observo que hay formularios cuasi repetidos, por ejemplo:
 Frmfile ahora tiene 2 clones: frmfile1 y Form3, de éstos, form3 solo se diferencia en una línea de códio que se ha añadido y que no precisa ser añadida ahí.
 Dado que dicho formulario tiene la funcionalidad exclusiva de seleccionar un fichero de 'facturación' y nada más, procede eliminar esa línea de código... se puede colocar desde el que invoca la llamada a esta ventana a su regreso...

Internamente (FrmFile) mantiene público el nombre del fichero elegido, la ruta dado que es local (creo recorar que yo la tenía en raíz, pero es preferible usar carpetas), podría establecerse al cargar la aplicación (proyecto, cuando se está en diseño), y usarla abreviadamente en lo sucesivo...
Así en el module1 podría añadirse:
       Public RutaFacturas as string
y al cargar en proyecto en la función que lo inicia 'Private Sub MDIForm_Load()'
       RutaFacturas = app.path & "\Almacen\"
Esto implica cambiarlo en todas partes donde aparezca 'app.path & "\Almacen\"' por 'RutaFacturas', excepto justamente donde se establce la ventana frmMdi. Aparte de ahorrar caracteres, el nombre es autodescriptivo allí donde aparezca.

Sobre el form3, sobra... la llamada que lo utiliza puede perfectamente ser sustituída por FrmFile.. y la línea allí añadida ser movida al lugar desde donde se llama.

Se puede comentar algunas cosas más (de lo que he mirado), pero baste así.... si no veo nada grave.
15  Foros Generales / Foro Libre / Re: Alejandro Cáceres, el ‘hacker’ que dejó a Corea del Norte sin internet desde su casa: “Mi ataque fue respuesta a su en: 24 Junio 2024, 16:48 pm
Si es tan malo el internet allá como atacaron a la Sony en 2014 por varios días y no podían parar los ataques ?
Con una red de zombies, por ejemplo (fuera de Corea del norte, claro).
16  Sistemas Operativos / GNU/Linux / Re: el ordenador no reacciona en: 24 Junio 2024, 16:43 pm
Si has añadido hardware recientemente (por ejemplo una placa de vídeo), asegúrte que recibe toda la energía que demanda.

Deberías chequear si está fallando algo del hardware, como la memoria o la fuente de alimentación.
Para ello deberías remplazar (una cosa cada vez) y probar si ahora va bien.

Con la memoria, primero prueba a cambiar todos los módulos a la misma vez por otros que sepas que funcionan. Si esto demuestra que es la memoria lo que falla, entonces puedes probar módulo a módulo hasta localizar el (o los) dañados.

17  Sistemas Operativos / Windows / Re: «Imposible» cambiar resolución de pantalla en W10. en: 24 Junio 2024, 16:32 pm
Hay resoluciones que solo están disponibles cuando eliges una determinada cantidad de colores y/o frecuencia específica...
...por ejemplo supongamos que tu sistema fuere capaz de ofrecer 50,60,75 y 100 herzios, en 50, 60 y 75 podría ser capaz de ofrecer mucha variedad de resoluciones pero en cambio a 100 herzios solo 1024x768...

En fin, si pones una captura se verá que opciones hay disponibles.

p.d.: Lo que ocurre cuando desinstalas los drivers y reinicias el equipo es que detectará hardware nuevo y solicitará instalar los drivers...
Yo te diría que mejor que dseinstalar, buscaras si hay actualizaciones.
... pero esto solo que asegures que no es el caso que te describo al comienzo del mensaje... se empieza siempre por lo más simple y tonto.
18  Programación / Programación Visual Basic / Re: Programa Facturacion en: 24 Junio 2024, 16:25 pm
Sí, salen 2 archivos de 1'84Gb.
He de suponer que adjunta alguna o varias bases de datos. ¿No bastaba con con que tuvieran unas decenas de Mb.?.

Lo descargo ahora, a la noche que esté de vuelta en casa lo reviso por encima...
19  Programación / Programación Visual Basic / Re: Problema de array en: 15 Junio 2024, 15:37 pm
8 kb. contraseña (para evitar que sea manipulado y cuelen virus):
 'foroelhacker' (sin las comillas simples).

https://workupload.com/file/8qxjAGgFQ7Y

p.d.: Debajo de las líneas:
Código:
Valores = GetArrayDeValores(Cantidad)
If (SizeArray > 0) Then
puedes colocar lo siguiente:
Código:
    Label1.Caption = "Generando combinaciones..."
    Label1.Refresh
20  Programación / Programación Visual Basic / Re: Problema de array en: 14 Junio 2024, 23:26 pm
Hola Serapis
No se que hago mal que  no hace la lista de las combinaciones en el list1
No entiendo por qué no va a rellenar el listado.

Las instrucciones están ahí: 'Listi1.addItem combinacion'.
Si a mi me funciona perfectamente y no has cambiado código, también debe funcionarte, no hay opción para que no funcione.

Lo único que se me ocurre es que tengas más de un listbox, y el que es el 'list1', esté oculto, fuera de la vista, entonces se llena, pero no ves el resultado en el list2-3-4, que tuvieres en la vista.

1 Comenta la línea 'List1.Visible = False
2 Antes de añadir el item al listbox, añade la siguiente línea: msgbox combinacion
3 Si añadiste o cambiaste código, ejecuta paso a paso el código (tecla F8), de la función 'CombinacionesDe6'.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 436
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines