10 ' ============ ::::::::   VP6ARG :::::::: ==============================
   '
   ' :::::::  ANALISIS DE VENTAS                   
   '                                             PLUs   
   ' SISTEMAS SIERRA SA DE CV                    REPORTE DE ALTO MOVIMIENTO
   ' 29-Sep-2003 0955  creaci¢n inicial del programa
   ' ======================================================================
   
    ' $INCLUDE: 'EDITAL.BAS'
      DIM SHARED V1%(2000),V2%(2000),V3%(2000)
      ON ERROR GOTO ErrorHandler
      WIDTH LPRINT 150                                     ' asigna impresor

      GOSUB 9802                                           ' carga parametros
      CVEACC=23:GOSUB 6897:IF VCVE=1 THEN CLOSE:END
    ' $INCLUDE: 'AUTARG.BAS'

      IF LEN(ANO$)=2 THEN XANO$=ANO$:IF ANO$<"80" THEN ANO$="20"+ANO$ ELSE ANO$="19"+ANO$

     ' $INCLUDE: 'OPNTOT.BAS'
     ' $INCLUDE: 'OPNTEM.BAS'
     ' $INCLUDE: 'OPNPLU.BAS'

      GOSUB 100:GOTO 110
100   GET#5,1
      IVI$=MID$(VP5$,2,1)                                  ' iva incluido
      IIMP$=MID$(VP5$,4,1)                                 ' importe dif 0
      IVA =CVS(IV5$)                                       ' iva
      UP  =CVS(UP5$)                                       ' ultimo plu
      MPLU=CVI(PI5$)                                       ' max plus a imprimir
      VAB$ =AB5$                                           ' vector A y B
      RETURN

110   GOSUB 350                                             ' VENTAS POR DIA
     CLOSE                                                 ' cierra archivos
     END

350                                                        ' VENTAS ANUALES
     GOSUB 10016                                           ' cuadro pantalla
     SISTEMA$="ANALISIS DE VENTAS":LG=79                   ' titulo
     MENU$="Alto movimiento PLUs"
     GOSUB 8300                                            ' encabezado
     COLOR 7,0                                             ' intensidad media

     COLOR 7,0                                             ' intensidad media
     PR= 6:PC=15:NR=03:NC=15:GOSUB 9980
     PR= 7:PC=23:NR=01:NC=06:GOSUB 9981
     PR= 6:PC=43:NR=03:NC=15:GOSUB 9980
     PR= 7:PC=51:NR=01:NC=06:GOSUB 9981
     PR=11:PC=33:NR=03:NC=07:GOSUB 9980
     PR=12:PC=37:NR=01:NC=01:GOSUB 9981
     PR=16:PC=33:NR=01:NC=11:GOSUB 9981
     COLOR  0,7:LOCATE 07,16:PRINT "Fecha"
     COLOR  0,7:LOCATE 08,16:PRINT "Inicial"
     COLOR  0,7:LOCATE 07,44:PRINT "Fecha"
     COLOR  0,7:LOCATE 08,44:PRINT "Final"
     COLOR  0,7:LOCATE 13,34:PRINT "AyB"
     COLOR 15,7:LOCATE 17,41:PRINT ".CSV"

     FV$="aammdd"
     FV1$="aammdd"
     PG=1
     NOM$="Xaammdd":REP$="  ALTO MOVIMIENTO DE PLUs"
     AB$=SPACE$(1)

1000 MENSAJE$=" Fecha Inic. Venta.  aa=a¤o, mm=mes, dd=dia.  F8=par metros.":GOSUB 15710
     COLOR 16,15:LOCATE 24,23:PRINT "aa";
                 LOCATE 24,31:PRINT "mm";
                 LOCATE 24,39:PRINT "dd";
                 LOCATE 24,48:PRINT "F8";
     LOCATE 23,2:PRINT "":COLOR 7,0
     IF FV$=SPACE$(6) THEN S$="" ELSE S$=FV$
     COLOR 15,1:W=8:Z=24:L=6:T=1:keypressed = edit(z,w,l,S$) ' PLU
     IF KEYPRESSED=ESCAPE OR KEYPRESSED=UPARROW THEN RETURN
     IF KEYPRESSED=FF8 THEN
        GOSUB 5000                                         ' salva pantalla
        SHELL "\SIEARG2\PARARG"                            ' parametros
        GOSUB 100                                          ' actualiza parametros
        GOSUB 5002                                         ' reinstala pantalla
        GOTO 1000
     ENDIF
        FV$=S$:FX$=FV$
        GOSUB 7900
        IF K=1 THEN BEEP:FV$="aammdd":GOTO 1000
           GOSUB 7850
           DV$=DX$:MV$=MX$:AV$=AX$
           IF LEN(AV$)=2 THEN XAV$=AV$:IF AV$<"80" THEN AV$="20"+AV$ ELSE AV$="19"+AV$
           COLOR 15,07:LOCATE 8,24:PRINT FV$                    
                       LOCATE 8,32:PRINT DV$;"-";MV$;"-";AV$
        MID$(NOM$,2,6)=FV$
        MV=VAL(MID$(FV$,3,2))                              ' mes venta
        DV=VAL(MID$(FV$,5,2))                              ' dia venta
