Ver Mensaje Individual
  #1
Antiguo 23 de febrero de 2023, 04:22
Marengo97
Forero Junior
Última Actividad 22.11.2023 00:42
Posts Posts: 26
Likes enviados Enviados: 5
Likes recibidos Recibidos: 0
Predeterminado [AYUDA] reporte de ventas de local
0 Inactivo Inactivo

Hola familia, aquí mi duda. Estoy realizando un programa como estudio donde registro ventas de productos de una tienda, el programa tiene que generar un reporte de las ventas realizadas para luego utilizarla en otro programa que aun no he hecho, mi duda es la siguiente, para hacerlo mas desafiante se me ocurrio que podria por medio de logica automatizar al programa para que pueda reconocer cuando un producto que se vendio se repite y asi en uno de los campos del archivo indexado (el reporte de ventas) vaya sumando la cantidad que se vendio de ese producto..y no se realmente si es posible algo así y no se como hacerlo o no es posible, estoy entre varias ideas pero que no llegan a ningun lado y apreciaría mucho una ayuda, espero se haya entendio lo que hace el programa y mi duda existencial

Entre otras cosas tambien el programa genera un ticket para el cliente, esa parte aun no llegue porque estoy estancado en el reporte.

E aqui el código, cualquier consejo o mejora que pueda aplicar seria genial porque soy un principiante aun en esto hasta ahora me han ayudado mucho en esta comunidad y he mejorado gracias a eso!
Código COBOL:
  1.               IDENTIFICATION DIVISION.
  2.        PROGRAM-ID.                VENTAS-LOCAL.
  3.  
  4.        DATE-WRITTEN.              19/2/2023.
  5.        AUTHOR.                    LUCAS GALEANO.
  6.  
  7.        ENVIRONMENT DIVISION.
  8.  
  9.        INPUT-OUTPUT SECTION.
  10.  
  11.        FILE-CONTROL.
  12.            SELECT REPORTE-VENTAS  ASSIGN TO "VENTAS.DAT"
  13.                                   ORGANIZATION IS INDEXED
  14.                                   ACCESS MODE  IS DYNAMIC
  15.                                   RECORD KEY   IS ID-PRODUCTO.
  16.  
  17.            SELECT STOCK-MAESTRO   ASSIGN TO "STOCK-MAESTRO.DAT"
  18.                                   ORGANIZATION IS INDEXED
  19.                                   ACCESS MODE  IS DYNAMIC
  20.                                   RECORD KEY   IS LLAVE-NUMERO-PRODUCTO.
  21.  
  22.            SELECT TICKET          ASSIGN TO "TICKET.DAT"
  23.                                   ORGANIZATION IS LINE SEQUENTIAL.
  24.        DATA DIVISION.
  25.  
  26.        FILE SECTION.
  27.  
  28.        FD REPORTE-VENTAS.
  29.  
  30.        01 VENTA.
  31.            05 LLAVE-VENTAS.
  32.                10 ID-PRODUCTO     PIC 9(2).
  33.            05 NOMBRE              PIC X(20).
  34.            05 U-VENDIDAS          PIC 9(2).
  35.            05 PRECIO-BASE         PIC 9(4).
  36.  
  37.        FD STOCK-MAESTRO.
  38.  
  39.        01 LLAVE.
  40.            05 LLAVE-NUMERO-PRODUCTO PIC 9(2).
  41.        01 REG-PRODUCTOS.
  42.            05 NOMBRE-PRO      PIC X(20).
  43.            05 CANTIDAD-INICIAL PIC 9(3).
  44.            05 ENTRADA         PIC 9(3).
  45.            05 SALIDA          PIC 9(3).
  46.            05 TOTAL           PIC 9(3).
  47.            05 VALOR-VENTA     PIC 9(5).
  48.        FD TICKET.
  49.  
  50.        01 TICKET-DATOS.
  51.            05 TABLA OCCURS 100.
  52.                10 CANTIDAD            PIC 9(2).
  53.                10 NOMBRE-PRO-T        PIC X(20).
  54.                10 PRECIO              PIC 9(5).
  55.                10 TOTAL-T             PIC 9(5).
  56.                10 RECIBIMOS           PIC 9(5).
  57.                10 VUELTO              PIC 9(5).
  58.  
  59.        WORKING-STORAGE SECTION.
  60.  
  61.       *>***********************************************************************
  62.      *>  *                         MENU INTERFAZ                             *
  63.      *>***********************************************************************
  64.        01 WS-TITULO.
  65.            05 FILLER              PIC X(38).
  66.            05 FILLER              PIC X(4)  VALUE "MENU".
  67.            05 FILLER              PIC X(38).
  68.  
  69.        01 WS-OPC-1.
  70.            05 FILLER              PIC X(36) VALUE SPACES.
  71.            05 FILLER              PIC X(17) VALUE "1.REGISTRAR VENTA".
  72.            05 FILLER              PIC X(36) VALUE SPACES.
  73.        01 WS-OPC-2.
  74.            05 FILLER              PIC X(36) VALUE SPACES.
  75.            05 FILLER              PIC X(17) VALUE "2.PROCESAR TICKET".
  76.            05 FILLER              PIC X(36) VALUE SPACES.
  77.        01 WS-OPC-3.
  78.            05 FILLER              PIC X(36) VALUE SPACES.
  79.            05 FILLER              PIC X(17) VALUE "3.IMPRIMIR TICKET".
  80.            05 FILLER              PIC X(36) VALUE SPACES.
  81.  
  82.        01 WS-OPC-0.
  83.            05 FILLER              PIC X(36) VALUE SPACES.
  84.            05 FILLER              PIC X(7)  VALUE "0.SALIR.".
  85.            05 FILLER              PIC X(36) VALUE SPACES.
  86.  
  87.       *>***********************************************************************
  88.      *>*                         TICKET                                      *
  89.      *>***********************************************************************
  90.  
  91.        01 WS-COLUMNA1.
  92.            05 FILLER              PIC X(10) VALUE SPACES.
  93.            05 FILLER              PIC X(59) VALUE ALL "=".
  94.            05 FILLER              PIC X(10) VALUE SPACES.
  95.  
  96.  
  97.  
  98.        01 WS-COLUMNA2.
  99.            05 FILLER              PIC X(10) VALUE SPACES.
  100.            05 FILLER              PIC X(59) VALUE ALL "=".
  101.            05 FILLER              PIC X(10) VALUE SPACES.
  102.  
  103.        01 WS-LINEA-PRODUCTO.
  104.            05 FILLER              PIC X(15) VALUE SPACES.
  105.            05 WS-CANTIDAD         PIC 9(2).
  106.            05 WS-NOMBRE-PRO       PIC X(20).
  107.            05 FILLER              PIC X(30) VALUE SPACES.
  108.            05 WS-PRECIO           PIC 9(5).
  109.            05 FILLER              PIC X(15) VALUE SPACES.
  110.  
  111.        01 WS-LINEA-TOTAL.
  112.            05 FILLER              PIC X(37).
  113.            05 FILLER              PIC X(7) VALUE "TOTAL: ".
  114.            05 WS-TOTAL            PIC 9(5).
  115.            05 FILLER              PIC X(37).
  116.  
  117.        01 WS-LINEA-RECIBO.
  118.            05 FILLER              PIC X(34).
  119.            05 FILLER              PIC X(11) VALUE "RECIBIMOS: ".
  120.            05 WS-RECIBIMOS        PIC 9(5).
  121.            05 FILLER              PIC X(34).
  122.  
  123.        01 WS-LINEA-VUELTO.
  124.            05 FILLER              PIC X(36).
  125.            05 FILLER              PIC X(8) VALUE "VUELTO: ".
  126.            05 WS-VUELTO           PIC 9(5).
  127.            05 FILLER              PIC X(36).
  128.  
  129.        77 WS-TERMINAR-PROG        PIC X(2)  VALUE "NO".
  130.        77 WS-CONTINUAR            PIC X(2)  VALUE "SI".
  131.        77 WS-REG-EXISTE           PIC X     VALUE "T".
  132.        77 WS-OPC                  PIC 9.
  133.  
  134.        PROCEDURE DIVISION.
  135.  
  136.        010-MENU.
  137.            OPEN OUTPUT REPORTE-VENTAS.
  138.            OPEN I-O STOCK-MAESTRO.
  139.            OPEN OUTPUT TICKET.
  140.            PERFORM UNTIL WS-TERMINAR-PROG = "SI"
  141.                DISPLAY WS-TITULO
  142.                DISPLAY " "
  143.                DISPLAY WS-OPC-1
  144.                DISPLAY " "
  145.                DISPLAY WS-OPC-2
  146.                DISPLAY " "
  147.                DISPLAY WS-OPC-3
  148.                DISPLAY " "
  149.                DISPLAY WS-OPC-0
  150.                ACCEPT WS-OPC
  151.            EVALUATE WS-OPC
  152.                WHEN 1 PERFORM 020-REGISTRAR-VENTA
  153.                WHEN 2 PERFORM PROCESAR-TICKET
  154.                WHEN 3 PERFORM IMPRIMIR-TICKET
  155.                WHEN 0 MOVE "SI" TO WS-TERMINAR-PROG
  156.            END-EVALUATE
  157.            END-PERFORM.
  158.            CLOSE REPORTE-VENTAS.
  159.            CLOSE STOCK-MAESTRO.
  160.            CLOSE TICKET.
  161.            STOP RUN.
  162.  
  163.        020-REGISTRAR-VENTA.
  164.            PERFORM UNTIL WS-CONTINUAR = "NO"
  165.            DISPLAY "INGRESE ID DEL PRODUCTO: " WITH NO ADVANCING
  166.            ACCEPT LLAVE-NUMERO-PRODUCTO
  167.            READ STOCK-MAESTRO
  168.                INVALID KEY MOVE "F" TO WS-REG-EXISTE
  169.            END-READ
  170.            IF WS-REG-EXISTE = "F" THEN
  171.                DISPLAY " "
  172.                DISPLAY "PRODUCTO FUERA DE STOCK."
  173.            ELSE
  174.                DISPLAY " "
  175.                DISPLAY "PRODUCTO: " WITH NO ADVANCING
  176.                DISPLAY NOMBRE-PRO   WITH NO ADVANCING
  177.                DISPLAY "STOCK: "    WITH NO ADVANCING
  178.                DISPLAY TOTAL        WITH NO ADVANCING
  179.                DISPLAY "PRECIO: "   WITH NO ADVANCING
  180.                DISPLAY VALOR-VENTA
  181.                DISPLAY " "
  182.                DISPLAY "INGRESE EL MES ACTUAL: " WITH NO ADVANCING
  183.                MOVE LLAVE-NUMERO-PRODUCTO TO ID-PRODUCTO
  184.                MOVE NOMBRE-PRO TO NOMBRE
  185.                WRITE VENTA
  186.  
Marengo97 is offline   Responder Con Cita