10 ' ============ ::::::::   BDAARG :::::::: ==============================
   '
   ' :::::::  ESTADISTICA DE VENTAS
   '
   ' SISTEMAS SIERRA SA DE CV                    BORRA DIAS ANTERIORES
   ' 07-Ago-2003 1126  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=56: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: 'OPNTEM.BAS'
     GET#5,1
     IVA=CVS(IV5$)                                         ' iva
     IVI$=MID$(VP5$,2,1)                                   ' iva incluido en precio
     MM=CVS(MM5$)                                          ' maximo meseros
     UM=CVS(UM5$)                                          ' ultimo mesero
     MP=CVS(MP5$)                                          ' maximo plus
     UP=CVS(UP5$)                                          ' ultimo plu

     GOSUB 350                                             ' VENTAS POR DIA
     CLOSE                                                 ' cierra archivos
     END

350                                                        ' ACUMULA DIAS ANTERIORES
     GOSUB 10016                                           ' cuadro pantalla
     SISTEMA$="ANALISIS DE VENTAS":LG=79                   ' titulo
     MENU$="Borra dĦas anteriores"                             
     GOSUB 8300                                            ' encabezado
     COLOR 7,0                                             ' intensidad media
     PR=07:PC=12:NR=02:NC=04:GOSUB 9981
     PR=07:PC=20:NR=04:NC=34:GOSUB 9981

     COLOR 0,7
        LOCATE 08,03:PRINT "Fecha de"
        LOCATE 09,03:PRINT "Fecha a"
     COLOR 15,7
        LOCATE 08,21:PRINT "El sistema borrar  la informaci˘n "
        LOCATE 09,21:PRINT "estadĦstica de los dĦas indicados."
        LOCATE 10,21:PRINT "Graba un cero en la estadĦstica de"
        LOCATE 11,21:PRINT "ventas, de la base de datos ARG.  "
     COLOR 4,7
        LOCATE 11,49:PRINT "ARG"
        

900  GOSUB 902:GOSUB 904:GOTO 950
902  COLOR 15,07:LOCATE 08,13:PRINT "mmdd":RETURN          ' fecha de
904  COLOR 15,07:LOCATE 09,13:PRINT "mmdd":RETURN          ' fecha a

950  FECD$="mmdd":FECA$="mmdd":VA$=SPACE$(2)

1000 MENSAJE$=" Borra desde fecha.  mm=mes, dd=dia.  Enter=0101.  ESC=terminar.":GOSUB 15710
     IF FECD$=SPACE$(4) THEN S$="" ELSE S$=FECD$
     COLOR 15,1:W=08:Z=13:L=4:T=1:keypressed = edit(z,w,l,S$) ' FECHA DE
     IF KEYPRESSED=ESCAPE OR KEYPRESSED=UPARROW THEN RETURN
        FECD$=S$
        IF FECD$=SPACE$(4) OR FECD$="aamm" THEN FECD$="0101"
        IF MID$(FECD$,1,2)<"01" OR MID$(FECD$,1,2)>"12" THEN GOSUB 7600:GOTO 1000
        IF MID$(FECD$,3,2)<"01" OR MID$(FECD$,3,2)>"31" THEN GOSUB 7600:GOTO 1000
           COLOR 15,7:LOCATE 8,13:PRINT FECD$

1010 MENSAJE$=" Borra hasta fecha.  mm=mes, dd=dia.  Enter=1231.":GOSUB 15710
     IF FECA$=SPACE$(4) THEN S$="" ELSE S$=FECA$
     COLOR 15,1:W=09:Z=13:L=4:T=1:keypressed = edit(z,w,l,S$) ' FECHA A
     IF KEYPRESSED=ESCAPE OR KEYPRESSED=UPARROW THEN 900   
        FECA$=S$
        IF FECA$=SPACE$(4) OR FECA$="aamm" THEN FECA$="1231"
        IF MID$(FECA$,1,2)<"01" OR MID$(FECA$,1,2)>"12" THEN GOSUB 7600:GOTO 1010
        IF MID$(FECA$,3,2)<"01" OR MID$(FECA$,3,2)>"31" THEN GOSUB 7600:GOTO 1010
        IF FECA$<FECD$ THEN GOSUB 7600:GOTO 1010
           COLOR 15,7:LOCATE 9,13:PRINT FECA$

