LPARAMETERS rutina

********************************************************

	gnConnHandle=SQLSTRINGCONNECT("Driver=SQL Server;Server=Victor;UID=adm;PWD=admadm;Database=MilleniumFox")

	TEXT TO vSql NOSHOW
		SELECT * FROM CuentaAux
	ENDTEXT

	nDev2 = SQLEXEC(gnConnHandle,vSql,'Cuentas')
	IF nDev2 = -1 THEN
		MESSAGEBOX('No fue posible consultar la tabla CuentasAux',16,'Mensaje de Advertencia')
		RETURN 
	ENDIF

********************************************************
DO CASE 
	CASE rutina = 1
		SELECT cuentas

		CAL_NIVEL() 
		sqldisconnect(gnConnHandle)

		
		  
	CASE rutina = 2

		SET SAFETY OFF 
		
		********************************************************		 
		TEXT TO vSql NOSHOW
			SELECT * FROM CuentaAux
		ENDTEXT

		nDev2 = SQLEXEC(gnConnHandle,vSql,'AuxCuentas')
		IF nDev2 = -1 THEN
			MESSAGEBOX('No fue posible consultar la tabla CuentasAux',16,'Mensaje de Advertencia')
			SQLROLLBACK(gnConnHandle)
			RETURN 
		ENDIF
		*******************************
		TEXT TO vSql NOSHOW
			DELETE FROM CUENTAAUX
		ENDTEXT

		nDev2 = SQLEXEC(gnConnHandle,vSql)
		IF nDev2 = -1 THEN
			MESSAGEBOX('No fue posible borrar el contenido de la tabla CuentasAux',16,'Mensaje de Advertencia')
			SQLROLLBACK(gnConnHandle)
			RETURN 
		ENDIF

		********************************************************

		SELECT AuxCuentas
		COPY TO c:\windows\temp\cuentas

		USE c:\windows\temp\cuentas.dbf 
		
		cal_total()

		SELECT cuentas
		INDEX ON CtaCod TO cuentaID
		Ins_sql()

		IF USED('cuentas')
			SELECT cuentas
			USE
		ENDIF 

		SQLCOMMIT(gnConnHandle)
		SQLDISCONNECT(gnConnHandle)
				 

		*********************************

ENDCASE  	  


* REAJUSTE POR NIVEL
  FUNCTION cal_nivel
  
  STORE  0 to m.total,m.debe,m.haber
  store  1 to m.ult_tit
  SELECT cuentas
  STORE  8 to m.nivel
  DO WHILE m.nivel > 0
  	 SELECT cuentas
     GO TOP
     DO WHILE !EOF()
        DO WHILE !EOF() AND cuentas.CtaNivAux > m.nivel
           IF cuentas.CtaAstAux = [S]
              STORE cuentas.CtaTotAux + m.total TO m.total
           ENDIF
           STORE recno() TO m.final
           SKIP
           IF !EOF()
              STORE  recno() TO m.final
           ENDIF
        ENDDO
        IF m.total <> 0
           GO m.ult_tit
           IF UPPER(cuentas.CtaAstAux) = 'S'
              WAIT WINDOW "La cuenta debe ser no asentable" TIME 5 
              * "+ allt(cta_cta)+ " " + allt(cta_nom)+ "  
           ENDIF
          
          **********************
          	sCue = cuentas.CtaIdAux
          	
           *//REPLACE 	cuentas.CtaTotAux   WITH m.total
           	TEXT TO vSql NOSHOW
				UPDATE    CUENTAAUX
				SET    CtaTotAux = ?m.total WHERE CtaIdAux = ?sCue
			ENDTEXT

			nDev2 = SQLEXEC(gnConnHandle,vSql)
			IF nDev2 = -1 THEN
				MESSAGEBOX('No fue posible Actualizar la tabla CuentasAux',16,'Mensaje de Advertencia')
			ENDIF

		  ************************
           STORE 0 TO m.total,m.debe, m.haber
           IF NOT EOF()
              GO m.final
           ENDIF
        ENDIF
        STORE RECNO() TO m.ult_tit
        IF NOT EOF()
           SKIP
        ENDIF
     ENDDO
     IF (m.total) <> 0
        GO m.ult_tit
        IF cuentas.CtaAstAux = 'S'
           WAIT WINDOW "La cuenta asentable" NOWAIT
           *"+cta_cta+" "+cta_nom+"
        ENDIF
        *******************************
        
      	sCue = cuentas.CtaIdAux
      	
       *//REPLACE 	cuentas.CtaTotAux   WITH m.total
       	TEXT TO vSql NOSHOW
			UPDATE    CUENTAAUX
			SET    CtaTotAux = ?m.total WHERE CtaIdAux = ?sCue
		ENDTEXT

		nDev2 = SQLEXEC(gnConnHandle,vSql)
		IF nDev2 = -1 THEN
			MESSAGEBOX('No fue posible Actualizar la tabla CuentasAux',16,'Mensaje de Advertencia')
		ENDIF

		*******************************
        STORE     0      TO   m.total,m.debe,m.haber
     ENDIF
     STORE m.nivel - 1 TO m.nivel
  ENDDO
  RETURN
  
  
  
  