1003 MENSAJE$=" Fecha Final Venta.  aa=a¤o, mm=mes, dd=dia.  F8=par metros.":GOSUB 15710
     COLOR 16,15:LOCATE 24,23:PRINT "aa";
                 LOCATE 24,31:PRINT "mm";
                 LOCATE 24,39:PRINT "dd";
                 LOCATE 24,48:PRINT "F8";
     LOCATE 23,2:PRINT "":COLOR 7,0
     IF FV1$=SPACE$(6) THEN S$="" ELSE S$=FV1$
     COLOR 15,1:W=8:Z=52:L=6:T=1:keypressed = edit(z,w,l,S$) ' PLU
     IF KEYPRESSED=ESCAPE OR KEYPRESSED=UPARROW THEN RETURN
     IF KEYPRESSED=FF8 THEN
        GOSUB 5000                                         ' salva pantalla
        SHELL "\SIEARG2\PARARG"                            ' parametros
        GOSUB 100                                          ' actualiza parametros
        GOSUB 5002                                         ' reinstala pantalla
        GOTO 1000
     ENDIF
        FV1$=S$:FX$=FV1$
        GOSUB 7900
        IF K=1 THEN BEEP:FV1$="aammdd":GOTO 1000
           GOSUB 7850
           DV1$=DX$:MV1$=MX$:AV1$=AX$
           IF LEN(AV1$)=2 THEN XAV1$=AV1$:IF AV1$<"80" THEN AV1$="20"+AV1$ ELSE AV1$="19"+AV1$
           COLOR 15,07:LOCATE 8,52:PRINT FV1$                    
                       LOCATE 8,60:PRINT DV1$;"-";MV1$;"-";AV1$
        MID$(NOM$,2,6)=FV1$
        MV1=VAL(MID$(FV1$,3,2))                              ' mes venta
        DV1=VAL(MID$(FV1$,5,2))                              ' dia venta
     IF FV1$<FV$ THEN BEEP:GOTO 350 
1005 MENSAJE$=" A=Alimentos, B=Bebidas, O=Otros, T=A y B.":GOSUB 15710
     COLOR 16,15:LOCATE 24,03:PRINT "A";
                 LOCATE 24,16:PRINT "B";
                 LOCATE 24,27:PRINT "O";
                 LOCATE 24,36:PRINT "T";
     LOCATE 23,2:PRINT "":COLOR 7,0
     IF AB$=SPACE$(1) THEN S$="" ELSE S$=AB$
     COLOR 15,1:W=13:Z=38:L=1:T=3:keypressed = edit(z,w,l,S$) ' AyB
     IF KEYPRESSED=ESCAPE OR KEYPRESSED=UPARROW THEN COLOR 15,7:LOCATE 13,38:PRINT AB$:GOTO 1000
        AB$=S$
        COLOR 15,07:LOCATE 13,38:PRINT AB$ 
        IF AB$="A" THEN
           MAB$="ALIMENTOS"
        ELSE
           IF AB$="B" THEN
              MAB$="BEBIDAS  "
           ELSE
              IF AB$="O" THEN
                 MAB$="Otros    "
              ELSE
                 IF AB$="T" THEN
                    MAB$="A y B    "
              ELSE
                 GOSUB 7600
                 GOTO 1005
              ENDIF
           ENDIF
        ENDIF
     ENDIF
     COLOR 15,7:LOCATE 13,47:PRINT MAB$
     MID$(NOM$,1,1)=AB$