1100 GOSUB 7500                                            ' GRABAR
     IF KEYPRESSED=ESCAPE OR KEYPRESSED=UPARROW THEN 1010
     IF KEYPRESSED=FF1 OR S$="1" THEN 1200
     IF KEYPRESSED=FF2 OR S$="C" OR S$="c" THEN 900
        GOSUB 7600:GOTO 1100

1200 MESI=VAL(MID$(FECD$,1,2))                             ' mes inicial
     MESF=VAL(MID$(FECA$,1,2))                             ' mes final
     DIAI=VAL(MID$(FECD$,3,2))                             ' dia inicial
     DIAF=VAL(MID$(FECA$,3,2))                             ' dia final

   ' $INCLUDE: 'OPNTOT.BAS '
   ' $INCLUDE: 'OPNXME.BAS'
   ' $INCLUDE: 'OPNPLU.BAS'
   ' $INCLUDE: 'OPNHOR.BAS'
   ' $INCLUDE: 'OPNHO2.BAS'

     V1488$=SPACE$(1488)
     FOR I=1 TO 372
         MID$(V1488$,4*(I-1)+1,4)=MKS$(0)
     NEXT I
     V744$=SPACE$(744)
     FOR I=1 TO 372
         MID$(V744$,2*(I-1)+1,2)=MKI$(0)
     NEXT I
     V576$=SPACE$(576)
     FOR I=1 TO 72
         MID$(V576$,8*(I-1)+1,8)=MKD$(0)
     NEXT I
     V288$=SPACE$(288)
     FOR I=1 TO 72
         MID$(V288$,4*(I-1)+1,4)=MKS$(0)
     NEXT I
     V72$=SPACE$(72)
     FOR I=1 TO 9
         MID$(V72$,8*(I-1)+1,8)=MKD$(0)
     NEXT I
     V36$=SPACE$(36)
     FOR I=1 TO 9
         MID$(V36$,4*(I-1)+1,4)=MKS$(0)
     NEXT I
     V32$=SPACE$(32)
     FOR I=1 TO 8
         MID$(V32$,4*(I-1)+1,4)=MKS$(0)
     NEXT I
     V18$=SPACE$(18)
     FOR I=1 TO 9
         MID$(V18$,2*(I-1)+1,2)=MKI$(0)
     NEXT I
     V16$=SPACE$(16)
     FOR I=1 TO 8
         MID$(V16$,2*(I-1)+1,2)=MKI$(0)
     NEXT I

     PRI=31*(MESI-1)+DIAI                                  ' primero
     ULT=31*(MESF-1)+DIAF                                  ' ultimo
     FOR R=PRI TO ULT
         COLOR 15,7:LOCATE 24,70:PRINT USING "###.#%";(R/ULT)*100;
                    LOCATE 23,2:PRINT ""
         M=INT((R+31)/31)                                  ' mes
         D=R MOD 31                                        ' dia
         IF D=0 THEN
            D=31
            IF M<>1 THEN
               M=M-1
            ENDIF
         ENDIF
         MESDIA=31*(M-1)+D                                 ' registro
             GET#1,MESDIA
             LSET  F1$=CHR$(255)                           ' status alta/baja
             LSET VD1$=V576$                               ' vector de ventas en importe
             LSET VU1$=V288$                               ' vector de ventas en unidades
             LSET AD1$=V72$                                ' vector de ajustes en importe
             LSET IV1$=V72$                                ' vector de ivas en importe
             LSET CI1$=V576$                               ' vector de cancel en importe
             LSET CU1$=V288$                               ' vector de cancel en unidades
             LSET NC1$=V18$                                ' vector de cuentas
             LSET NT1$=V18$                                ' vector de notas
             LSET NP1$=V18$                                ' vector de personas
             LSET DI1$=SPACE$(121)                         ' disponible
             PUT#1,MESDIA

             FOR I=1 TO UM                                 ' INICIALIZA VENTAS X MESERO
                 GET#2,I                                   ' accesa
                 VD$=VD2$                                  ' ventas
                 MID$(VD$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 VU$=VU2$                                  ' venta en unidades
                 MID$(VU$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 CI$=CI2$                                  ' cancelaciones
                 MID$(CI$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 CU$=CU2$                                  ' cancel en unidades
                 MID$(CU$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 NP$=NP2$                                  ' personas
                 MID$(NP$, 62*(M-1)+2*(D-1)+1,2)=MKI$(0)   ' asigna
                 NC$=NC2$                                  ' cuentas
                 MID$(NC$, 62*(M-1)+2*(D-1)+1,2)=MKI$(0)   ' asigna
                 LSET VD2$=VD$                             ' ventas importe
                 LSET VU2$=VU$                             ' ventas unidad
                 LSET CI2$=CI$                             ' cancel importe
                 LSET CU2$=CU$                             ' cancel unidad
                 LSET NP2$=NP$                             ' personas
                 LSET NC2$=NC$                             ' cuentas
                 PUT#2,I                                   ' graba
             NEXT I

             FOR I=1 TO UP                                 ' INICIALIZA VENTAS X PLU
                 GET#3,I                                   ' accesa
                 VD$=VD3$                                  ' ventas
                 MID$(VD$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 VU$=VU3$                                  ' venta en unidades
                 MID$(VU$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 CI$=CI3$                                  ' cancelaciones
                 MID$(CI$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 CU$=CU3$                                  ' cancel en unidades
                 MID$(CU$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 LSET VD3$=VD$                             ' ventas importe
                 LSET VU3$=VU$                             ' ventas unidad
                 LSET CI3$=CI$                             ' cancel importe
                 LSET CU3$=CU$                             ' cancel unidad
                 PUT#3,I                                   ' graba
             NEXT I

             FOR I=1 TO 24                                 ' INICIALIZA VENTAS X HORA
                 GET#4,I                                   ' accesa
                 VD$=VD4$                                  ' ventas
                 MID$(VD$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 VU$=VU4$                                  ' venta en unidades
                 MID$(VU$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 CI$=CI4$                                  ' cancelaciones
                 MID$(CI$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 CU$=CU4$                                  ' cancel en unidades
                 MID$(CU$,124*(M-1)+4*(D-1)+1,4)=MKS$(0)   ' asigna
                 NP$=NP4$                                  ' personas
                 MID$(NP$, 62*(M-1)+2*(D-1)+1,2)=MKI$(0)   ' asigna
                 NC$=NC4$                                  ' cuentas
                 MID$(NC$, 62*(M-1)+2*(D-1)+1,2)=MKI$(0)   ' asigna
                 NT$=NT4$                                  ' notas
                 MID$(NT$, 62*(M-1)+2*(D-1)+1,2)=MKI$(0)   ' asigna
                 LSET VD4$=VD$                             ' ventas importe
                 LSET VU4$=VU$                             ' ventas unidad
                 LSET CI4$=CI$                             ' cancel importe
                 LSET CU4$=CU$                             ' cancel unidad
                 LSET NP4$=NP$                             ' personas
                 LSET NC4$=NC$                             ' cuentas
                 LSET NT4$=NT$                             ' notas
                 PUT#4,I                                   ' graba
             NEXT I

             V36$=SPACE$(36)
             FOR I=1 TO 9
                 MID$(V36$,4*(I-1)+1,4)=MKS$(0)
             NEXT I
             V32$=SPACE$(32)
             FOR I=1 TO 8
                 MID$(V32$,4*(I-1)+1,4)=MKS$(0)
             NEXT I
             V18$=SPACE$(18)
             FOR I=1 TO 9
                 MID$(V18$,2*(I-1)+1,2)=MKI$(0)
             NEXT I
             V16$=SPACE$(16)
             FOR I=1 TO 8
                 MID$(V16$,2*(I-1)+1,2)=MKI$(0)
             NEXT I

             FOR I=1 TO 24                                 ' INICIALIZA VENTAS X HORA 2
                 RHOR=372*(I-1)+MESDIA
                 GET#6,RHOR                                ' accesa
                 LSET VDL6$=V36$                           ' vector de ventas en importe por localizacion
                 LSET VUL6$=V18$                           ' vector de ventas en unidades por localizacion
                 LSET VDC6$=V32$                           ' vector de ventas en importe por categoria  
                 LSET VUC6$=V16$                           ' vector de ventas en unidades por categoria
                 LSET DI6$=SPACE$(26)                      ' disponible
                 PUT#6,RHOR
             NEXT I

     NEXT R
     BEEP
     RETURN

6999 ' $INCLUDE: 'R50GRL.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