FUNCTION Cal_total
SELECT cuentas
SET ORDER TO
DELETE TAG ALL
SELECT cuentas
GO TOP
DO WHILE !EOF()

	IF ALLTRIM(Cuentas.CtaAstAux) = "N" AND !empty(Cuentas.CtaIdAux)
		m.cod= Cuentas.CtaCod
		m.cta= Cuentas.CtaIdAux
		m.niv= Cuentas.CtaNivAux
		m.nom= cuentas.CtaNomAux
		m.tot= 0
		m.emp= cuentas.CtaEmpAux
		m.Usr= cuentas.CtaUsrAux
		SKIP
		REG= recno()
		DO WHILE Cuentas.CtaNivAux > m.niv AND;
		   	subs(Cuentas.CtaIdAux,1,1) = subs(m.cta,1,1) AND NOT EOF()
			m.tot= m.tot + Cuentas.CtaTotAux
			m.cod= Cuentas.CtaCod				
			SKIP
		ENDDO

		APPEND BLANK
		REPLACE cuentas.CtaCod		WITH m.cod + int(10/m.niv)-1,;
				cuentas.ctanomaux 	WITH "TOTAL..." + m.nom,;
				cuentas.ctatotaux	WITH m.tot,;
				cuentas.ctaastaux  	WITH "N",;
				cuentas.ctanivaux  	WITH m.niv,;
	 			cuentas.CtaEmpAux	WITH m.emp, ;
	 			cuentas.CtaUsrAux	WITH m.Usr, ;
				cuentas.CtaTipAux	WITH 1 
				
		GO REG
	ELSE
		SKIP		
	ENDIF	
ENDDO
RETURN
	 

FUNCTION Ins_sql
SELECT cuentas
SET ORDER TO cuentaID
GO TOP 
DO WHILE !EOF()
	_CtaIdAux 	= cuentas.CtaIdAux
	_CtaEmpAux	= cuentas.CtaEmpAux
	_CtaUsrAux	= cuentas.CtaUsrAux
	_CtaNomAux	= cuentas.CtaNomAux
	_CtaAstAux	= cuentas.CtaAstAux
	_CtaNatAux	= cuentas.CtaNatAux 
	_CtaNivAux	= cuentas.CtaNivAux
	_CtaDebAux	= cuentas.CtaDebAux
	_CtaHabAux	= cuentas.CtaHabAux
	_CtaTotAux	= cuentas.CtaTotAux
	_CtaTipAux	= cuentas.CtaTipAux
		
	TEXT TO vSql NOSHOW		
		INSERT INTO CUENTAAUX
            (CtaIdAux,CtaEmpAux,CtaUsrAux,CtaNomAux,CtaAstAux,CtaNatAux,CtaNivAux,CtaHabAux,CtaDebAux,CtaTotAux,CtaTipAux)
		VALUES     
			(?_CtaIdAux,?_CtaEmpAux,?_CtaUsrAux,?_CtaNomAux,?_CtaAstAux,?_CtaNatAux,?_CtaNivAux,?_CtaHabAux,?_CtaDebAux,?_CtaTotAux,?_CtaTipAux)
	ENDTEXT
	
	nDev2 = SQLEXEC(gnConnHandle,vSql,'Cuentas')
	IF nDev2 = -1 THEN
		MESSAGEBOX('No fue posible consultar la tabla CuentasAux',16,'Mensaje de Advertencia')
		SQLROLLBACK(gnConnHandle)
		RETURN 
	ENDIF
	SELECT cuentas
	SKIP 
ENDDO 
RETURN 				