1010 MENSAJE$=" Nombre del archivo en excel.  "+NOM$+" Alto movimiento de PLUs.":GOSUB 15710
     COLOR 16,15:LOCATE 24,33:PRINT NOM$;
     LOCATE 23,2:PRINT "":COLOR 7,0
     IF NOM$=SPACE$(6) THEN S$="" ELSE S$=NOM$
     COLOR 15,1:W=17:Z=34:L=7:T=3:keypressed = edit(z,w,l,S$) ' ARCHIVO EXCEL
     IF KEYPRESSED=ESCAPE OR KEYPRESSED=UPARROW THEN COLOR 15,7:LOCATE 17,34:PRINT NOM$:GOTO 1005
        NOM$=S$
        COLOR 15,07:LOCATE 17,34:PRINT NOM$+SPACE$(7-LEN(NOM$)) ' archivo excell
        IF MID$(NOM$,1,1)=SPACE$(1) OR LEN(NOM$)=0 THEN GOSUB 7600:GOTO 1000
        XNOM$=MID$(NOM$,1,LEN(NOM$))+".CSV"

     COLOR 15,7:LOCATE 2,17:PRINT AB$
                LOCATE 2,19:PRINT DV$;MV$;AV$

     PR=7:PC=02:NR=14:NC=76:GOSUB 9981
     COLOR 0,7:LOCATE 6,3:PRINT "Posi                        Plu   Unid   $Anual Dias                        "

     COLOR 15, 7:LOCATE 24,2:PRINT "Creando Indice, Favor de Esperar...  "+SPACE$(41);:LOCATE 23,2:PRINT ""

     OPEN "O",#26,XNOM$                                    ' abre archivo CSV
     CLOSE#26                                              ' cierra arch CSV
     KILL XNOM$                                            ' borra arch CSV
     OPEN "O",#26,XNOM$                                    ' abre arch CSV
     PERIODO$="FECHA: "+DIA$+"-"+MES$+"-"+ANO$
     WRITE#26,PERIODO$                                     ' fecha
     WRITE#26,"ANALISIS ANUAL"                             ' titulo reporte
     WRITE#26,TIT$                                         ' empresa
     WRITE#26,"Ventas del ",DV$+"-"+MV$+"-"+AV$;" al ";DV1$+"-"+MV1$+"-"+AV1$
     WRITE#26,REP$                                         ' ventas por mesero
     WRITE#26,AB$,MAB$                                     ' alimentos y bebidas
     WRITE#26,"Posi","Plu","Nombre del plu","Unid","$/Anual","Dias"

                                                           ' CREA INDICE DIA
     GOSUB 1350                                            '    abre archivo indice
     CLOSE#22                                              '    cierra arch indice
     KILL IND$                                             '    borra arch indice
     GOSUB 1350                                            '    abre arch indice
                                                           ' CREA INDICE MENSUAL
     GOSUB 1352                                            '    abre archivo indice
     CLOSE#23                                              '    cierra arch indice
     KILL IND$                                             '    borra arch indice
     GOSUB 1352                                            '    abre arch indice
                                                           ' CREA INDICE ANUAL
     GOSUB 1354                                            '    abre archivo indice
     CLOSE#24                                              '    cierra arch indice
     KILL IND$                                             '    borra arch indice
     GOSUB 1354                                            '    abre arch indice

     KD=0                                                  ' dias
     KM=0                                                  ' dias
     KA=0                                                  ' dias
     FOR XPLU=1 TO UP                                      ' PLUs
         GET#3,XPLU                                        ' accesa plus
         IF ASC(F3$)=0 THEN                                ' existe plu
            IF W$="C" THEN CLOSE:END
            IF AB$<>"T" THEN                               ' es a o b
               PV=VAL(MID$(PL3$,1,1))                      ' supercategoria
               IF PV<1 OR PV>8         THEN 1040           ' pv invalido
               IF MID$(VAB$,PV,1)<>AB$ THEN 1040           ' a y b
            ENDIF
                                                           ' DIA
            VID$=VD3$                                      ' venta importe
            VUD$=VU3$                                      ' venta unidades
            ULTDIA=124*(MV-1)+4*(DV-1)+1                   ' ultimo dia en vector de 372 dias
            VIDIA#=CVS(MID$(VID$,ULTDIA,4))                ' venta del dia importe
            VUDIA#=CVS(MID$(VUD$,ULTDIA,4))                ' venta del dia unidades
            YY#=VUDIA#:GOSUB 7402:VUDIA#=YY#/100
            IF VUDIA#<>0 THEN
               IF IIMP$="1" THEN                           ' no incluye plus con importe cero 
                  IF VIDIA#=0 THEN 1020                    ' importe = cero
               ENDIF      
               LSET PLU22$=PL3$                            ' plu
               LSET NCPLU22$=NC3$                          ' nombre corto
               LSET NPLU22$=NL3$                           ' nombre del plu
               LSET CAN22$=MKS$(VUDIA#)                    ' cantidad
               LSET VTA22$=MKD$(VIDIA#)                    ' importe
               LSET DIA22$=MKI$(1)                         ' dias de venta
               LSET CS22$=MKI$(1)                          ' ind de sort
               KD=KD+1                                     ' registro dia
               PUT#22,KD
            ENDIF
1020                                                       ' MES
            VIM$=VD3$                                      ' venta importe
            VUM$=VU3$                                      ' venta unidades
            DVM=0                                          ' dias venta mensual
            VIM#=0                                         ' venta mensual
            VUM#=0                                         ' unidades mensual
            FOR XMES=1 TO DV                               ' dias del mes
                MESDIA=124*(MV-1)+4*(XMES-1)+1             ' posicion
                VIMES#=CVS(MID$(VIM$,MESDIA,4))            ' venta del dia importe
                VUMES#=CVS(MID$(VUM$,MESDIA,4))            ' venta del dia unidades
                YY#=VUMES#:GOSUB 7402:VUMES#=YY#/100
                IF VUMES#<>0 THEN                          ' dif a cero
                   IF IIMP$="1" THEN                       ' no incluye plus con importe cero 
                      IF VIMES#=0 THEN 1022                ' importe = cero
                   ENDIF      
                   VIM#=VIM#+VIMES#                        ' acumula venta mes
                   VUM#=VUM#+VUMES#                        ' acumula unidades mes
                   DVM=DVM+1                               ' dias de venta en el mes
                ENDIF
1022        NEXT XMES
            YY#=VUM#:GOSUB 7402:VUM#=YY#/100
            IF VUM#<>0 THEN
               IF IIMP$="1" THEN                           ' no incluye plus con importe cero 
                  IF VIM#=0 THEN 1030                      ' importe = cero
               ENDIF      
               LSET PLU23$=PL3$                            ' plu
               LSET NCPLU23$=NC3$                          ' nombre corto
               LSET NPLU23$=NL3$                           ' nombre del plu
               LSET CAN23$=MKS$(VUM#)                      ' cantidad
               LSET VTA23$=MKD$(VIM#)                      ' importe
               LSET DIA23$=MKI$(DVM)                       ' dias de venta
               LSET CS23$=MKI$(1)                          ' ind de sort
               KM=KM+1                                     ' registro mes
               PUT#23,KM
            ENDIF
1030                                                       ' ANUAL
            VD$=VD3$                                       ' venta importe
            VU$=VU3$                                       ' venta unidades
            DVA=0                                          ' dias venta mensual
            VIA#=0                                         ' venta mensual
            VUA#=0                                         ' unidades mensual
            UD=31*(MV-1)+DV
            UD1=31*(MV1-1)+DV1
            FOR XDIA=UD TO UD1                               ' dia
                MESDIA=4*(XDIA-1)+1                        ' posicion
                VIANO#=CVS(MID$(VD$,MESDIA,4))             ' venta del dia importe
                VUANO#=CVS(MID$(VU$,MESDIA,4))             ' venta del dia unidades
                YY#=VUANO#:GOSUB 7402:VUANO#=YY#/100
                IF VUANO#<>0 THEN                          ' idf a cero
                   IF IIMP$="1" THEN                       ' no incluye plus con importe cero 
                      IF VIANO#=0 THEN 1032                ' importe = cero
                   ENDIF      
                   VIA#=VIA#+VIANO#                        ' acumula venta anual
                   VUA#=VUA#+VUANO#                        ' acumula unidades mes
                   DVA=DVA+1                               ' dias de venta en el a¤o
                ENDIF
1032        NEXT XDIA
            YY#=VUA#:GOSUB 7402:VUA#=YY#/100
            IF VUA#<>0 THEN
               IF IIMP$="1" THEN                           ' no incluye plus con importe cero 
                  IF VIA#=0 THEN 1040                      ' importe = cero
               ENDIF      
               LSET PLU24$=PL3$                            ' plu
               LSET NCPLU24$=NC3$                          ' nombre corto
               LSET NPLU24$=NL3$                           ' nombre del plu
               LSET CAN24$=MKS$(VUA#)                      ' cantidad
               LSET VTA24$=MKD$(VIA#)                      ' importe
               LSET DIA24$=MKI$(DVA)                       ' dias de venta
               LSET CS24$=MKI$(1)                          ' ind de sort
               KA=KA+1                                     ' registro mes
               PUT#24,KA
            ENDIF
         ENDIF
1040 NEXT XPLU
     OPC=1:GOSUB 6000                                      ' ve a ordenar
     OPC=2:GOSUB 6000                                      ' ve a ordenar
     OPC=3:GOSUB 6000                                      ' ve a ordenar

                                                           ' CREA INDICE DIA-MES-A¥O
     GOSUB 1356                                            '    abre archivo indice
     CLOSE#25                                              '    cierra arch indice
     KILL IND$                                             '    borra arch indice
     GOSUB 1356                                            '    abre arch indice
     TCAD#=0:TVTD#=0:TCAM#=0:TVTM#=0:TCAA#=0:TVTA#=0
     FOR I=1 TO KA
         GET#24,I                                          ' accesa a¤o
         PLUA$=PLU24$                                      ' plu
         IF NPLU24$=SPACE$(24) THEN
            NLPLU$=NCPLU24$+SPACE$(16)
         ELSE
            NLPLU$=NPLU24$
         ENDIF
         NLAA$=NLPLU$                                   ' nombre largo
         CAA#=CVS(CAN24$)                                  ' cantidad
         VTA#=CVD(VTA24$)                                  ' venta
         DAA=CVI(DIA24$)                                   ' dias
         TCAA#=TCAA#+CAA#
         TVTA#=TVTA#+VTA#
         IF I<=KM THEN
            GET#23,I                                       ' accesa mes
            PLUM$=PLU23$                                   ' plu
            IF NPLU23$=SPACE$(24) THEN
               NLPLU$=NCPLU23$+SPACE$(16)
            ELSE
               NLPLU$=NPLU23$
            ENDIF
            NLAM$=NLPLU$                                   ' nombre largo
            CAM#=CVS(CAN23$)                               ' cantidad
            VTM#=CVD(VTA23$)                               ' venta
            DAM=CVI(DIA23$)                                ' dias
            TCAM#=TCAM#+CAM#
            TVTM#=TVTM#+VTM#
         ENDIF
         IF I<=KD THEN
            GET#22,I                                       ' accesa dia
            PLUD$=PLU22$                                   ' plu
            IF NPLU22$=SPACE$(24) THEN
               NLPLU$=NCPLU22$+SPACE$(16)
            ELSE
               NLPLU$=NPLU22$
            ENDIF
            NLAD$=NLPLU$                                   ' nombre largo
            CAD#=CVS(CAN22$)                               ' cantidad
            VTD#=CVD(VTA22$)                               ' venta
            DAD=CVI(DIA22$)                                ' dias
            TCAD#=TCAD#+CAD#
            TVTD#=TVTD#+VTD#
         ENDIF
         LSET PO25$=MKI$(I)                                ' posicion
                                                           ' DIA
         IF I<=KD THEN 
            LSET PLD25$=PLUD$                              ' plu
            LSET NLD25$=NLAD$                              ' nombre largo
            LSET CAD25$=MKS$(CAD#)                         ' cantidad
            LSET VTD25$=MKD$(VTD#)                         ' venta
            LSET DAD25$=MKI$(1)                            ' dias
         ELSE
            LSET PLD25$=SPACE$(5)                          ' plu
            LSET NLD25$=SPACE$(24)                         ' nombre largo
            LSET CAD25$=MKS$(0)                            ' cantidad
            LSET VTD25$=MKD$(0)                            ' venta
            LSET DAD25$=MKI$(0)                            ' dias
         ENDIF
                                                           ' MES
         IF I<=KM THEN
            LSET PLM25$=PLUM$                              ' plu
            LSET NLM25$=NLAM$                              ' nombre largo
            LSET CAM25$=MKS$(CAM#)                         ' cantidad
            LSET VTM25$=MKD$(VTM#)                         ' venta
            LSET DAM25$=MKI$(DAM)                          ' dias
         ELSE
            LSET PLM25$=SPACE$(5)                          ' plu
            LSET NLM25$=SPACE$(24)                         ' nombre largo
            LSET CAM25$=MKS$(0)                            ' cantidad
            LSET VTM25$=MKD$(0)                            ' venta
            LSET DAM25$=MKI$(DAM)                          ' dias
         ENDIF

                                                           ' A¥O
         IF I<=KA THEN 
            LSET PLA25$=PLUA$                              ' plu
            LSET NLA25$=NLAA$                              ' nombre largo
            LSET CAA25$=MKS$(CAA#)                         ' cantidad
            LSET VTA25$=MKD$(VTA#)                         ' venta
            LSET DAA25$=MKI$(DAA)                          ' dias
         ELSE
            LSET PLA25$=SPACE$(5)                          ' plu
            LSET NLA25$=SPACE$(24)                         ' nombre largo
            LSET CAA25$=MKS$(0)                            ' cantidad
            LSET VTA25$=MKD$(0)                            ' venta
            LSET DAA25$=MKI$(0)                            ' dias
         ENDIF

         PUT#25,I

          WRITE#26,I,PLUA$,NLAA$,CAA#,VTA#,DAA
     NEXT I

     WRITE#26,"ANUAL","","","","","","","","","","","",""
     WRITE#26," "," ",KA,TCAA#,TVTA#," "

     COLOR 15, 7:LOCATE 24,1:PRINT SPACE$(80);:LOCATE 23,2:PRINT "" ' limpia mensaje
     COLOR 15, 7:LOCATE 24,02:PRINT " ";CHR$(24);" ";CHR$(25);" PgDn PgUp=desplazarse  F1=imprimir  F9=plu  F10=anual  END C=cancelar";
     COLOR 16,15:LOCATE 24,03:PRINT CHR$(24);
                 LOCATE 24,05:PRINT CHR$(25);
                 LOCATE 24,07:PRINT "PgDn";
                 LOCATE 24,12:PRINT "PgUp";
                 LOCATE 24,30:PRINT "F1";
                 LOCATE 24,43:PRINT "F9";
                 LOCATE 24,51:PRINT "F10";
                 LOCATE 24,62:PRINT "END";
                 LOCATE 24,66:PRINT "C";
     LOCATE 23,2:PRINT "":COLOR 7,0

     RECCNT=KA
     IB=1:LIMI=1:LIMS=LIMI+13
     IF LIMS>RECCNT THEN LIMS=RECCNT
     IF RECCNT>14 THEN PW=21 ELSE PW=LIMS+7
        GOSUB 1330

1300 BAND=0
     DO
         X$=INKEY$
         SELECT CASE X$
                CASE IS=CHR$(13)                           ' es enter
                     IF I=RECCNT THEN
                        GOSUB 1330
                     ELSE
                        IF PW=21 THEN IF I=RECCNT THEN ELSE LIMI=LIMI+1:LIMS=LIMS+1 ELSE PW=PW+1
                     ENDIF
                     GOSUB 1330
                CASE IS=CHR$(0)+CHR$(72)                   ' arriba
                     IF PW=8 THEN IF I=1 THEN ELSE LIMI=LIMI-1:LIMS=LIMS-1 ELSE PW=PW-1
                     GOSUB 1330
                CASE IS=CHR$(0)+CHR$(80)                   ' abajo
                     IF I=RECCNT THEN
                        GOSUB 1330
                     ELSE
                        IF PW=21 THEN IF I=RECCNT THEN ELSE LIMI=LIMI+1:LIMS=LIMS+1 ELSE PW=PW+1
                     ENDIF
                     GOSUB 1330
                CASE IS=CHR$(0)+CHR$(73)                   ' page up
                     LIMI=LIMI-14:IF LIMI<=0     THEN LIMI=1
                     LIMS=LIMI+13:IF LIMS>RECCNT THEN LIMS=RECCNT
                     PW=8
                     GOSUB 1330
                CASE IS=CHR$(0)+CHR$(81)                   ' page down
                     LIMI=LIMI+14:IF LIMI>RECCNT THEN LIMI=RECCNT-13:IF LIMI<=0 THEN LIMI=1
                     LIMS=LIMI+13:IF LIMS>RECCNT THEN LIMS=RECCNT:LIMI=LIMS-13:IF LIMI<=0 THEN LIMI=1
                     PW=LIMS-LIMI+8
                     GOSUB 1330
                CASE IS=CHR$(0)+CHR$(79)                   ' es end
                     GOTO 1320
                CASE IS="C"                                ' es C
                     GOTO 1320
                CASE IS="c"                                ' es c
                     GOTO 1320
                CASE IS=CHR$(0)+CHR$(59)                   ' es F1
                     GOSUB 2010
                CASE IS=CHR$(0)+CHR$(67)                   ' es F9
                     GOSUB 2500
                CASE IS=CHR$(0)+CHR$(68)                   ' es F10
                     GOSUB 2600
                CASE ELSE
         END SELECT
     LOOP UNTIL X$=CHR$(13) OR X$=CHR$(0)+CHR$(72) OR X$=CHR$(0)+CHR$(80) OR X$="C"
     GOTO 1300

1320 CLOSE:END

1330  IF IP=1 THEN GOSUB 2610
      COLOR 7,0
      CR=7:COLOR 15,07                                     ' reimprime cuadro
      FOR I=LIMI TO LIMS
          GET#25,I
          CR=CR+1
          COLOR 0,7
          LOCATE CR,03:PRINT USING "####";CVI(PO25$);:PRINT "   ";
          COLOR 15,7
          LOCATE CR,30:PRINT PLA25$;" ";
          LOCATE CR,36:PRINT USING "######";CVS(CAA25$);:PRINT " ";
          LOCATE CR,43:PRINT USING "#######";CVD(VTA25$);:PRINT " ";
          LOCATE CR,50:PRINT USING "###";CVI(DAA25$)
      NEXT I
      I=LIMI+PW-8
      IF I=0 THEN RETURN                                   ' sort es cero
      GET#25,I
      COLOR 15,1
          LOCATE PW,03:PRINT USING "####";CVI(PO25$);:PRINT "   ";
          LOCATE PW,30:PRINT PLA25$;" ";
          LOCATE PW,36:PRINT USING "######";CVS(CAA25$);:PRINT " ";
          LOCATE PW,43:PRINT USING "#######";CVD(VTA25$);:PRINT " ";
          LOCATE PW,50:PRINT USING "###";CVI(DAA25$)
      COLOR 7,0
      RETURN

1350 IND$="C:"+"D08IND.ARG"
     ' $INCLUDE: 'O08ARG.BAS'
     RETURN

1352 IND$="C:"+"M08IND.ARG"
     ' $INCLUDE: 'O09ARG.BAS'
     RETURN

1354 IND$="C:"+"A08IND.ARG"
     ' $INCLUDE: 'O10ARG.BAS'
     RETURN

1356 IND$="C:"+"DMAIND.ARG"
     ' $INCLUDE: 'O11ARG.BAS'
     RETURN

2000 LT$=TIT$:LG=77:GOSUB 8700                         ' posicion titulo
     LPRINT CHR$(27);CHR$(33);CHR$(8);                 ' normal
     LPRINT STRING$(77,205);:LPRINT CHR$(27);CHR$(33);CHR$(0); ' linea
     LPRINT TAB(02);"FECHA: ";DIA$;"-";MES$;"-";ANO$;  ' fecha
     LPRINT TAB(68);:LPRINT USING "HOJA: ###";PG       ' hoja
     LPRINT CHR$(27);CHR$(33);CHR$(40);:LPRINT TAB(15);"ANALISIS ANUAL" ' reporte
     LPRINT CHR$(27);CHR$(33);CHR$(0);:LPRINT TAB(IT);TIT$;
     LPRINT TAB(68);MAB$
     LPRINT TAB(02);"SISTEMA ARGUS";
     LPRINT TAB(27);"Ventas del ";DV$;"-";MV$;"-";AV$;" al ";DV1$+"-"+MV1$+"-"+AV1$
     LPRINT TAB(27);REP$
     LPRINT CHR$(27);CHR$(33);CHR$(4);" "
     '                1         2         3         4         5         6         7         8         9        10        11        12        13
     '       123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012

     LPRINT "ÕÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍ¸"
     LPRINT "³POS³ PLU ³  NOMBRE DEL PLU  ³ UNID³$ VTA/A¥O³ DV   %  ³"
     LPRINT "ÀÄÄÄÅÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÙ"
     RETURN

2010 TT=0                                              
     IND=0                                             
     TOTD#=0:TOTM#=0:TOTA#=0
     TOTUD#=0:TOTUM#=0:TOTUA#=0
     POSI=0:VZA=0:VZM=0:VZD=0
     IF MPLU=0 THEN MPLU=KA
     FOR I=1 TO MPLU
         GET#25,I
         IND=1
         GOSUB 2400                                        ' verifica linea
         LPRINT CHR$(27);CHR$(33);CHR$(4);
         LPRINT TAB(002) USING "####";I;                   ' posicion

         IF CVS(CAA25$)<>0 THEN
            IF TVTA#=0 THEN TVTA#=1
            PORC!=CVD(VTA25$)/TVTA#
            PORC!=PORC!*100
            LPRINT TAB(009);PLA25$;                        ' plu
            LPRINT TAB(015);MID$(NLA25$,1,18);             ' nombre
            LPRINT TAB(033) USING "######";CVS(CAA25$);    ' importe
            IF CVD(VTA25$)>9999999 THEN
               LPRINT TAB(039) USING "##########";CVD(VTA25$); ' importe
            ELSE
               LPRINT TAB(039) USING "##,###,###";CVD(VTA25$); ' importe
            ENDIF
            LPRINT TAB(050) USING "###  ##.##%";CVI(DAA25$);PORC!    ' dias venta anual
         ENDIF

     NEXT I

     IF IND=0 THEN RETURN                                  ' no enc registros
        LPRINT CHR$(27);CHR$(33);CHR$(20);
        LPRINT TAB(13);"TOTALES:";
        LPRINT TAB(025) USING "###  ########";KA;TCAA#;    ' ANUAL
        IF TOTA#>9999999 THEN
           LPRINT TAB(040) USING "##,###,###";TVTA#
        ELSE
           LPRINT TAB(040) USING "##,###,###";TVTA#
        ENDIF

        LPRINT CHR$(27);CHR$(33);CHR$(4);" "
        JJ=JJ+2

        GOSUB 2012
        GOTO 2014
2012       KONTDIA=0
           PRIMERD=0
           FOR XDIA=1 TO 31*(MV1-1)+DV1                      ' dias
               GET#1,XDIA                                  ' accesa
               VD$=VD1$                                    ' ventas del dia
               VD#=0
               FOR L=1 TO 9                                ' localizacion
                   FOR C=1 TO 8                            ' categoria
                       VD#=VD#+CVD(MID$(VD$,64*(L-1)+8*(C-1)+1,8)) ' acumula
                   NEXT C
               NEXT L
               YY#=VD#:GOSUB 7402:VD#=YY#/100
               IF VD#<>0 THEN
                  KONTDIA=KONTDIA+1                        ' dias de venta
                  IF PRIMERD=0 THEN
                     PRIMERD=XDIA
                  ENDIF
               ENDIF
           NEXT XDIA
           RETURN

2014    MESINI=INT((PRIMERD+30)/31)                        ' mes inicial
        DIAINI=PRIMERD-(31*(MESINI-1))
        DIAINI$=STR$(DIAINI)                               ' dia inicial
        POSI=MESINI
        IF POSI<>0 THEN
           GOSUB 7851                                      ' calcula mes
           MESINI$=MX$
        ELSE
           MESINI$="   "
        ENDIF
        LPRINT TAB(13);"Informaci¢n desde el ";DIAINI$;"-";MESINI$;"-";ANO$;".  ";:LPRINT USING "### Dias de venta registrados.";KONTDIA
        JJ=JJ+1

     IF TPG=1 THEN CC=66-8-JJ ELSE CC=65-8-JJ
     FOR I=1 TO CC:LPRINT:NEXT I
     RETURN

2400 IF BH=0 THEN BH=1:GOTO 2404
     IF JJ<50 THEN JJ=JJ+1:RETURN                          ' imprime reg
     LPRINT CHR$(12)                                       ' brinca hoja
2404 PG=PG+1:TPG=TPG+1                                     ' increm hoja
     GOSUB 2000                                            ' impr encabezado
     JJ=1                                                  ' regresa cont a 1
     RETURN

2500          
     ' 1234567890123456789012345678901234567890123456789012345678901234
     ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
     ' ³     Plu           Nombre           Unids      Venta     Dv ³
     ' ³   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³
     ' ³Dia³99999 xxxxxxxxxxxxxxxxxxxxxxxx 999999 99,999,999.99 999³³
     ' ³Mes³99999 xxxxxxxxxxxxxxxxxxxxxxxx 999999 99,999,999.99 999³³
     ' ³A¤o³99999 xxxxxxxxxxxxxxxxxxxxxxxx 999999 99,999,999.99 999³³
     ' ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³
     ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

     PR= 8:PC=10:NR=06:NC=60:GOSUB 9980
     PR=10:PC=14:NR=03:NC=55:GOSUB 9981
     COLOR 0,7
        LOCATE 09,16:PRINT "Plu          Nombre            Unids      Venta     Dv"
        LOCATE 11,11:PRINT "Dia"
        LOCATE 12,11:PRINT "Mes"
        LOCATE 13,11:PRINT "A¤o"
      COLOR 15,7
        LOCATE 11,15:PRINT PLD25$;" ";NLD25$;" ";:PRINT USING "###### ##,###,###.##    ";CVS(CAD25$);CVD(VTD25$) 
        LOCATE 12,15:PRINT PLM25$;" ";NLM25$;" ";:PRINT USING "###### ##,###,###.## ###";CVS(CAM25$);CVD(VTM25$);CVI(DAM25$)
        LOCATE 13,15:PRINT PLA25$;" ";NLA25$;" ";:PRINT USING "###### ##,###,###.## ###";CVS(CAA25$);CVD(VTA25$);CVI(DAA25$)
     RETURN

2600 GOSUB 2012                                            ' calcular dias
     ' 1234567890123456789012345678901234567890123456789012345678901234567890
     ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
     ' ³    Plus  Unids     Venta      Dv ³
     ' ³   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³
     ' ³Dia³9999 999999 99,999,999.99 999³³
     ' ³Mes³9999 999999 99,999,999.99 999³³
     ' ³A¤o³9999 999999 99,999,999.99 999³³
     ' ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³
     ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

     PR=08:PC=22:NR=06:NC=34:GOSUB 9980
     PR=10:PC=26:NR=03:NC=29:GOSUB 9981
     COLOR 0,7
        LOCATE 09,27:PRINT "Plus  Unids     Venta      Dv"
        LOCATE 11,23:PRINT "Dia"
        LOCATE 12,23:PRINT "Mes"
        LOCATE 13,23:PRINT "A¤o"

     COLOR 15,7
        LOCATE 11,27:PRINT USING "#### ###### ##,###,###.##";KD;TCAD#;TVTD# 
        LOCATE 12,27:PRINT USING "#### ###### ##,###,###.## ###";KM;TCAM#;TVTM#
        LOCATE 13,27:PRINT USING "#### ###### ##,###,###.## ###";KA;TCAA#;TVTA#;KONTDIA
     RETURN

2610 PR=7:PC=02:NR=14:NC=76:GOSUB 9981
     COLOR 0,7:LOCATE 6,3:PRINT "Dia    Ene   Feb   Mar   Abr   May   Jun   Jul   Ago   Sep   Oct   Nov   Dic"
               LOCATE 23,2:PRINT STRING$(78,"Ä")
     IP=0
     RETURN

5000 AP%=VARPTR(V1%(1)):CALL SAVESCRN(1, AP%):RETURN
5002 AP%=VARPTR(V1%(1)):CALL RESTSCRN(1, AP%):RETURN


6000                                                       ' ORDENAR (SORT)
     IF OPC=1 THEN
        PLC$="C:"+"D08IND.ARG"                             ' indice
     ELSE
        IF OPC=2 THEN
           PLC$="C:"+"M08IND.ARG"                          ' indice
        ELSE
           PLC$="C:"+"A08IND.ARG"                          ' indice
        ENDIF
     ENDIF
     CMND$="2\1\0\0\"+PLC$+"\"+PLC$+"\0\53\N\N\0\38\4\D\S\42\8\D\D\0\Y\D\52\2\I\E\0\0"
     IF OPC=1 THEN
        CLOSE#22
     ELSE
        IF OPC=2 THEN
           CLOSE#23
        ELSE
           CLOSE#24
        ENDIF
     ENDIF
     SLVN$="1"
     CALL SORTMC(CMND$,SORTERR%,RECCNT%)
     RECCNT=RECCNT%
     IF RECCNT<0 THEN
        RECCNT=RECCNT+65536
     ENDIF
     IF SORTERR%=0 THEN
        IF OPC=1 THEN
           GOSUB 1350
        ELSE
           IF OPC=2 THEN
              GOSUB 1352
           ELSE
              GOSUB 1354
           ENDIF
        ENDIF
        RETURN
     ENDIF
     PRINT
     PRINT "*** ERROR AL ORDENAR ARCHIVO INDICE ...VERFIFIQUE QUE HAYA ESPACIO SUFICIENTE";SORTERR%
     CLOSE:END

6999 ' $INCLUDE: 'R40GRL.BAS'
     ' $INCLUDE: 'LEFARG.BAS'
     ' $INCLUDE: 'KEYARG.BAS'
     ' $INCLUDE: 'VERSFT.BAS'

ErrorHandler:
      IF ERR=70 THEN LOCATE 24,01:COLOR 16,15:PRINT "pd...";:LOCATE 23,2:PRINT "":RESUME
      IF ERR=24 OR ERR=25 OR ERR=27 THEN GOSUB 7510:RESUME
      COLOR 16,15:LOCATE 24,01:PRINT "Error en los datos ";ERR;" Linea ";ERL;". Llame a SIERRA.";:LOCATE 23,2:PRINT "":W$=INPUT$(1):CLOSE:END

