Advertisement
idsystems

VFP_EjemploProgramacion

Sep 23rd, 2014
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 133.25 KB | None | 0 0
  1. *:*****************************************************************************
  2. *:
  3. *: Procedure file: C:\CONTA\CONEDFIN.PRG
  4. *:
  5. *: System: CONTA
  6. *: Author: NABS SYSTEMS & ID SYSTEMS
  7. *: Copyright (c) 1994, NABS SYSTEMS
  8. *: Last modified: 15/07/94 12:14
  9. *:
  10. *: Procs & Fncts: LLENADO
  11. *: : IMPRIME
  12. *: : SUBTOTAL
  13. *: : FILL
  14. *: : PIMPRIME
  15. *: : PFILL
  16. *: : PSUBTOTAL
  17. *:
  18. *: Set by: SELECCION (procedure in CONTA.PRG)
  19. *:
  20. *: Calls: DESPMEM (procedure in CONUTIL.PRG)
  21. *: : POPERROR() (function in CONUTIL.PRG)
  22. *: : VALMEM (procedure in CONUTIL.PRG)
  23. *: : V_FECHA() (function in CONREAUX.PRG)
  24. *: : REPORTE (procedure in CONREAUX.PRG)
  25. *: : CONFIGPRINT (procedure in CONUTIL.PRG)
  26. *: : CONRECOM.PRG
  27. *: : ERRTRAP (procedure in CONUTIL.PRG)
  28. *:
  29. *: Memory Files: &ARCHMEM
  30. *: : CONLPT1.MEM
  31. *: : CONCONFI.MEM
  32. *:
  33. *: Documented 18/08/94 at 12:24 FoxDoc version 2.10f
  34. *:*****************************************************************************
  35. *********************************************************************
  36. * CONEDFIN.PRG
  37. * Version 1.0 NABS Systems 30/Dic/93
  38. * Version 2.2
  39. * CopyRight(c) 1993
  40. * All Rights Reserved
  41. * Estados Financieros
  42. *********************************************************************
  43. * MOD: 14-Feb-94.. Arreglado y actualizado.
  44. * MOD: 01-Mar-94.. Revision de codigo para acortarlo y vision de cuentas
  45. * MOD: 07-Mar-94.. Detecta errores de impresion, se dividio en procedimientos
  46. * hace una sola vez el llenado de cuentas.
  47. * MOD: 09-Mar-94.. Para que el reporte navege paginas adelante y paginas
  48. * hacia atras.
  49. * MOD: 23-Mar-94.. Para visualizar el progreso de impresion.
  50. * Imprimir paginas especificas.
  51. * MOD: 07-Abr-94.. Correcion cuando memoria insuficiente por muchas paginas
  52. * Y otras actualizaciones
  53. * MOD: 13-Abr-94.. Correcion de informes parciales para presentar las
  54. * cantidades correctas.
  55. * MOD: 15-Abr-94.. Poner el tipo de cambio correcto con fecha descendente
  56. * MOD: 25-Abr-94.. Prevencion y Presentacion de algunos errores.
  57. * MOD: 04-May-94.. Nuevo procedimiento de llenado para hacer mas rapido
  58. * la generacion de reportes, llamado NEWFILL
  59. * MOD: 13-May-94.. Los reportes se actualizan en linea por lo que solo hay
  60. * que detectar si existen en caso de no hacerlo se generan
  61. * solo se dejo el codigo para compatibilidad. No se usa
  62. * NEWFILL.
  63. * MOD: 18-May-94.. Se descarta el uso de NEWFILL por no considerarlo confiable
  64. * asi como el proceso de reportes en linea. Se generara
  65. * siempre un reporte anual, y el parcial se modificara para
  66. * que presente lado a lado, los datos de la fecha parcial
  67. * y los datos acumulados de un reporte anual. Por lo que
  68. * para un parcial habra que generar un anual.
  69. * Revision y analisis del problema.
  70. * MOD: 20-May-94.. Revision general de codigo y analisis de algoritmo, ya
  71. * que los reportes se generarn dos veces para un parcial,
  72. * y el formato de reporte se modificara para presentar los
  73. * datos del anual y parcial en uno mismo. Procesar siempre
  74. * los datos cada vez que se genere para dar seguridad al
  75. * usuario. Se eliminaran lineas de codigo para hacerlo mas
  76. * legible y ciertos procesos agregados se quitaran. El
  77. * programa hasta esta version estara bajo el nombre de
  78. * CONEDFIN.OLD.
  79. * MOD: 25-May-94.. Terminacion de revision de programa con nuevos procedi-
  80. * mientos.
  81. * MOD: 22-Jun-94.. Modificacion de codigo para terminar con nuevos proce-
  82. * MOD: 23-Jun-94.. dimientos y tratar de reducir el codigo del mismo median
  83. * te uso de procedimientos y variables publicas.
  84. * MOD: 04-Jul-94.. Correcion de impresion de resultados condensados.
  85. * MOD: 08-Jul-94.. Agregar el boton para generar reporte comparativo
  86. * MOD: 15-Jul-94.. Cambiar el modo de despliegue de 25 a 50 lineas.
  87. * MOD: 15-Nov-94.. Asegurarse de que cuando regrese al menu restaura la
  88. * pantalla a 25 lineas, poniendo SET DISPLAY TO VGA25
  89. * Error de visualizacion en barra de status cuando calcula
  90. * no limpiandose correctamente. Corregido.
  91. * MOD: 06-Dic-94.. Correcion de visualizacion pues no restauraba de 50 a
  92. * 25 lineas.
  93. * Se quito una linea de validacion de la fecha para
  94. * permitir sacar reportes parciales a cualquier fecha
  95. * tomando la fecha de inicio del ejercicio en lugar de la
  96. * fecha de periodo. Esta variable se llamda DESDE y esta
  97. * en la rutina de validacion V_FECHA de las fechas
  98. * MOD: 10-Dic-94.. Correcion del reporte para que cuando se genere un parcial
  99. * se puedan ver los MOVIMIENTOS en ese MES y el anual,
  100. * muestre todos los movimientos hasta la fecha FINAL
  101. * especificada pero desde el inicio del ejercicio, para
  102. * permitir que arrastre los saldos de los demas meses.
  103.  
  104. CLEAR PROGRAM
  105. RELEASE WINDOWS ALL
  106. DO despmem
  107. SAVE SCREEN TO ANTERIOR
  108. **************************
  109. * Determinar los archivos de sistema, verificar su existencia
  110. *
  111. ARCHIVO1 = TRIM (V_CAMINO) + "\" + "CONAUXPS.DBF"
  112. ARCHIVO2 = TRIM (V_CAMINO) + "\" + "CONAUXDS.DBF"
  113. ARCHIVO3 = TRIM (V_CAMINO) + "\" + "CUENTAS.DBF"
  114. ARCHIVO4 = TRIM (V_CAMINO) + "\" + "CONTEMP.DBF"
  115. ARCHIVO5 = TRIM (V_CAMINO) + "\" + "CONMAIN.DBF"
  116. ARCHIVO6 = TRIM (V_CAMINO) + "\" + "CONHISTO.DBF"
  117. archivo7 = TRIM (V_CAMINO) + "\" + "CONSAL.DBF"
  118. archivo8 = TRIM (V_CAMINO) + "\" + "CONREPO.DBF"
  119. archivo9 = TRIM (v_camino) + "\" + "CONREP2.DBF"
  120. indice1 = TRIM( v_camino ) + "\CONAUXPS.CDX"
  121. indice2 = TRIM( v_camino ) + "\CONAUXDS.CDX"
  122. indice3 = TRIM( v_camino ) + "\CUENTAS.CDX"
  123. indice5 = TRIM( v_camino ) + "\CONMAIN.CDX"
  124. indice6 = TRIM( v_camino ) + "\CONHISTO.CDX"
  125. IF !FILE(archivo1) .OR. !FILE(archivo2) .OR. !FILE(archivo3) .OR. ;
  126. !FILE(archivo4) .OR. !FILE(archivo5) .OR. !FILE(archivo6)
  127. =Poperror("ADVERTENCIA: NO HAY ARCHIVOS DE ESTA EMPRESA!!")
  128. CLOSE DATA
  129. RESTORE SCREEN FROM anterior
  130. RETURN
  131. ENDIF
  132. IF !FILE( indice1 ) .OR. !FILE( indice2 ) .OR. !FILE( indice3 ) ;
  133. .OR. !FILE( indice5 ) .OR. !FILE( indice6 )
  134. =Poperror("ADVERTENCIA: AL MENOS UNO DE LOS ARCHIVOS NO ESTAN ORDENADOS... Vaya a Mantenimiento y REINDEXE!")
  135. CLOSE DATA
  136. RESTORE SCREEN FROM anterior
  137. RETURN
  138. ENDIF
  139. RELEASE col, pagina, bandera, p_sele1, v_dentro, areat, v_infor
  140. ON READERROR
  141. PUBLIC col, pagina, bandera, p_sele1, v_dentro, areat, v_infor
  142. STORE 0 to CAMBIO, areat, v_infor
  143. * Busqueda del Archivo ConConse.Mem
  144. ARCHMEM = TRIM (V_CAMINO) + "\" + "CONCONSE.MEM"
  145. IF !FILE (ARCHMEM)
  146. =Valmem( archmem )
  147. ELSE
  148. RESTORE FROM &ARCHMEM ADDITIVE
  149. ENDIF
  150. RESTORE FROM CONLPT1 ADDITIVE
  151. IF P_TIPOCARR = 1
  152. COL = 80
  153. ELSE
  154. COL = 136
  155. ENDIF
  156. ******* MANEJO DE LOS COLORES
  157. RESTORE FROM CONCONFI ADDITIVE
  158. colorini = IIF( acolores, [N/W,W+/B], [N/W,W+/N] )
  159. colordial = IIF( acolores, [N+/W, N+/W, N+/W, GR+/W, W/B, W+/R, R/W], [N+/W, N+/W, N+/W, GR+/W, W/B, W+/R, R/W] )
  160. colordia1 = IIF( acolores, [,,,,,GR+/N,R/B,,R/W,W/B], [,,,,,GR+/N,R/B,,R/W,W/B] )
  161. colordia2 = IIF( acolores, [,R/W,,,,GR+/N,R/B,,R/W,W/B], [,R/W,,,,GR+/N,R/B,,R/W,W/B] )
  162. colorread = IIF( acolores, [,GR+/N], [,GR+/N] )
  163. colorvent = IIF( acolores, [W+/B], [W+/N] )
  164. colormens = IIF( acolores, [W+/RB], [N/W] )
  165. colorven2 = IIF( acolores, [N+/W, N+/W, N+/W, GR+/W, W/B, W+/R, R/W], [N+/W, N+/W, N+/W, GR+/W, W/B, W+/R, R/W] )
  166. colorrea2 = IIF( acolores, [,N/W], [,N/W] )
  167. colorimp = IIF( acolores, "W+/G, W+/G, W+/G, W+/G, W+/G", "W+/G, W+/G, W+/G, W+/G, W+/G" )
  168. SET COLOR TO (colorini)
  169. DEFINE WINDOW PIMPRESION FROM INT((SROW()-13)/2),INT((SCOL()-61)/2) ;
  170. TO INT((SROW()-13)/2)+12,INT((SCOL()-61)/2)+60 ;
  171. TITLE " PARAMETROS IMPRESION " NOFLOAT NOCLOSE SHADOW ;
  172. COLOR (colordial)
  173. DESDE = PFECHAPERT
  174. HASTA = PFECHCIERRE
  175. A_FechaIni = DESDE
  176. A_FechaFin = HASTA
  177. p_sele1 = 1
  178. v_dentro = .F.
  179. STORE 0 TO p_pini, p_pfin
  180. p_print = 1
  181. DO WHILE .T.
  182. SET DISPLAY TO VGA25
  183. ACTIVATE WINDOW PIMPRESION
  184. @ 0,3 SAY "Impresi¢n:"
  185. @ 1,3 GET P_Sele1 PICTURE "@*RVN Pantalla;Impresora" SIZE 1,13,0 DEFAULT 1 COLOR (colordia1) VALID V_Fecha()
  186. @ 0,22 SAY "Informe:"
  187. @ 1,22 GET Informe PICTURE "@*RVN Parcial;Anual " DEFAULT 1 COLOR (colordia1) VALID V_Fecha()
  188. @ 0,42 SAY "Documento:"
  189. @ 1,42 GET p_print PICTURE "@*RVN Todo ;Por Paginas" DEFAULT 1 COLOR (colordia1)
  190. @ 4,3 SAY "Nivel: " SIZE 1,15, 0
  191. @ 5,3 GET P_Nivel PICTURE "@*RVN Cuenta;SCta;SSCta;SSSCta" ;
  192. SIZE 1,10,0 DEFAULT 1 COLOR (colordia1)
  193. @ 4,22 SAY "Fecha:"
  194. * @ 5,22 SAY "De: " GET A_FechaIni RANGE Desde, Hasta COLOR (colordia2)
  195. * @ 7,22 SAY "A : " GET A_FechaFin RANGE Desde, Hasta COLOR (colordia2)
  196. @ 5,22 SAY "De: " GET A_FechaIni COLOR (colordia2)
  197. @ 7,22 SAY "A : " GET A_FechaFin COLOR (colordia2)
  198. @ 4,42 SAY "Paginas:"
  199. @ 5,42 say "De: " GET p_pini PICTURE "9999" WHEN p_print=2 COLOR (colordia2)
  200. @ 7,42 SAY "A : " GET p_pfin PICTURE "9999" WHEN p_print=2 COLOR (colordia2)
  201. @ 10,2 GET Selec3 ;
  202. PICTURE "@*HT \!OK;\?Cancela;Configura;Rep. Comp." SIZE 1,11,3 DEFAULT 1 COLOR (colordia1)
  203. @ 9,0,9,58 BOX "ÚÄ¿³ÙÄÀ³Á"
  204. READ CYCLE COLOR (colorread)
  205. DO CASE
  206. CASE Selec3 = 1
  207. DEACTIVATE WINDOW PIMPRESION
  208. DO REPORTE
  209. CASE Selec3 = 3
  210. DO CONFIGPRINT
  211. CASE Selec3 = 4
  212. DO conrecom
  213. OTHERWISE
  214. EXIT
  215. ENDCASE
  216. ENDDO
  217. DEACTIVATE WINDOW ALL
  218. RELEASE WINDOW pimpresion, pantalla, status, imprimir
  219. RELEASE col, pagina, bandera, p_sele1, v_dentro, areat, v_infor, sp
  220. SET DISPLAY TO VGA25
  221. CLOSE DATA
  222. ON ESCAPE
  223. ON ERROR DO ERRTRAP WITH PROGRAM(), LINENO(), ERROR(), MESSAGE(), MESSAGE(1)
  224. DO despmem
  225. RETURN
  226.  
  227. ***********************************************
  228. * FUNCIONES PROPIAS DE LA CAJA DE DIALOGO
  229. ***********************************************
  230. *!*****************************************************************************
  231. *!
  232. *! Function: V_FECHA()
  233. *!
  234. *! Called by: CONREAUX.PRG
  235. *! : CONRECON.PRG
  236. *! : CONEDFIN.PRG
  237. *! : CONRETEN.PRG
  238. *! : CONRERAS.PRG
  239. *! : CONRETIP.PRG
  240. *! : CONRECOM.PRG
  241. *!
  242. *!*****************************************************************************
  243. FUNCTION V_Fecha
  244. * Fechas Tope = Apertura y Cierre Ejercicio
  245.  
  246. * Cuando Pantalla y Parcial -> Default = Periodo Abierto; SIN TOPE
  247. * Cuando Impresora y Parcial -> Default = Desde 30 Dias antes de 1 Dia antes del Dia de la apertura del periodo abierto actual
  248. * Hasta 1 Dia antes de la apertura del periodo abierto actual
  249. * Tope = Hasta 1 Dia antes de la apertura del periodo abierto actual
  250.  
  251. * Cuando Pantalla y Anual -> Default = Desde Apertura Hasta Cierre Ejercicio; SIN TOPE
  252. * Cuando Impresora y Anual -> Default = Desde Apertura Hasta 1 Dia antes de la apertura del periodo abierto actual
  253. * Tope = Hasta 1 Dia antes de la apertura del periodo abierto actual
  254.  
  255. IF Informe = 1 AND P_Sele1 = 1 && Parcial en Pantalla
  256. * La linea siguiente se elimina para poder sacar parciales a cualquier fecha
  257. * Desde = PFECHAPERT
  258. Desde = pfechiniej
  259. Hasta = PFECHCIERRE
  260. A_FechaIni = Desde
  261. A_FechaFin = Hasta
  262. @ 5,22 SAY "De: " + DTOC (A_FechaIni)
  263. @ 7,22 SAY "A : " + DTOC (A_FechaFin)
  264. ENDIF
  265. IF Informe = 2 AND P_Sele1 = 1 && Anual en Pantalla
  266. Desde = PFECHINIEJ
  267. Hasta = PFECHFINEJ
  268. A_FechaIni = Desde
  269. A_FechaFin = Hasta
  270. @ 5,22 SAY "De: " + DTOC (A_FechaIni)
  271. @ 7,22 SAY "A : " + DTOC (A_FechaFin)
  272. ENDIF
  273. **** Momentaneamente se inhiben estas opciones OK?
  274. *IF Informe = 1 AND P_Sele1 = 2 && Parcial en Impresora
  275. * Desde = PFECHAPERT-29
  276. * Hasta = PFECHAPERT-1
  277. * A_FechaIni = Desde
  278. * A_FechaFin = Hasta
  279. * @ 5,22 SAY "De: " + DTOC (A_FechaIni)
  280. * @ 7,22 SAY "A : " + DTOC (A_FechaFin)
  281. *ENDIF
  282. *IF Informe = 2 AND P_Sele1 = 2 && Anual en Impresora
  283. * Desde = PFECHINIEJ
  284. * Hasta = PFECHAPERT-1
  285. * A_FechaIni = Desde
  286. * A_FechaFin = Hasta
  287. * @ 5,22 SAY "De: " + DTOC (A_FechaIni)
  288. * @ 7,22 SAY "A : " + DTOC (A_FechaFin)
  289. *ENDIF
  290. *************************************
  291. IF Informe = 1 AND P_Sele1 = 2 && Parcial en Pantalla
  292. * Desde = PFECHAPERT
  293. Desde = pfechiniej
  294. Hasta = PFECHCIERRE
  295. A_FechaIni = Desde
  296. A_FechaFin = Hasta
  297. @ 5,22 SAY "De: " + DTOC (A_FechaIni)
  298. @ 7,22 SAY "A : " + DTOC (A_FechaFin)
  299. ENDIF
  300. IF Informe = 2 AND P_Sele1 = 2 && Anual en Pantalla
  301. Desde = PFECHINIEJ
  302. Hasta = PFECHFINEJ
  303. A_FechaIni = Desde
  304. A_FechaFin = Hasta
  305. @ 5,22 SAY "De: " + DTOC (A_FechaIni)
  306. @ 7,22 SAY "A : " + DTOC (A_FechaFin)
  307. ENDIF
  308. RETURN .T.
  309. ***********************************************
  310.  
  311. *!*****************************************************************************
  312. *!
  313. *! Procedure: REPORTE
  314. *!
  315. *! Called by: CONREAUX.PRG
  316. *! : CONRECON.PRG
  317. *! : CONEDFIN.PRG
  318. *! : CONRECAT.PRG
  319. *! : CONRETEN.PRG
  320. *! : CONRERAS.PRG
  321. *! : CONRETIP.PRG
  322. *! : CONRECOM.PRG
  323. *!
  324. *! Calls: STOPPRINT (procedure in CONREAUX.PRG)
  325. *! : CIV_TIME() (function in CONUTIL.PRG)
  326. *! : ENCABEZADO (procedure in CONREAUX.PRG)
  327. *! : MUESTRA (procedure in CONREAUX.PRG)
  328. *! : DETECTA (procedure in CONREAUX.PRG)
  329. *! : DESPMEM (procedure in CONUTIL.PRG)
  330. *! : NOMMES() (function in CONUTIL.PRG)
  331. *! : LLENADO (procedure in CONEDFIN.PRG)
  332. *! : IMPRIME (procedure in CONEDFIN.PRG)
  333. *! : PIMPRIME (procedure in CONEDFIN.PRG)
  334. *! : FOOTER (procedure in CONRERAS.PRG)
  335. *!
  336. *! Uses: CUENTAS.DBF
  337. *! : CONAUXPS.DBF
  338. *! : CONMAIN.DBF
  339. *! : CONAUXDS.DBF
  340. *! : TEMPO.DBF
  341. *! : TENENCIA.DBF
  342. *! : ARCHIVO1.DBF
  343. *! : ARCHIVO2.DBF
  344. *! : COMPARA.DBF
  345. *!
  346. *! Indexes: POLIZA (tag in CONHELP.CDX)
  347. *!
  348. *!*****************************************************************************
  349. PROCEDURE REPORTE
  350. DO despmem
  351. STORE 0 TO ingresos, gastos, gastosfin, impuestos, circulante, cxc, inventario, afijo, otroactivo, pasivoxadqn
  352. STORE 0 TO cobrosanticip, consumos, impuesto2, prestamos, continrep, continaisladas, ordinario, preferente, utejercicio
  353. STORE 0 TO utretenida, suppagado, v_supdonado, utsresulter, activototal, pasivototal, contingencias, capitaltotal
  354. STORE 0 TO GLOBALCARGOS, GLOBALABONOS, V_SALDO, TOTACTIVO, TOTPASIVO, TOTCONTIN, TOTCAPIT, SWITCH1, DIFCTSPTE, acu
  355. PAGINA = 1
  356. totpag = 1
  357. LINEA = 7
  358. c = 1
  359. * DEFINE WINDOW status FROM 10,10 TO 15,70 SHADOW COLOR W+/GR
  360. DEFINE WINDOW status FROM 5,10 TO 21,70 SHADOW DOUBLE ;
  361. TITLE " Generando Estados Financieros " ;
  362. FOOTER " ­ NO INTERRUMPIR ! " COLOR (colordial)
  363. ACTIVATE WINDOW status
  364. @ 0,5,3,WCOLS()-5 BOX "Õ͸³¾ÍÔ³ "
  365. @ 1,6 SAY "De: " + STR( DAY( a_fechaini ), 2 ) + "," + TRIM( NOMMES( a_fechaini ) ) + "," + STR( YEAR( a_fechaini ), 4 )
  366. @ 2,6 SAY " A: " + STR( DAY( a_fechafin ), 2 ) + "," + TRIM( NOMMES( a_fechafin ) ) + "," + STR( YEAR( a_fechafin ), 4 )
  367. @ 5,10 SAY "Procesando cuentas"
  368. @ 6,10 SAY "Calculando Saldos de Cuentas en Pesos"
  369. @ 7,10 SAY "Calculando Saldos de Cuentas en Dolares"
  370. @ 10,10 SAY REPLICATE( "°", 40 )
  371. IF informe # v_infor
  372. v_infor = informe
  373. v_dentro = .F.
  374. ENDIF
  375. ****************************************************************************
  376. NOTE : Anteriormente se verificaba si el usuario habia vuelto a seleccionar;
  377. el mismo tipo de reporte, para no tener que repetir el proceso de ;
  378. busqueda en los archivos. ;
  379. Despues se penso en tener los archivos en linea por lo que se genero;
  380. el siguiente algoritmo (que a la version 2.2 fue eliminado: ;
  381. SI EL INFORME = PARCIAL ;
  382. SI NO EXISTE EL ARCHIVO DE PARCIAL ;
  383. HACER PROCEDIMIENTO DE LLENADO ;
  384. SINO ;
  385. ABRIR DICHO ARCHIVO DE REPORTE Y USARLO ;
  386. FIN CONDICION ;
  387. SINO ;
  388. (REPETIR LO MISMO PERO CON ARCHIVO ANUAL) ;
  389. FIN CONDICION ;
  390. *************************************************************************
  391. IF !v_dentro
  392. IF v_infor = 1
  393. DO llenado && procesar llenado
  394. ELSE
  395. DO llenado && llenado anterior
  396. ENDIF
  397. ENDIF
  398. IF informe = 2
  399. DO imprime
  400. ELSE
  401. DO pimprime
  402. ENDIF
  403. IF P_Sele1 = 2
  404. EJECT
  405. SET DEVI TO SCREEN
  406. SET PRINTER OFF
  407. ENDIF
  408. SET CURSOR ON
  409. DEACTIVATE WINDOW BALANZA, pantalla, imprimir
  410. RESTORE SCREEN FROM ANTERIOR
  411. SET CLOCK TO 1,1
  412. SET CLOCK ON
  413. RETURN
  414.  
  415. ***************************************************
  416. * P R O C E D I M I E N T O S
  417. ***************************************************
  418.  
  419. *!*****************************************************************************
  420. *!
  421. *! Procedure: LLENADO
  422. *!
  423. *! Called by: REPORTE (procedure in CONREAUX.PRG)
  424. *!
  425. *! Calls: DESPMEM (procedure in CONUTIL.PRG)
  426. *! : FILL (procedure in CONEDFIN.PRG)
  427. *! : PFILL (procedure in CONEDFIN.PRG)
  428. *!
  429. *!*****************************************************************************
  430. PROCEDURE Llenado
  431. DO despmem
  432. *********************
  433. * Abrir los archivos del sistema para procesarlos
  434. *
  435. USE (ARCHIVO1) IN 1
  436. USE (ARCHIVO2) IN 2
  437. USE (ARCHIVO3) IN 3 ORDER CLAVECTA
  438. USE (ARCHIVO4) IN 4
  439. USE (ARCHIVO5) IN 5
  440. USE (ARCHIVO6) IN 6 ORDER fechacont
  441. ***********************************************************************
  442. NOTE : Aqui entrara el nuevo algoritmo de procesamiento de reportes, ;
  443. Hay que tener dos condiciones: ;
  444. ;
  445. 1) SI EL REPORTE ES ANUAL ;
  446. Se debe crear un archivo temporal que se usara al imprimir. ;
  447. Se procesara mediante un query los saldos. ;
  448. ;
  449. 2) SI EL REPORTE ES PARCIAL ;
  450. Se creara un archivo temporal para el reporte parcial Y ;
  451. Se creara el archivo temporal anterior como reporte anual ;
  452. Se procesara tanto datos parciales como anuales ;
  453. (Se tardara mas, pero se usaran queries para hacerlo ;
  454. lo mas rapido posible) ;
  455. ***********************************************************************
  456. STORE 0 TO v_saldo, v_cargo, v_abono, v_saldll
  457. IF informe = 2
  458. CREATE TABLE (archivo8) ;
  459. (clavecta C(13), nombcta C(50), moneda C(1), pertenen C(2), tipo C(1), ubicacion N(3), saldodll N(15,2), saldo N(15,2), cargo N(15,2), abono N(15,2) )
  460. USE (archivo8) ALIAS ANUAL
  461. areat = SELECT()
  462. DO fill
  463. ENDIF
  464. IF informe = 1
  465. CREATE TABLE (archivo9) ;
  466. (clavecta C(13), nombcta C(50), moneda C(1), pertenen C(2), tipo C(1), ubicacion N(3), saldodll N(15,2), saldo N(15,2), cargo N(15,2), abono N(15,2) )
  467. USE (archivo9) ALIAS PARCIAL
  468. areas = SELECT()
  469. DO pfill
  470. CREATE TABLE (archivo8) ;
  471. (clavecta C(13), nombcta C(50), moneda C(1), pertenen C(2), tipo C(1), ubicacion N(3), saldodll N(15,2), saldo N(15,2), cargo N(15,2), abono N(15,2) )
  472. USE (archivo8) ALIAS ANUAL
  473. areat = SELECT()
  474. DO fill
  475. **************************
  476. * El proceso en el parcial que mandara anexar los datos de los saldos
  477. * al cerrar un periodo ya no se tomara en cuenta.
  478. *
  479. ** IF FILE(archivo7)
  480. ** SELECT (areat)
  481. ** APPEND FROM (archivo7) FIELDS clavecta, saldodll, saldo, cargo, abono &&TYPE DELIMITED
  482. ** GO TOP
  483. ** ENDIF
  484. ENDIF
  485. FOR x = 1 TO 6
  486. SELECT (x)
  487. USE
  488. NEXT
  489. DEACTIVATE WINDOW status
  490. RELEASE WINDOW status
  491. v_dentro = .T.
  492. RETURN
  493.  
  494. *!*****************************************************************************
  495. *!
  496. *! Procedure: IMPRIME
  497. *!
  498. *! Called by: REPORTE (procedure in CONREAUX.PRG)
  499. *!
  500. *! Calls: STOPPRINT (procedure in CONREAUX.PRG)
  501. *! : CIV_TIME() (function in CONUTIL.PRG)
  502. *! : ENCABEZADO (procedure in CONREAUX.PRG)
  503. *! : MUESTRA (procedure in CONREAUX.PRG)
  504. *! : DETECTA (procedure in CONREAUX.PRG)
  505. *! : SUBTOTAL (procedure in CONEDFIN.PRG)
  506. *!
  507. *!*****************************************************************************
  508. PROCEDURE Imprime
  509. *************************************************************************
  510. NOTE : El proceso para de dise¤o del reporte cambiara, porque se generan ;
  511. dos tipos para cada uno. El ANUAL seguira como hasta ahora, pero ;
  512. el PARCIAL debe ponerse datos del proceso ANUAL y PARCIAL en dos ;
  513. columnas, por lo que se modifica la presentacion.;
  514. *************************************************************************
  515. RELEASE ALL
  516. SET PROCEDURE TO conutil
  517. DO CASE
  518. CASE p_nivel = 1
  519. SELECT (areat)
  520. v = RECCOUNT()
  521. totpag = ( ( RECCOUNT() + 220 ) / 1.5 ) / 55
  522. IF ROUND( totpag, 1 ) > 0
  523. totpag = INT( totpag ) + 1
  524. ELSE
  525. totpag = 1
  526. ENDIF
  527. tiempo = ( ( reccount() * 2 ) + 36 )
  528. min = tiempo / 60
  529. hor = int( min / 60 )
  530. seg = MOD( tiempo, 60 )
  531. min2 = MOD( min, 60 )
  532. v_totpag = totpag + 1
  533. DIMENSION scrpan( v_totpag )
  534. CASE p_nivel = 2
  535. SELECT (areat)
  536. v = RECCOUNT()
  537. totpag = ( ( RECCOUNT() + 220 ) / 1.2 ) / 55
  538. IF ROUND( totpag, 1 ) > 0
  539. totpag = INT( totpag ) + 1
  540. ELSE
  541. totpag = 1
  542. ENDIF
  543. tiempo = ( ( reccount() * 2 ) + 36 )
  544. min = tiempo / 60
  545. hor = int( min / 60 )
  546. seg = MOD( tiempo, 60 )
  547. min2 = MOD( min, 60 )
  548. v_totpag = totpag + 1
  549. DIMENSION scrpan( v_totpag )
  550. CASE p_nivel = 3
  551. SELECT (areat)
  552. v = RECCOUNT()
  553. totpag = ( ( RECCOUNT() + 220 ) ) / 55
  554. IF ROUND( totpag, 1 ) > 0
  555. totpag = INT( totpag ) + 1
  556. ELSE
  557. totpag = 1
  558. ENDIF
  559. tiempo = ( ( reccount() * 2 ) + 36 )
  560. min = tiempo / 60
  561. hor = int( min / 60 )
  562. seg = MOD( tiempo, 60 )
  563. min2 = MOD( min, 60 )
  564. v_totpag = totpag + 1
  565. DIMENSION scrpan( v_totpag )
  566. CASE p_nivel = 4
  567. SELECT (areat)
  568. v = RECCOUNT()
  569. totpag = ( RECCOUNT() + 220 ) / 55
  570. IF ROUND( totpag, 1 ) > 0
  571. totpag = INT( totpag ) + 1
  572. ELSE
  573. totpag = 1
  574. ENDIF
  575. tiempo = ( ( reccount() * 2 ) + 36 )
  576. min = tiempo / 60
  577. hor = int( min / 60 )
  578. seg = MOD( tiempo, 60 )
  579. min2 = MOD( min, 60 )
  580. v_totpag = totpag + 1
  581. DIMENSION scrpan( v_totpag )
  582. ENDCASE
  583. cadena = "00"
  584. cad = iif( hor<10, stuff(cadena,2,1,str(hor,1)),stuff(cadena,1,2,str(hor,2))) + ":" +;
  585. iif( min2<10, stuff(cadena,2,1,str(min2,1)),stuff(cadena,1,2,str(min2,2))) + ":" +;
  586. iif( seg<10, stuff(cadena,2,1,str(seg,1)),stuff(cadena,1,2,str(seg,2)))
  587. elap = "00:00:00"
  588. porcen = 0
  589. IF P_Sele1 = 2
  590. ON ESCAPE DO Stopprint WITH "ESC"
  591. * ON ERROR DO Stopprint WITH "ERR"
  592. IF .NOT. PRINTSTATUS()
  593. DO Stopprint WITH "OUT"
  594. ENDIF
  595. DEFINE WINDOW imprimir FROM 10,10 TO 18,70 SHADOW TITLE " Imprimiendo " COLOR (colorimp)
  596. ACTIVATE WINDOW imprimir
  597. @ 0,20 SAY "Estimado: " + cad
  598. @ 1,20 SAY "Comienzo: " + CIV_TIME( TIME() )
  599. @ 2,20 SAY " Actual: "
  600. @ 4,0 SAY PADC("Pagina: " + LTRIM(STR(pagina)) + "/" + LTRIM(STR(totpag)), WCOLS() )
  601. @ 5,8 SAY REPLICATE("°", 45 )
  602. @ 6,0 SAY PADC( STR(porcen,3) + "%", WCOLS() )
  603. SET PRINT ON
  604. SET MARGIN TO 0
  605. SET DEVICE TO PRINTER
  606. ELSE
  607. SET PRINT OFF
  608. SET DEVICE TO SCREEN
  609. DEFINE WINDOW pantalla FROM 0,0 TO 66,81 "-","-",chr(8),chr(8),chr(8),chr(8),chr(8),chr(8);
  610. FOOTER " ESC = Cancela BACKSPACE = Pag.Prev. ENTER = Sig.Pag. " ;
  611. COLOR (colorvent)
  612. SET COLOR TO (colorvent)
  613. SET CLOCK OFF
  614. CLEAR
  615. HIDE POPUP ALL
  616. HIDE MENU ALL
  617. SET CURSOR OFF
  618. SET DISPLAY TO VGA50
  619. ACTIVATE WINDOW pantalla
  620. ENDIF
  621. IF p_print = 1
  622. p_pini = 1
  623. p_pfin = totpag
  624. ELSE
  625. IF p_pini = 0
  626. p_pini = 1
  627. ENDIF
  628. IF p_pfin = 0
  629. p_pfin = totpag
  630. ENDIF
  631. ENDIF
  632. DO ENCABEZADO
  633. SELECT ANUAL
  634. SET FILTER TO
  635. GO TOP
  636. STORE 0 TO saldodeudor, saldoacreedor, z, new
  637. f2 = .F.
  638. DO CASE
  639. CASE p_nivel = 1
  640. f1 = .T.
  641. cod = LEFT( clavecta, 4 )
  642. principal = nombcta
  643. adonde = pertenen
  644. location = ubicacion
  645. totsaldo = 0
  646. c = 1
  647. DO WHILE !EOF()
  648. IF p_sele1 = 2
  649. DO muestra WITH c, v, pagina, totpag
  650. ENDIF
  651. totsaldo = totsaldo + saldo
  652. location = ubicacion
  653. SKIP
  654. c = c + 1
  655. IF LEFT(clavecta, 4 ) = cod
  656. LOOP
  657. ELSE
  658. IF pagina >= p_pini .AND. pagina <= p_pfin
  659. @ linea, 0 SAY principal
  660. ENDIF
  661. IF moneda = "D"
  662. IF pagina >= p_pini .AND. pagina <= p_pfin
  663. @ linea, col - 40 SAY TRANSFORM( saldodll, "999,999,999,999.99" )
  664. ENDIF
  665. ENDIF
  666. IF pagina >= p_pini .AND. pagina <= p_pfin
  667. @ linea, col - 20 SAY TRANSFORM( totsaldo, "999,999,999,999.99" )
  668. ENDIF
  669. linea = linea + 1
  670. DO Detecta
  671. IF tipo = "D"
  672. saldodeudor = saldodeudor + totsaldo
  673. ELSE
  674. saldoacreedor = saldoacreedor + totsaldo
  675. ENDIF
  676. cod = LEFT( clavecta, 4 )
  677. principal = nombcta
  678. totsaldo = 0
  679. ENDIF
  680. IF ubicacion # location
  681. DO CASE
  682. CASE pertenen = "ER" .AND. location = 1
  683. ingresos = saldoacreedor - saldodeudor
  684. DO subtotal WITH ingresos, " TOTAL DE INGRESOS:"
  685. STORE 0 TO saldodeudor, saldoacreedor
  686. CASE pertenen = "ER" .AND. location = 3
  687. gastos = saldodeudor - saldoacreedor
  688. DO subtotal WITH gastos, " TOTAL DE GASTOS NO FINANCIEROS:"
  689. STORE 0 TO saldodeudor, saldoacreedor
  690. CASE pertenen = "ER" .AND. location = 4
  691. gastosfin = saldodeudor - saldoacreedor
  692. DO subtotal WITH gastosfin, " TOTAL DE GASTOS FINANCIEROS:"
  693. STORE 0 TO saldodeudor, saldoacreedor
  694. CASE pertenen = "BG" .AND. location = 6
  695. impuestos = saldodeudor - saldoacreedor
  696. DO subtotal WITH impuestos, " TOTAL DE IMPUESTOS:"
  697. STORE 0 TO saldodeudor, saldoacreedor
  698. CASE pertenen = "BG" .AND. location = 1
  699. circulante = saldodeudor - saldoacreedor
  700. DO subtotal WITH circulante, " TOTAL DE ACTIVOS CIRCULANTES:"
  701. STORE 0 TO saldodeudor, saldoacreedor
  702. CASE pertenen = "BG" .AND. location = 2
  703. cxc = saldodeudor - saldoacreedor
  704. DO subtotal WITH cxc, " TOTAL DE CUENTAS POR COBRAR:"
  705. STORE 0 TO saldodeudor, saldoacreedor
  706. CASE pertenen = "BG" .AND. location = 3
  707. inventario = saldodeudor - saldoacreedor
  708. DO subtotal WITH inventario, " TOTAL DE INVENTARIOS:"
  709. STORE 0 TO saldodeudor, saldoacreedor
  710. CASE pertenen = "BG" .AND. location = 4
  711. * afijo = saldoacreedor - saldodeudor
  712. afijo = saldodeudor - saldoacreedor
  713. DO subtotal WITH afijo, " TOTAL DE ACTIVO FIJO:"
  714. STORE 0 TO saldodeudor, saldoacreedor
  715. CASE pertenen = "BG" .AND. location = 5
  716. otroactivo = saldodeudor - saldoacreedor
  717. DO subtotal WITH otroactivo, " TOTAL DE OTROS ACTIVOS:"
  718. STORE 0 TO saldodeudor, saldoacreedor
  719. CASE pertenen = "BG" .AND. location = 7
  720. pasivoxadqn = saldoacreedor - saldodeudor
  721. DO subtotal WITH pasivoxadqn, " TOTAL PASIVOS X ADQUISICIONES:"
  722. STORE 0 TO saldodeudor, saldoacreedor
  723. CASE pertenen = "BG" .AND. location = 8
  724. cobrosanticip = saldoacreedor - saldodeudor
  725. DO subtotal WITH cobrosanticip, " TOTAL PASIVO POR COBROS ANTICIPADOS:"
  726. STORE 0 TO saldodeudor, saldoacreedor
  727. CASE pertenen = "BG" .AND. location = 9
  728. consumos = saldoacreedor - saldodeudor
  729. DO subtotal WITH consumos, " PASIVO POR ADQN. BIENES DE CONSUMO:"
  730. STORE 0 TO saldodeudor, saldoacreedor
  731. CASE pertenen = "BG" .AND. location = 10
  732. impuesto2 = saldoacreedor - saldodeudor
  733. DO subtotal WITH impuesto2, "PASIVOS CONTRAACTUALES E IMPOSITIVOS:"
  734. STORE 0 TO saldodeudor, saldoacreedor
  735. CASE pertenen = "BG" .AND. location = 11
  736. prestamos = saldoacreedor - saldodeudor
  737. DO subtotal WITH prestamos, " PASIVOS POR OTROS PRESTAMOS:"
  738. STORE 0 TO saldodeudor, saldoacreedor
  739. CASE pertenen = "BG" .AND. location = 13
  740. continrep = saldoacreedor - saldodeudor
  741. DO subtotal WITH continrep, " CONTINGENCIAS REPETIBLES:"
  742. STORE 0 TO saldodeudor, saldoacreedor
  743. CASE pertenen = "BG" .AND. location = 14
  744. continaisladas = saldoacreedor - saldodeudor
  745. DO subtotal WITH continaisladas," CONTINGENCIAS AISLADAS MEDIBLES:"
  746. STORE 0 TO saldodeudor, saldoacreedor
  747. CASE pertenen = "BG" .AND. location = 16
  748. ordinario = saldoacreedor - saldodeudor
  749. DO subtotal WITH ordinario, " CAPITAL SOCIAL ORDINARIO:"
  750. STORE 0 TO saldodeudor, saldoacreedor
  751. CASE pertenen = "BG" .AND. location = 17
  752. preferente = saldoacreedor - saldodeudor
  753. DO subtotal WITH preferente, " CAPITAL SOCIAL PREFERENTE:"
  754. STORE 0 TO saldodeudor, saldoacreedor
  755. CASE pertenen = "BG" .AND. location = 18
  756. utejercicio = saldoacreedor - saldodeudor
  757. DO subtotal WITH utejercicio, " UTILIDAD DEL EJERCICIOS:"
  758. STORE 0 TO saldodeudor, saldoacreedor
  759. CASE pertenen ="BG" .AND. location = 19
  760. utretenida = saldoacreedor - saldodeudor
  761. DO subtotal WITH utretenida, " UTILIDADES RETENIDAS:"
  762. STORE 0 TO saldodeudor, saldoacreedor
  763. CASE pertenen = "BG" .AND. location = 20
  764. suppagado = saldoacreedor - saldodeudor
  765. DO subtotal WITH suppagado, " SUPERAVIT PAGADO:"
  766. STORE 0 TO saldodeudor, saldoacreedor
  767. CASE pertenen = "PU" .AND. location = 21
  768. v_supdonado = saldoacreedor - saldodeudor
  769. DO subtotal WITH v_supdonado, " SUPERAVIT DONADO:"
  770. STORE 0 TO saldodeudor, saldoacreedor
  771. ENDCASE
  772. ENDIF
  773. IF pertenen = "BG" .AND. ubicacion = 1 .AND. f1
  774. linea = 56
  775. DO detecta
  776. linea = 7
  777. IF pagina >= p_pini .AND. pagina <= p_pfin
  778. @ linea, 0 SAY PADC( " BALANCE GENERAL ", col, "*" )
  779. ENDIF
  780. STORE 0 TO saldodeudor, saldoacreedor
  781. f1 = .F.
  782. f2 = .T.
  783. linea = linea + 3
  784. ENDIF
  785. IF pertenen = "PU" .AND. ubicacion = 1 .AND. f2
  786. IF pagina >= p_pini .AND. pagina <= p_pfin
  787. @ linea + 2,0 SAY PADC( " CUENTAS PUENTE ", col, "*" )
  788. ENDIF
  789. STORE 0 TO saldodeudor, saldoacreedor
  790. linea = linea + 3
  791. DO detecta
  792. f2 = .F.
  793. ENDIF
  794. ENDDO
  795. CASE p_nivel = 2
  796. f1 = .T.
  797. cod = LEFT( clavecta, 7 )
  798. principal = nombcta
  799. adonde = pertenen
  800. location = ubicacion
  801. totsaldo = 0
  802. c = 1
  803. DO WHILE !EOF()
  804. IF p_sele1 = 2
  805. DO muestra WITH c, v, pagina, totpag
  806. ENDIF
  807. totsaldo = totsaldo + saldo
  808. location = ubicacion
  809. SKIP
  810. c = c + 1
  811. IF LEFT(clavecta, 7 ) = cod
  812. LOOP
  813. ELSE
  814. IF pagina >= p_pini .AND. pagina <= p_pfin
  815. @ linea, 0 SAY principal
  816. ENDIF
  817. IF moneda = "D"
  818. IF pagina >= p_pini .AND. pagina <= p_pfin
  819. @ linea, col - 40 SAY TRANSFORM( saldodll, "999,999,999,999.99" )
  820. ENDIF
  821. ENDIF
  822. IF pagina >= p_pini .AND. pagina <= p_pfin
  823. @ linea, col - 20 SAY TRANSFORM( totsaldo, "999,999,999,999.99" )
  824. ENDIF
  825. linea = linea + 1
  826. DO Detecta
  827. IF tipo = "D"
  828. saldodeudor = saldodeudor + totsaldo
  829. ELSE
  830. saldoacreedor = saldoacreedor + totsaldo
  831. ENDIF
  832. cod = LEFT( clavecta, 7 )
  833. principal = nombcta
  834. totsaldo = 0
  835. ENDIF
  836. IF ubicacion # location
  837. DO CASE
  838. CASE pertenen = "ER" .AND. location = 1
  839. ingresos = saldoacreedor - saldodeudor
  840. DO subtotal WITH ingresos, " TOTAL DE INGRESOS:"
  841. STORE 0 TO saldodeudor, saldoacreedor
  842. CASE pertenen = "ER" .AND. location = 3
  843. gastos = saldodeudor - saldoacreedor
  844. DO subtotal WITH gastos, " TOTAL DE GASTOS NO FINANCIEROS:"
  845. STORE 0 TO saldodeudor, saldoacreedor
  846. CASE pertenen = "ER" .AND. location = 4
  847. gastosfin = saldodeudor - saldoacreedor
  848. DO subtotal WITH gastosfin, " TOTAL DE GASTOS FINANCIEROS:"
  849. STORE 0 TO saldodeudor, saldoacreedor
  850. CASE pertenen = "BG" .AND. location = 6
  851. impuestos = saldodeudor - saldoacreedor
  852. DO subtotal WITH impuestos, " TOTAL DE IMPUESTOS:"
  853. STORE 0 TO saldodeudor, saldoacreedor
  854. CASE pertenen = "BG" .AND. location = 1
  855. circulante = saldodeudor - saldoacreedor
  856. DO subtotal WITH circulante, " TOTAL DE ACTIVOS CIRCULANTES:"
  857. STORE 0 TO saldodeudor, saldoacreedor
  858. CASE pertenen = "BG" .AND. location = 2
  859. cxc = saldodeudor - saldoacreedor
  860. DO subtotal WITH cxc, " TOTAL DE CUENTAS POR COBRAR:"
  861. STORE 0 TO saldodeudor, saldoacreedor
  862. CASE pertenen = "BG" .AND. location = 3
  863. inventario = saldodeudor - saldoacreedor
  864. DO subtotal WITH inventario, " TOTAL DE INVENTARIOS:"
  865. STORE 0 TO saldodeudor, saldoacreedor
  866. CASE pertenen = "BG" .AND. location = 4
  867. * afijo = saldoacreedor - saldodeudor
  868. afijo = saldodeudor - saldoacreedor
  869. DO subtotal WITH afijo, " TOTAL DE ACTIVO FIJO:"
  870. STORE 0 TO saldodeudor, saldoacreedor
  871. CASE pertenen = "BG" .AND. location = 5
  872. otroactivo = saldodeudor - saldoacreedor
  873. DO subtotal WITH otroactivo, " TOTAL DE OTROS ACTIVOS:"
  874. STORE 0 TO saldodeudor, saldoacreedor
  875. CASE pertenen = "BG" .AND. location = 7
  876. pasivoxadqn = saldoacreedor - saldodeudor
  877. DO subtotal WITH pasivoxadqn, " TOTAL PASIVOS X ADQUISICIONES:"
  878. STORE 0 TO saldodeudor, saldoacreedor
  879. CASE pertenen = "BG" .AND. location = 8
  880. cobrosanticip = saldoacreedor - saldodeudor
  881. DO subtotal WITH cobrosanticip, " TOTAL PASIVO POR COBROS ANTICIPADOS:"
  882. STORE 0 TO saldodeudor, saldoacreedor
  883. CASE pertenen = "BG" .AND. location = 9
  884. consumos = saldoacreedor - saldodeudor
  885. DO subtotal WITH consumos, " PASIVO POR ADQN. BIENES DE CONSUMO:"
  886. STORE 0 TO saldodeudor, saldoacreedor
  887. CASE pertenen = "BG" .AND. location = 10
  888. impuesto2 = saldoacreedor - saldodeudor
  889. DO subtotal WITH impuesto2, "PASIVOS CONTRAACTUALES E IMPOSITIVOS:"
  890. STORE 0 TO saldodeudor, saldoacreedor
  891. CASE pertenen = "BG" .AND. location = 11
  892. prestamos = saldoacreedor - saldodeudor
  893. DO subtotal WITH prestamos, " PASIVOS POR OTROS PRESTAMOS:"
  894. STORE 0 TO saldodeudor, saldoacreedor
  895. CASE pertenen = "BG" .AND. location = 13
  896. continrep = saldoacreedor - saldodeudor
  897. DO subtotal WITH continrep, " CONTINGENCIAS REPETIBLES:"
  898. STORE 0 TO saldodeudor, saldoacreedor
  899. CASE pertenen = "BG" .AND. location = 14
  900. continaisladas = saldoacreedor - saldodeudor
  901. DO subtotal WITH continaisladas," CONTINGENCIAS AISLADAS MEDIBLES:"
  902. STORE 0 TO saldodeudor, saldoacreedor
  903. CASE pertenen = "BG" .AND. location = 16
  904. ordinario = saldoacreedor - saldodeudor
  905. DO subtotal WITH ordinario, " CAPITAL SOCIAL ORDINARIO:"
  906. STORE 0 TO saldodeudor, saldoacreedor
  907. CASE pertenen = "BG" .AND. location = 17
  908. preferente = saldoacreedor - saldodeudor
  909. DO subtotal WITH preferente, " CAPITAL SOCIAL PREFERENTE:"
  910. STORE 0 TO saldodeudor, saldoacreedor
  911. CASE pertenen = "BG" .AND. location = 18
  912. utejercicio = saldoacreedor - saldodeudor
  913. DO subtotal WITH utejercicio, " UTILIDAD DEL EJERCICIOS:"
  914. STORE 0 TO saldodeudor, saldoacreedor
  915. CASE pertenen ="BG" .AND. location = 19
  916. utretenida = saldoacreedor - saldodeudor
  917. DO subtotal WITH utretenida, " UTILIDADES RETENIDAS:"
  918. STORE 0 TO saldodeudor, saldoacreedor
  919. CASE pertenen = "BG" .AND. location = 20
  920. suppagado = saldoacreedor - saldodeudor
  921. DO subtotal WITH suppagado, " SUPERAVIT PAGADO:"
  922. STORE 0 TO saldodeudor, saldoacreedor
  923. CASE pertenen = "PU" .AND. location = 21
  924. v_supdonado = saldoacreedor - saldodeudor
  925. DO subtotal WITH v_supdonado, " SUPERAVIT DONADO:"
  926. STORE 0 TO saldodeudor, saldoacreedor
  927. ENDCASE
  928. ENDIF
  929. IF pertenen = "BG" .AND. ubicacion = 1 .AND. f1
  930. linea = 56
  931. DO detecta
  932. linea = 7
  933. IF pagina >= p_pini .AND. pagina <= p_pfin
  934. @ linea, 0 SAY PADC( " BALANCE GENERAL ", col, "*" )
  935. ENDIF
  936. STORE 0 TO saldodeudor, saldoacreedor
  937. f1 = .F.
  938. f2 = .T.
  939. linea = linea + 3
  940. ENDIF
  941. IF pertenen = "PU" .AND. ubicacion = 1 .AND. f2
  942. IF pagina >= p_pini .AND. pagina <= p_pfin
  943. @ linea + 2,0 SAY PADC( " CUENTAS PUENTE ", col, "*" )
  944. ENDIF
  945. STORE 0 TO saldodeudor, saldoacreedor
  946. linea = linea + 3
  947. DO detecta
  948. f2 = .F.
  949. ENDIF
  950. ENDDO
  951. CASE p_nivel = 3
  952. f1 = .T.
  953. cod = LEFT( clavecta, 10 )
  954. principal = nombcta
  955. adonde = pertenen
  956. location = ubicacion
  957. totsaldo = 0
  958. c = 1
  959. DO WHILE !EOF()
  960. IF p_sele1 = 2
  961. DO muestra WITH c, v, pagina, totpag
  962. ENDIF
  963. totsaldo = totsaldo + saldo
  964. location = ubicacion
  965. SKIP
  966. c = c + 1
  967. IF LEFT(clavecta, 10 ) = cod
  968. LOOP
  969. ELSE
  970. IF pagina >= p_pini .AND. pagina <= p_pfin
  971. @ linea, 0 SAY principal
  972. ENDIF
  973. IF moneda = "D"
  974. IF pagina >= p_pini .AND. pagina <= p_pfin
  975. @ linea, col - 40 SAY TRANSFORM( saldodll, "999,999,999,999.99" )
  976. ENDIF
  977. ENDIF
  978. IF pagina >= p_pini .AND. pagina <= p_pfin
  979. @ linea, col - 20 SAY TRANSFORM( totsaldo, "999,999,999,999.99" )
  980. ENDIF
  981. linea = linea + 1
  982. DO Detecta
  983. IF tipo = "D"
  984. saldodeudor = saldodeudor + totsaldo
  985. ELSE
  986. saldoacreedor = saldoacreedor + totsaldo
  987. ENDIF
  988. cod = LEFT( clavecta, 10 )
  989. principal = nombcta
  990. totsaldo = 0
  991. ENDIF
  992. IF ubicacion # location
  993. DO CASE
  994. CASE pertenen = "ER" .AND. location = 1
  995. ingresos = saldoacreedor - saldodeudor
  996. DO subtotal WITH ingresos, " TOTAL DE INGRESOS:"
  997. STORE 0 TO saldodeudor, saldoacreedor
  998. CASE pertenen = "ER" .AND. location = 3
  999. gastos = saldodeudor - saldoacreedor
  1000. DO subtotal WITH gastos, " TOTAL DE GASTOS NO FINANCIEROS:"
  1001. STORE 0 TO saldodeudor, saldoacreedor
  1002. CASE pertenen = "ER" .AND. location = 4
  1003. gastosfin = saldodeudor - saldoacreedor
  1004. DO subtotal WITH gastosfin, " TOTAL DE GASTOS FINANCIEROS:"
  1005. STORE 0 TO saldodeudor, saldoacreedor
  1006. CASE pertenen = "BG" .AND. location = 6
  1007. impuestos = saldodeudor - saldoacreedor
  1008. DO subtotal WITH impuestos, " TOTAL DE IMPUESTOS:"
  1009. STORE 0 TO saldodeudor, saldoacreedor
  1010. CASE pertenen = "BG" .AND. location = 1
  1011. circulante = saldodeudor - saldoacreedor
  1012. DO subtotal WITH circulante, " TOTAL DE ACTIVOS CIRCULANTES:"
  1013. STORE 0 TO saldodeudor, saldoacreedor
  1014. CASE pertenen = "BG" .AND. location = 2
  1015. cxc = saldodeudor - saldoacreedor
  1016. DO subtotal WITH cxc, " TOTAL DE CUENTAS POR COBRAR:"
  1017. STORE 0 TO saldodeudor, saldoacreedor
  1018. CASE pertenen = "BG" .AND. location = 3
  1019. inventario = saldodeudor - saldoacreedor
  1020. DO subtotal WITH inventario, " TOTAL DE INVENTARIOS:"
  1021. STORE 0 TO saldodeudor, saldoacreedor
  1022. CASE pertenen = "BG" .AND. location = 4
  1023. * afijo = saldoacreedor - saldodeudor
  1024. afijo = saldodeudor - saldoacreedor
  1025. DO subtotal WITH afijo, " TOTAL DE ACTIVO FIJO:"
  1026. STORE 0 TO saldodeudor, saldoacreedor
  1027. CASE pertenen = "BG" .AND. location = 5
  1028. otroactivo = saldodeudor - saldoacreedor
  1029. DO subtotal WITH otroactivo, " TOTAL DE OTROS ACTIVOS:"
  1030. STORE 0 TO saldodeudor, saldoacreedor
  1031. CASE pertenen = "BG" .AND. location = 7
  1032. pasivoxadqn = saldoacreedor - saldodeudor
  1033. DO subtotal WITH pasivoxadqn, " TOTAL PASIVOS X ADQUISICIONES:"
  1034. STORE 0 TO saldodeudor, saldoacreedor
  1035. CASE pertenen = "BG" .AND. location = 8
  1036. cobrosanticip = saldoacreedor - saldodeudor
  1037. DO subtotal WITH cobrosanticip, " TOTAL PASIVO POR COBROS ANTICIPADOS:"
  1038. STORE 0 TO saldodeudor, saldoacreedor
  1039. CASE pertenen = "BG" .AND. location = 9
  1040. consumos = saldoacreedor - saldodeudor
  1041. DO subtotal WITH consumos, " PASIVO POR ADQN. BIENES DE CONSUMO:"
  1042. STORE 0 TO saldodeudor, saldoacreedor
  1043. CASE pertenen = "BG" .AND. location = 10
  1044. impuesto2 = saldoacreedor - saldodeudor
  1045. DO subtotal WITH impuesto2, "PASIVOS CONTRAACTUALES E IMPOSITIVOS:"
  1046. STORE 0 TO saldodeudor, saldoacreedor
  1047. CASE pertenen = "BG" .AND. location = 11
  1048. prestamos = saldoacreedor - saldodeudor
  1049. DO subtotal WITH prestamos, " PASIVOS POR OTROS PRESTAMOS:"
  1050. STORE 0 TO saldodeudor, saldoacreedor
  1051. CASE pertenen = "BG" .AND. location = 13
  1052. continrep = saldoacreedor - saldodeudor
  1053. DO subtotal WITH continrep, " CONTINGENCIAS REPETIBLES:"
  1054. STORE 0 TO saldodeudor, saldoacreedor
  1055. CASE pertenen = "BG" .AND. location = 14
  1056. continaisladas = saldoacreedor - saldodeudor
  1057. DO subtotal WITH continaisladas," CONTINGENCIAS AISLADAS MEDIBLES:"
  1058. STORE 0 TO saldodeudor, saldoacreedor
  1059. CASE pertenen = "BG" .AND. location = 16
  1060. ordinario = saldoacreedor - saldodeudor
  1061. DO subtotal WITH ordinario, " CAPITAL SOCIAL ORDINARIO:"
  1062. STORE 0 TO saldodeudor, saldoacreedor
  1063. CASE pertenen = "BG" .AND. location = 17
  1064. preferente = saldoacreedor - saldodeudor
  1065. DO subtotal WITH preferente, " CAPITAL SOCIAL PREFERENTE:"
  1066. STORE 0 TO saldodeudor, saldoacreedor
  1067. CASE pertenen = "BG" .AND. location = 18
  1068. utejercicio = saldoacreedor - saldodeudor
  1069. DO subtotal WITH utejercicio, " UTILIDAD DEL EJERCICIOS:"
  1070. STORE 0 TO saldodeudor, saldoacreedor
  1071. CASE pertenen ="BG" .AND. location = 19
  1072. utretenida = saldoacreedor - saldodeudor
  1073. DO subtotal WITH utretenida, " UTILIDADES RETENIDAS:"
  1074. STORE 0 TO saldodeudor, saldoacreedor
  1075. CASE pertenen = "BG" .AND. location = 20
  1076. suppagado = saldoacreedor - saldodeudor
  1077. DO subtotal WITH suppagado, " SUPERAVIT PAGADO:"
  1078. STORE 0 TO saldodeudor, saldoacreedor
  1079. CASE pertenen = "PU" .AND. location = 21
  1080. v_supdonado = saldoacreedor - saldodeudor
  1081. DO subtotal WITH v_supdonado, " SUPERAVIT DONADO:"
  1082. STORE 0 TO saldodeudor, saldoacreedor
  1083. ENDCASE
  1084. ENDIF
  1085. IF pertenen = "BG" .AND. ubicacion = 1 .AND. f1
  1086. linea = 56
  1087. DO detecta
  1088. linea = 7
  1089. IF pagina >= p_pini .AND. pagina <= p_pfin
  1090. @ linea, 0 SAY PADC( " BALANCE GENERAL ", col, "*" )
  1091. ENDIF
  1092. STORE 0 TO saldodeudor, saldoacreedor
  1093. f1 = .F.
  1094. f2 = .T.
  1095. linea = linea + 3
  1096. ENDIF
  1097. IF pertenen = "PU" .AND. ubicacion = 1 .AND. f2
  1098. IF pagina >= p_pini .AND. pagina <= p_pfin
  1099. @ linea + 2,0 SAY PADC( " CUENTAS PUENTE ", col, "*" )
  1100. ENDIF
  1101. STORE 0 TO saldodeudor, saldoacreedor
  1102. linea = linea + 3
  1103. DO detecta
  1104. f2 = .F.
  1105. ENDIF
  1106. ENDDO
  1107. CASE p_nivel = 4
  1108. f1 = .T.
  1109. IF p_pini = 1
  1110. @ linea,0 SAY PADC(" ESTADOS DE RESULTADOS ", col, "*" )
  1111. linea = linea + 2
  1112. ENDIF
  1113. c = 1
  1114. DO WHILE !EOF()
  1115. IF p_sele1 = 2
  1116. DO muestra WITH c, v, pagina, totpag
  1117. ENDIF
  1118. IF pagina >= p_pini .AND. pagina <= p_pfin
  1119. @ linea,0 SAY nombcta
  1120. ENDIF
  1121. IF tipo = "D"
  1122. saldodeudor = saldodeudor + saldo
  1123. ELSE
  1124. saldoacreedor = saldoacreedor + saldo
  1125. ENDIF
  1126. IF cargo <> 0 .OR. abono <> 0
  1127. IF moneda = "D"
  1128. IF pagina >= p_pini .AND. pagina <= p_pfin
  1129. @ linea, col - 40 SAY TRANSFORM( saldodll, "999,999,999,999.99" )
  1130. ENDIF
  1131. ENDIF
  1132. IF pagina >= p_pini .AND. pagina <= p_pfin
  1133. @ linea, col - 20 SAY TRANSFORM( saldo, "999,999,999,999.99" )
  1134. endif
  1135. linea = linea + 1
  1136. DO Detecta
  1137. ELSE
  1138. linea = linea + 1
  1139. DO Detecta
  1140. ENDIF
  1141. location = ubicacion
  1142. SKIP
  1143. c = c + 1
  1144. IF ubicacion # location
  1145. DO CASE
  1146. CASE pertenen = "ER" .AND. location = 1
  1147. ingresos = saldoacreedor - saldodeudor
  1148. DO subtotal WITH ingresos, " TOTAL DE INGRESOS:"
  1149. STORE 0 TO saldodeudor, saldoacreedor
  1150. CASE pertenen = "ER" .AND. location = 3
  1151. gastos = saldodeudor - saldoacreedor
  1152. DO subtotal WITH gastos, " TOTAL DE GASTOS NO FINANCIEROS:"
  1153. STORE 0 TO saldodeudor, saldoacreedor
  1154. CASE pertenen = "ER" .AND. location = 4
  1155. gastosfin = saldodeudor - saldoacreedor
  1156. DO subtotal WITH gastosfin, " TOTAL DE GASTOS FINANCIEROS:"
  1157. STORE 0 TO saldodeudor, saldoacreedor
  1158. CASE pertenen = "BG" .AND. location = 6
  1159. impuestos = saldodeudor - saldoacreedor
  1160. DO subtotal WITH impuestos, " TOTAL DE IMPUESTOS:"
  1161. STORE 0 TO saldodeudor, saldoacreedor
  1162. CASE pertenen = "BG" .AND. location = 1
  1163. circulante = saldodeudor - saldoacreedor
  1164. DO subtotal WITH circulante, " TOTAL DE ACTIVOS CIRCULANTES:"
  1165. STORE 0 TO saldodeudor, saldoacreedor
  1166. CASE pertenen = "BG" .AND. location = 2
  1167. cxc = saldodeudor - saldoacreedor
  1168. DO subtotal WITH cxc, " TOTAL DE CUENTAS POR COBRAR:"
  1169. STORE 0 TO saldodeudor, saldoacreedor
  1170. CASE pertenen = "BG" .AND. location = 3
  1171. inventario = saldodeudor - saldoacreedor
  1172. DO subtotal WITH inventario, " TOTAL DE INVENTARIOS:"
  1173. STORE 0 TO saldodeudor, saldoacreedor
  1174. CASE pertenen = "BG" .AND. location = 4
  1175. * afijo = saldoacreedor - saldodeudor
  1176. afijo = saldodeudor - saldoacreedor
  1177. DO subtotal WITH afijo, " TOTAL DE ACTIVO FIJO:"
  1178. STORE 0 TO saldodeudor, saldoacreedor
  1179. CASE pertenen = "BG" .AND. location = 5
  1180. otroactivo = saldodeudor - saldoacreedor
  1181. DO subtotal WITH otroactivo, " TOTAL DE OTROS ACTIVOS:"
  1182. STORE 0 TO saldodeudor, saldoacreedor
  1183. CASE pertenen = "BG" .AND. location = 7
  1184. pasivoxadqn = saldoacreedor - saldodeudor
  1185. DO subtotal WITH pasivoxadqn, " TOTAL PASIVOS X ADQUISICIONES:"
  1186. STORE 0 TO saldodeudor, saldoacreedor
  1187. CASE pertenen = "BG" .AND. location = 8
  1188. cobrosanticip = saldoacreedor - saldodeudor
  1189. DO subtotal WITH cobrosanticip, " TOTAL PASIVO POR COBROS ANTICIPADOS:"
  1190. STORE 0 TO saldodeudor, saldoacreedor
  1191. CASE pertenen = "BG" .AND. location = 9
  1192. consumos = saldoacreedor - saldodeudor
  1193. DO subtotal WITH consumos, " PASIVO POR ADQN. BIENES DE CONSUMO:"
  1194. STORE 0 TO saldodeudor, saldoacreedor
  1195. CASE pertenen = "BG" .AND. location = 10
  1196. impuesto2 = saldoacreedor - saldodeudor
  1197. DO subtotal WITH impuesto2, "PASIVOS CONTRAACTUALES E IMPOSITIVOS:"
  1198. STORE 0 TO saldodeudor, saldoacreedor
  1199. CASE pertenen = "BG" .AND. location = 11
  1200. prestamos = saldoacreedor - saldodeudor
  1201. DO subtotal WITH prestamos, " PASIVOS POR OTROS PRESTAMOS:"
  1202. STORE 0 TO saldodeudor, saldoacreedor
  1203. CASE pertenen = "BG" .AND. location = 13
  1204. continrep = saldoacreedor - saldodeudor
  1205. DO subtotal WITH continrep, " CONTINGENCIAS REPETIBLES:"
  1206. STORE 0 TO saldodeudor, saldoacreedor
  1207. CASE pertenen = "BG" .AND. location = 14
  1208. continaisladas = saldoacreedor - saldodeudor
  1209. DO subtotal WITH continaisladas," CONTINGENCIAS AISLADAS MEDIBLES:"
  1210. STORE 0 TO saldodeudor, saldoacreedor
  1211. CASE pertenen = "BG" .OR. pertenen = "PU" .AND. location = 16
  1212. ordinario = saldoacreedor - saldodeudor
  1213. DO subtotal WITH ordinario, " CAPITAL SOCIAL ORDINARIO:"
  1214. STORE 0 TO saldodeudor, saldoacreedor
  1215. CASE pertenen = "BG" .OR. pertenen = "PU" .AND. location = 17
  1216. preferente = saldoacreedor - saldodeudor
  1217. DO subtotal WITH preferente, " CAPITAL SOCIAL PREFERENTE:"
  1218. STORE 0 TO saldodeudor, saldoacreedor
  1219. CASE pertenen = "BG" .OR. pertenen = "PU" .AND. location = 18
  1220. utejercicio = saldoacreedor - saldodeudor
  1221. DO subtotal WITH utejercicio, " UTILIDAD DEL EJERCICIOS:"
  1222. STORE 0 TO saldodeudor, saldoacreedor
  1223. CASE pertenen ="BG" .OR. pertenen = "PU" .AND. location = 19
  1224. utretenida = saldoacreedor - saldodeudor
  1225. DO subtotal WITH utretenida, " UTILIDADES RETENIDAS:"
  1226. STORE 0 TO saldodeudor, saldoacreedor
  1227. CASE pertenen = "BG" .OR. pertenen = "PU" .AND. location = 20
  1228. suppagado = saldoacreedor - saldodeudor
  1229. DO subtotal WITH suppagado, " SUPERAVIT PAGADO:"
  1230. STORE 0 TO saldodeudor, saldoacreedor
  1231. CASE pertenen = "PU" .AND. location = 21
  1232. v_supdonado = saldoacreedor - saldodeudor
  1233. DO subtotal WITH v_supdonado, " SUPERAVIT DONADO:"
  1234. STORE 0 TO saldodeudor, saldoacreedor
  1235. ENDCASE
  1236. ENDIF
  1237. IF pertenen = "BG" .AND. ubicacion = 1 .AND. f1
  1238. linea = 56
  1239. DO detecta
  1240. linea = 7
  1241. IF pagina >= p_pini .AND. pagina <= p_pfin
  1242. @ linea, 0 SAY PADC( " BALANCE GENERAL ", col, "*" )
  1243. ENDIF
  1244. STORE 0 TO saldodeudor, saldoacreedor
  1245. f1 = .F.
  1246. f2 = .T.
  1247. linea = linea + 3
  1248. ENDIF
  1249. IF pertenen = "PU" .AND. ubicacion = 1 .AND. f2
  1250. IF pagina >= p_pini .AND. pagina <= p_pfin
  1251. @ linea + 2,0 SAY PADC( " CUENTAS PUENTE ", col, "*" )
  1252. ENDIF
  1253. STORE 0 TO saldodeudor, saldoacreedor
  1254. linea = linea + 3
  1255. DO detecta
  1256. f2 = .F.
  1257. ENDIF
  1258. ENDDO
  1259. ENDCASE
  1260. IF pagina >= p_pini .AND. pagina <= p_pfin
  1261. c = c + 1
  1262. linea = 56
  1263. DO DETECTA
  1264. utsresulter = ingresos - gastos - gastosfin - impuestos
  1265. @ linea,0 SAY PADC("Estados de Resultados Condensado", col )
  1266. @ linea+1, 15 SAY REPLICATE("Ä", col - 20 )
  1267. @ linea+2,17 SAY " Total de Ingresos : " + TRANSFORM( ingresos, "999,999,999,999.99")
  1268. @ linea+3,17 SAY "(-) Gastos NO Financieros : " + TRANSFORM( gastos, "999,999,999,999.99")
  1269. @ linea+4,17 SAY "(-) Gastos Financieros : " + TRANSFORM( gastosfin, "999,999,999,999.99")
  1270. @ linea+5,53 SAY REPLICATE( "Ä", 18 )
  1271. @ linea+6,17 SAY "(=) Utilidad antes de Impuestos : " + TRANSFORM( ingresos-gastos-gastosfin, "999,999,999,999.99")
  1272. @ linea+7,17 SAY "(-) Impuestos : " + TRANSFORM( impuestos, "999,999,999,999.99")
  1273. @ linea+8,53 SAY REPLICATE( "Ä", 18 )
  1274. @ linea+9,17 SAY "(=) Utilidad despues de Impuestos: " + TRANSFORM( utsresulter, "999,999,999,999.99")
  1275. c = c + 12
  1276. IF p_sele1 = 2
  1277. DO muestra WITH c, v, pagina, totpag
  1278. ENDIF
  1279. linea = linea + 12
  1280. DO detecta
  1281. activototal = circulante + cxc + inventario + afijo + otroactivo
  1282. @ linea,0 SAY PADC("Resumen de los Activos", col )
  1283. @ linea+1, 15 SAY REPLICATE("Ä", col - 20 )
  1284. @ linea+2,17 SAY " Activo circulante total : " + TRANSFORM( circulante, "999,999,999,999.99")
  1285. @ linea+3,17 SAY "(+) Cuentas por Cobrar : " + TRANSFORM( cxc, "999,999,999,999.99")
  1286. @ linea+4,17 SAY "(+) Inventarios : " + TRANSFORM( inventario, "999,999,999,999.99")
  1287. @ linea+5,17 SAY "(+) Activo Fijo Neto : " + TRANSFORM( afijo, "999,999,999,999.99")
  1288. @ linea+6,17 SAY "(+) Otros Activos : " + TRANSFORM( otroactivo, "999,999,999,999.99")
  1289. @ linea+7,53 SAY REPLICATE( "Ä", 18 )
  1290. @ linea+8,17 SAY "(=) Total de Activos : " + TRANSFORM( activototal, "999,999,999,999.99")
  1291. @ linea+9,53 SAY REPLICATE( "Í", 18 )
  1292. c = c + 12
  1293. IF p_sele1 = 2
  1294. DO muestra WITH c, v, pagina, totpag
  1295. ENDIF
  1296. linea = linea + 12
  1297. DO detecta
  1298. pasivototal = pasivoxadqn + cobrosanticip + consumos + impuesto2 + prestamos
  1299. @ linea,0 SAY PADC("Resumen de los Pasivos", col )
  1300. @ linea+1, 15 SAY REPLICATE("Ä", col - 20 )
  1301. @ linea+2,17 SAY " Pasivos por Adquisiciones : " + TRANSFORM( pasivoxadqn, "999,999,999,999.99")
  1302. @ linea+3,17 SAY "(+) Cobros anticipados : " + TRANSFORM( cobrosanticip, "999,999,999,999.99")
  1303. @ linea+4,17 SAY "(+) Pasivos para Consumo : " + TRANSFORM( consumos, "999,999,999,999.99")
  1304. @ linea+5,17 SAY "(+) Contratos e Impuestos : " + TRANSFORM( impuesto2, "999,999,999,999.99")
  1305. @ linea+6,17 SAY "(+) Otros Prestamos : " + TRANSFORM( prestamos, "999,999,999,999.99")
  1306. @ linea+7,53 SAY REPLICATE( "Ä", 18 )
  1307. @ linea+8,17 SAY "(=) Total de Pasivos : " + TRANSFORM( pasivototal, "999,999,999,999.99")
  1308. @ linea+9,53 SAY REPLICATE( "Í", 18 )
  1309. c = c + 12
  1310. IF p_sele1 = 2
  1311. DO muestra WITH c, v, pagina, totpag
  1312. ENDIF
  1313. linea = linea + 12
  1314. DO detecta
  1315. contingencias = continrep + continaisladas
  1316. @ linea,0 SAY PADC("Resumen de las Contingencias", col )
  1317. @ linea+1, 15 SAY REPLICATE("Ä", col - 20 )
  1318. @ linea+2,17 SAY " Contingencias Repetibles : " + TRANSFORM( continrep, "999,999,999,999.99")
  1319. @ linea+3,17 SAY "(+) Conting. Aisladas Medibles : " + TRANSFORM( continaisladas, "999,999,999,999.99")
  1320. @ linea+4,53 SAY REPLICATE( "Ä", 18 )
  1321. @ linea+5,17 SAY "(=) Total de activos : " + TRANSFORM( contingencias, "999,999,999,999.99")
  1322. @ linea+6,53 SAY REPLICATE( "Í", 18 )
  1323. c = c + 8
  1324. IF p_sele1 = 2
  1325. DO muestra WITH c, v, pagina, totpag
  1326. ENDIF
  1327. linea = linea + 8
  1328. DO detecta
  1329. capitaltotal = ordinario + preferente + utejercicio + utretenida + suppagado + v_supdonado + utsresulter
  1330. @ linea,0 SAY PADC("Resumen del Capital", col )
  1331. @ linea+1, 15 SAY REPLICATE("Ä", col - 20 )
  1332. @ linea+2,17 SAY " Capital Social Ordinario : " + TRANSFORM( ordinario, "999,999,999,999.99")
  1333. @ linea+3,17 SAY "(+) Capital Social Preferente : " + TRANSFORM( preferente, "999,999,999,999.99")
  1334. @ linea+4,17 SAY "(+) Utilidad del Ejercicio : " + TRANSFORM( utejercicio, "999,999,999,999.99")
  1335. @ linea+5,17 SAY "(+) Utilidades Retenidas : " + TRANSFORM( utretenida, "999,999,999,999.99")
  1336. @ linea+6,17 SAY "(+) Superavit Pagado : " + TRANSFORM( suppagado, "999,999,999,999.99")
  1337. @ linea+7,17 SAY "(+) Superavit Donado : " + TRANSFORM( v_supdonado, "999,999,999,999.99")
  1338. @ linea+8,17 SAY "(+) Utilidad Despues de Impuestos: " + TRANSFORM( utsresulter, "999,999,999,999.99")
  1339. @ linea+9,53 SAY REPLICATE( "Ä", 18 )
  1340. @ linea+10,17 SAY "(=) Capital total : " + TRANSFORM( capitaltotal, "999,999,999,999.99")
  1341. @ linea+11,53 SAY REPLICATE( "Í", 18 )
  1342. c = c + 12
  1343. IF p_sele1 = 2
  1344. DO muestra WITH c, v, pagina, totpag
  1345. ENDIF
  1346. ENDIF
  1347. linea = linea + 12
  1348. DO detecta
  1349. IF pagina >= p_pini .AND. pagina <= p_pfin
  1350. @ linea,0 SAY PADC("CUADRE DEL BALANCE GENERAL", col )
  1351. @ linea+1, 15 SAY REPLICATE("Ä", col - 20 )
  1352. @ linea+2,17 SAY " PASIVOS : " + TRANSFORM( pasivototal, "999,999,999,999.99")
  1353. @ linea+3,17 SAY "(+) CONTINGENCIAS : " + TRANSFORM( contingencias, "999,999,999,999.99")
  1354. @ linea+4,17 SAY "(+) CAPITAL : " + TRANSFORM( capitaltotal, "999,999,999,999.99")
  1355. @ linea+5,53 SAY REPLICATE( "Ä", 18 )
  1356. pasivototal = pasivototal + contingencias + capitaltotal
  1357. @ linea+6,17 SAY "(=) PASIVO + CAPITAL : " + TRANSFORM( pasivototal, "999,999,999,999.99")
  1358. @ linea+7,17 SAY " ACTIVOS : " + TRANSFORM( activototal, "999,999,999,999.99")
  1359. @ linea+8,53 SAY REPLICATE( "Ä", 18 )
  1360. @ linea+9,17 SAY "Diferencias A - (P + C) : " + TRANSFORM( activototal - pasivototal, "999,999,999,999.99")
  1361. @ linea+10,53 SAY REPLICATE( "Í", 18 )
  1362. @ linea+12,17 SAY "Tipo de Cambio de Valuacion : " + TRANSFORM( cambio, "999,999.999999")
  1363. ENDIF
  1364. IF p_sele1 = 1
  1365. c = c + 12
  1366. IF p_sele1 = 2
  1367. DO muestra WITH c, v, pagina, totpag
  1368. ENDIF
  1369. linea = 57
  1370. DO detecta
  1371. ENDIF
  1372. RETURN
  1373.  
  1374. *!*****************************************************************************
  1375. *!
  1376. *! Procedure: ENCABEZADO
  1377. *!
  1378. *! Called by: REPORTE (procedure in CONREAUX.PRG)
  1379. *! : DETECTA (procedure in CONREAUX.PRG)
  1380. *! : IMPRIME (procedure in CONEDFIN.PRG)
  1381. *! : PIMPRIME (procedure in CONEDFIN.PRG)
  1382. *!
  1383. *!*****************************************************************************
  1384. PROCEDURE ENCABEZADO
  1385. ******************************************************************
  1386. NOTE : Se modifica este proceso en 25-Mayo-94 para que acepte el ;
  1387. nuevo reporte parcial con mas columnas.
  1388. ******************************************************************
  1389. IF P_TIPOLETR = 1
  1390. IN = CHR(27) + CHR(18)
  1391. ELSE
  1392. IN = CHR(27) + CHR(15)
  1393. ENDIF
  1394. IF informe = 2
  1395. COL = 80
  1396. IN = CHR(27) + CHR(18)
  1397. ELSE
  1398. COL = 136
  1399. IN = CHR(27) + CHR(15)
  1400. ENDIF
  1401. IF P_Sele1 = 2
  1402. @ 0,0 SAY IN
  1403. ENDIF
  1404. IF TYPE("PAGINA") = "L"
  1405. PAGINA = 1
  1406. ENDIF
  1407. @ 1,0 SAY P_HEADER
  1408. @ 1, COL-10 SAY "Pag: "+LTRIM (STR (PAGINA)) + "/" + LTRIM( STR( totpag ) )
  1409. @ 2,0 SAY V_EMPRESA
  1410. @ 2, COL-10 SAY DTOC (DATE())
  1411. @ 3,0 SAY "ESTADOS FINANCIEROS"
  1412. DO CASE
  1413. CASE P_NIVEL = 1
  1414. @ 3,40 SAY "Nivel: Cuenta"
  1415. CASE P_NIVEL = 2
  1416. @ 3,40 SAY "Nivel: SCuenta"
  1417. CASE P_NIVEL = 3
  1418. @ 3,40 SAY "Nivel: S-S-Cuenta"
  1419. CASE P_NIVEL = 4
  1420. @ 3,40 SAY "Nivel: S-S-S-Cuenta"
  1421. ENDCASE
  1422. IF informe = 1
  1423. @ 3,60 SAY "PARCIALES"
  1424. @ 3,100 SAY "ANUALES"
  1425. ENDIF
  1426. @ 4,0 SAY "Periodo: "+ DTOC(A_FechaIni) + " al: " + DTOC(A_FechaFin)
  1427. IF informe = 2
  1428. @ 4,col-40 SAY " Saldo Dlls"
  1429. @ 4,col-20 SAY "Saldo"
  1430. ELSE
  1431. @ 4,col-80 SAY " Saldo Dlls"
  1432. @ 4,col-60 SAY "Saldo"
  1433. @ 4,col-40 SAY " Saldo Dlls"
  1434. @ 4,col-20 SAY "Saldo"
  1435. ENDIF
  1436. @ 5,0 SAY REPLICATE ("Í",COL)
  1437. RETURN
  1438.  
  1439. *!*****************************************************************************
  1440. *!
  1441. *! Procedure: DETECTA
  1442. *!
  1443. *! Called by: REPORTE (procedure in CONREAUX.PRG)
  1444. *! : IMPRIME (procedure in CONEDFIN.PRG)
  1445. *! : SUBTOTAL (procedure in CONEDFIN.PRG)
  1446. *! : PIMPRIME (procedure in CONEDFIN.PRG)
  1447. *! : PSUBTOTAL (procedure in CONEDFIN.PRG)
  1448. *! : FOOTER (procedure in CONRERAS.PRG)
  1449. *!
  1450. *! Calls: ENCABEZADO (procedure in CONREAUX.PRG)
  1451. *! : MUESTRA (procedure in CONREAUX.PRG)
  1452. *!
  1453. *! Memory Files: &ARC
  1454. *! : &ARCN
  1455. *!
  1456. *!*****************************************************************************
  1457. PROCEDURE Detecta
  1458. **************************************************************************
  1459. NOTE: Se modifica para aceptar el nuevo tipo de ventana PARCIAL mas grande
  1460. **************************************************************************
  1461. IF p_sele1 = 1
  1462. IF linea > 55
  1463. IF pagina >= p_pini .AND. pagina <= p_pfin
  1464. posicion = 0
  1465. poscol = 0
  1466. mueve = 0
  1467. pag = pagina
  1468. IF pag > totpag
  1469. IF pagina > totpag
  1470. totpag = pagina + 1
  1471. DIMENSION scrpan( totpag + 1 )
  1472. ENDIF
  1473. pag = totpag
  1474. ENDIF
  1475. IF MEMORY() < 75
  1476. z = z + 1
  1477. new = z
  1478. arc = "pan" + LTRIM( STR( z ) )
  1479. SAVE TO (arc) ALL LIKE scrpan
  1480. scrpan = 0
  1481. ENDIF
  1482. SAVE SCREEN TO scrpan( pag )
  1483. DO WHILE .T.
  1484. =inkey(0)
  1485. DO CASE
  1486. CASE LastKEY() = 4 &&Right
  1487. IF informe = 2
  1488. poscol = -2
  1489. ELSE
  1490. poscol = -59
  1491. ENDIF
  1492. MOVE WINDOW Pantalla TO mueve,poscol
  1493. CASE LastKEY() = 19 &&Left
  1494. poscol = 0
  1495. MOVE WINDOW Pantalla TO mueve,poscol
  1496. CASE LASTKEY() = 24 && flecha abajo
  1497. posicion = posicion + 1
  1498. mueve = mueve - 1
  1499. * CODIGO PARA PANTALLA DE 25 LINEAS
  1500. * IF posicion > 42
  1501. * posicion = 42
  1502. * mueve = -42
  1503. * ENDIF
  1504. * CODIGO PARA PANTALLA DE 50 LINEAS
  1505. IF posicion > 17
  1506. posicion = 17
  1507. mueve = -17
  1508. ENDIF
  1509. MOVE WINDOW pantalla TO mueve,poscol
  1510. CASE LASTKEY() = 5 && flecha arriba
  1511. posicion = posicion - 1
  1512. mueve = mueve + 1
  1513. IF posicion < 0
  1514. posicion = 0
  1515. mueve = 0
  1516. ENDIF
  1517. MOVE WINDOW pantalla TO mueve,poscol
  1518. CASE LASTKEY() = 3 && PgUp
  1519. posicion = posicion + 24
  1520. mueve = mueve - 24
  1521. * CODIGO PARA PANTALLA DE 25 LINEAS
  1522. * IF posicion > 42
  1523. * posicion = 42
  1524. * mueve = -42
  1525. * ENDIF
  1526. * CODIGO PARA PANTALLA DE 50 LINEAS
  1527. IF posicion > 17
  1528. posicion = 17
  1529. mueve = -17
  1530. ENDIF
  1531. MOVE WINDOW pantalla TO mueve,poscol
  1532. CASE LASTKEY() = 18 && PgDn
  1533. posicion = posicion - 24
  1534. mueve = mueve + 24
  1535. IF posicion < 0
  1536. posicion = 0
  1537. mueve = 0
  1538. ENDIF
  1539. MOVE WINDOW pantalla TO mueve,poscol
  1540. CASE LASTKEY() = 127 && backspace
  1541. pag = pag - 1
  1542. IF pag < p_pini
  1543. pag = p_pini
  1544. ENDIF
  1545. IF TYPE("scrpan(pag)") = "N"
  1546. new = new + 1
  1547. arcn = "pan" + LTRIM( STR( new ) )
  1548. IF !FILE( arcn )
  1549. SAVE TO (arcn) ALL LIKE scrpan
  1550. ENDIF
  1551. scrpan = 0
  1552. new = new - 1
  1553. arc = "pan" + LTRIM( STR( new ) )
  1554. RESTORE FROM (arc) ADDITIVE
  1555. new = new - 1
  1556. ENDIF
  1557. RESTORE SCREEN FROM scrpan(pag)
  1558. CASE LASTKEY() = 27
  1559. GO BOTTOM
  1560. DEACTIVATE WINDOW BALANZA, PANTALLA
  1561. SET CLOCK TO 1,1
  1562. SET CLOCK ON
  1563. SET DISPLAY TO VGA25
  1564. RESTORE SCREEN FROM ANTERIOR
  1565. RETURN TO conedfin
  1566. CASE LASTKEY() = 13
  1567. IF pag = pagina
  1568. EXIT
  1569. ENDIF
  1570. pag = pag + 1
  1571. IF TYPE("scrpan(pag)") = "N"
  1572. scrpan = 0
  1573. arc = "pan" + LTRIM(STR( z + 1 ) )
  1574. RESTORE FROM (arc) ADDITIVE
  1575. ENDIF
  1576. RESTORE SCREEN FROM scrpan( pag )
  1577. ENDCASE
  1578. ENDDO
  1579. ENDIF
  1580. ACTIVATE WINDOW pantalla
  1581. CLEAR
  1582. PAGINA = PAGINA + 1
  1583. DO ENCABEZADO
  1584. linea = 7
  1585. linea = linea +1
  1586. fila = 8
  1587. ENDIF
  1588. ENDIF
  1589. IF P_sele1 = 2
  1590. IF LINEA > 55
  1591. IF pagina >= p_pini .AND. pagina <= p_pfin
  1592. PAGINA = PAGINA + 1
  1593. DO ENCABEZADO
  1594. LINEA = 7
  1595. linea = linea + 1
  1596. DO muestra WITH c, v, pagina, totpag
  1597. ELSE
  1598. pagina = pagina + 1
  1599. linea = 8
  1600. DO muestra WITH c, v, pagina, totpag
  1601. ENDIF
  1602. ENDIF
  1603. ENDIF
  1604. RETURN
  1605.  
  1606. *!*****************************************************************************
  1607. *!
  1608. *! Procedure: SUBTOTAL
  1609. *!
  1610. *! Called by: IMPRIME (procedure in CONEDFIN.PRG)
  1611. *!
  1612. *! Calls: DETECTA (procedure in CONREAUX.PRG)
  1613. *!
  1614. *!*****************************************************************************
  1615. PROCEDURE subtotal
  1616. PARAMETERS cantidad, mensaje
  1617. IF cantidad <> 0
  1618. linea = linea + 1
  1619. DO detecta
  1620. IF pagina >= p_pini .AND. pagina <= p_pfin
  1621. @ linea, 0 SAY REPLICATE( "Ä", col )
  1622. ENDIF
  1623. linea = linea + 1
  1624. Do detecta
  1625. IF pagina >= p_pini .AND. pagina <= p_pfin
  1626. IF informe = 2
  1627. @ linea, 23 SAY mensaje + TRANSFORM( cantidad, "999,999,999,999.99")
  1628. ELSE
  1629. @ linea, 79 SAY mensaje + TRANSFORM( cantidad, "999,999,999,999.99")
  1630. ENDIF
  1631. ENDIF
  1632. linea = linea + 1
  1633. DO detecta
  1634. IF pagina >= p_pini .AND. pagina <= p_pfin
  1635. IF informe = 2
  1636. @ linea, 63 SAY "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
  1637. ELSE
  1638. @ linea, 119 SAY "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
  1639. ENDIF
  1640. ENDIF
  1641. linea = linea + 1
  1642. DO detecta
  1643. ENDIF
  1644. RETURN
  1645.  
  1646. *!*****************************************************************************
  1647. *!
  1648. *! Procedure: STOPPRINT
  1649. *!
  1650. *! Called by: CONPOLIZ.PRG
  1651. *! : REPORTE (procedure in CONREAUX.PRG)
  1652. *! : IMPRIME (procedure in CONEDFIN.PRG)
  1653. *! : PIMPRIME (procedure in CONEDFIN.PRG)
  1654. *!
  1655. *! Calls: BEEP() (function in CONUTIL.PRG)
  1656. *!
  1657. *!*****************************************************************************
  1658. PROCEDURE Stopprint
  1659. PARAMETERS minterrupt
  1660. SET CLOCK OFF
  1661. DEFINE WINDOW stopprint FROM 8,20 TO 16,60 DOUBLE SHADOW ;
  1662. TITLE " ** ERROR ** " COLOR W+/R,GR+/N,W+/R,W+/R,W+/R
  1663. ACTIVATE WINDOW stopprint
  1664. DO CASE
  1665. CASE minterrupt = "ESC"
  1666. =BEEP(3)
  1667. @ 1,0 SAY PADC("*** Interrupci¢n ***", WCOLS() )
  1668. CASE minterrupt = "ERR"
  1669. =BEEP(4)
  1670. @ 1,0 SAY PADC("*** Falla de Impresora ***", WCOLS() )
  1671. CASE minterrupt = "OUT"
  1672. =BEEP(2)
  1673. @ 1,0 SAY PADC("*** Impresora NO encendida ***", WCOLS() )
  1674. ENDCASE
  1675. mcancel = 1
  1676. @ 3,0 SAY PADC("¨Desea cancelar el reporte?", WCOLS() )
  1677. @ 5,5 GET mcancel PICTURE "@*H \!\?\<Si;\<No" SIZE 1,10,8 COLOR ,,,,,GR+/N,W+/R,,GR+/R,W/B
  1678. READ OBJECT 1
  1679. DEACTIVATE WINDOW stopprint
  1680. IF mcancel = 1
  1681. SET CLOCK TO 1,1
  1682. RETURN TO conedfin
  1683. ELSE
  1684. IF SYS(100) = "OFF"
  1685. SET CONSOLE OFF
  1686. ENDIF
  1687. IF SYS(102) = "ON"
  1688. SET PRINTER ON
  1689. ENDIF
  1690. SET PRINTER ON
  1691. SET DEVICE TO PRINTER
  1692. RETRY
  1693. ENDIF
  1694. RETURN
  1695.  
  1696. *!*****************************************************************************
  1697. *!
  1698. *! Procedure: MUESTRA
  1699. *!
  1700. *! Called by: REPORTE (procedure in CONREAUX.PRG)
  1701. *! : DETECTA (procedure in CONREAUX.PRG)
  1702. *! : IMPRIME (procedure in CONEDFIN.PRG)
  1703. *! : PIMPRIME (procedure in CONEDFIN.PRG)
  1704. *!
  1705. *!*****************************************************************************
  1706. PROCEDURE muestra
  1707. PARAMETERS cuenta, all, numberpag, allpage
  1708. SET PRINT OFF
  1709. SET DEVI TO SCREEN
  1710. ACTIVATE WINDOW imprimir
  1711. @ 2,20 SAY " Actual: "
  1712. SET CLOCK TO 13,41
  1713. @ 4,0 SAY PADC("Pagina: " + LTRIM(STR(numberpag)) + "/" + LTRIM(STR(allpage)), WCOLS() )
  1714. porcen = INT( (cuenta * 100) / (all + 66) )
  1715. reg = INT( (cuenta * 45) / (all + 66) )
  1716. @ 5,8 SAY REPLICATE("Û", reg ) COLOR GR+/N
  1717. @ 6,0 SAY PADC( STR(porcen,3) + "%", WCOLS() )
  1718. SET PRINT ON
  1719. SET DEVI TO PRINTER
  1720. RETURN
  1721.  
  1722. *!*****************************************************************************
  1723. *!
  1724. *! Procedure: FILL
  1725. *!
  1726. *! Called by: LLENADO (procedure in CONEDFIN.PRG)
  1727. *!
  1728. *!*****************************************************************************
  1729. PROCEDURE fill
  1730. ******************************
  1731. * Procedimiento de llenado para reporte
  1732. *
  1733. STORE 0 TO porcent, desp
  1734. c = 1
  1735. FOR J = 1 TO 3 && Este For son Balance/EdoResult/Cts Puentes
  1736. SELECT 3
  1737. totreg = RECCOUNT()
  1738. SET FILTER TO
  1739. DO CASE
  1740. CASE J = 1
  1741. P = "ER"
  1742. R = 6
  1743. MENSAJE = "Estados de Resultados"
  1744. CASE J = 2
  1745. P = "BG"
  1746. R = 21
  1747. MENSAJE = "Balance General"
  1748. CASE J = 3
  1749. CONTADOR = 0
  1750. SCAN FOR UPPER (PERTENEN) = "PU"
  1751. CONTADOR = CONTADOR + 1
  1752. ENDSCAN
  1753. P = "PU"
  1754. R = 2
  1755. MENSAJE = "Cuentas Puente"
  1756. IF CONTADOR = 0
  1757. EXIT
  1758. ENDIF
  1759. ENDCASE
  1760. FOR I = 1 TO R
  1761. SELECT 3
  1762. SET FILTER TO UBICACION = I AND PERTENEN = P
  1763. GO TOP
  1764. CODIGO = CLAVECTA
  1765. INICIO = CTA
  1766. DO WHILE !EOF()
  1767. CODIGO = CLAVECTA
  1768. TIPOMON = MONEDA
  1769. tiponat = tipo
  1770. what = pertenen
  1771. where = ubicacion
  1772. DO CASE
  1773. CASE CTA <> SPACE(4) AND SCTA <> SPACE(3) AND SSCTA <> SPACE(3) AND SSSCTA <> SPACE(3)
  1774. X = CTA + " - " + SCTA + " - " + SSCTA + " - " + SSSCTA + "."
  1775. Y = NSSSCTA
  1776. Z = SPACE(1)
  1777. CASE CTA <> SPACE(4) AND SCTA <> SPACE(3) AND SSCTA <> SPACE(3) AND SSSCTA = SPACE(3)
  1778. X = CTA + " - " + SCTA + " - " + SSCTA + "."
  1779. Y = NSSCTA
  1780. Z = SPACE(1)
  1781. CASE CTA <> SPACE(4) AND SCTA <> SPACE(3) AND SSCTA = SPACE(3) AND SSSCTA = SPACE(3)
  1782. X = CTA + " - " + SCTA + "."
  1783. Y = NSCTA
  1784. Z = SPACE(1)
  1785. CASE CTA <> SPACE(4) AND SCTA = SPACE(3) AND SSCTA = SPACE(3) AND SSSCTA = SPACE(3)
  1786. X = CTA + "."
  1787. Y = NCTA
  1788. ENDCASE
  1789. ACTIVATE WINDOW status
  1790. porcent = INT( ( c * 100 ) / totreg )
  1791. desp = INT( ( c * 40 ) / totreg )
  1792. @ 5,8 SAY "" COLOR GR+*/W
  1793. @ 10,10 SAY REPLICATE( "Û", desp ) COLOR GR+/B
  1794. @ 11,0 SAY PADC( STR( porcent, 3 ) + " % ", WCOLS() ) COLOR R/W
  1795. @ WROWS()-1,0 SAY PADC("PERIODO ACUMULADO", WCOLS() ) COLOR GR+/GR
  1796. SELECT ANUAL
  1797. APPEND BLANK
  1798. REPLACE clavecta WITH codigo, nombcta WITH x+SPACE(5)+y
  1799. REPLACE moneda WITH tipomon, pertenen WITH what, tipo WITH tiponat
  1800. REPLACE ubicacion WITH where
  1801. SELECT 3
  1802. SKIP
  1803. c = c + 1
  1804. IF CTA <> INICIO
  1805. INICIO = CTA
  1806. ENDIF
  1807. ENDDO
  1808. NEXT
  1809. ENDFOR
  1810. @ 5,8 SAY "" COLOR R/W
  1811. @ 10,10 SAY REPLICATE( "°", 40 )
  1812. SELECT ANUAL
  1813. STORE 0 TO ctap, ctad
  1814. SCAN FOR moneda = "P"
  1815. ctap = ctap + 1
  1816. ENDSCAN
  1817. SCAN FOR moneda = "D"
  1818. ctad = ctad + 1
  1819. ENDSCAN
  1820. GO TOP
  1821. STORE 0 TO porcent, desp
  1822. c = 1
  1823. SET FILTER TO moneda = "P"
  1824. DO WHILE !EOF()
  1825. codigo = clavecta
  1826. tiponat = tipo
  1827. x = LEFT(clavecta, 4) + " - " + SUBSTR(clavecta, 5, 3 ) + " - " + SUBSTR(clavecta, 9, 3 ) + " - " + RIGHT(clavecta,3) + "."
  1828. SELECT 1
  1829. TOTCARGOS = 0
  1830. TOTABONOS = 0
  1831. * CALCULATE SUM (CARGOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont,pfechiniej,pfechfinej) TO TOTCARGOS
  1832. * CALCULATE SUM (ABONOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont,pfechiniej,pfechfinej) TO TOTABONOS
  1833. ** CALCULATE SUM (CARGOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont, a_fechaini, a_fechafin) TO TOTCARGOS
  1834. ** CALCULATE SUM (ABONOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont, a_fechaini, a_fechafin) TO TOTABONOS
  1835. CALCULATE SUM (CARGOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont, pfechiniej, a_fechafin) TO TOTCARGOS
  1836. CALCULATE SUM (ABONOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont, pfechiniej, a_fechafin) TO TOTABONOS
  1837. IF tiponat = "D"
  1838. V_SALDO = totCARGOS - totABONOS
  1839. ELSE
  1840. IF tiponat = "A"
  1841. V_SALDO = totabonos - totcargos
  1842. ELSE
  1843. v_SALDO = 999999999.99
  1844. ENDIF
  1845. ENDIF
  1846. ACTIVATE WINDOW status
  1847. porcent = INT( ( c * 100 ) / ctap )
  1848. desp = INT( ( c * 40 ) / ctap )
  1849. @ 6,8 SAY "" COLOR GR+*/W
  1850. @ 10,10 SAY REPLICATE( "Û", desp ) COLOR GR+/B
  1851. @ 11,0 SAY PADC( STR( porcent, 3 ) + " % ", WCOLS() ) COLOR R/W
  1852. @ WROWS()-1,0 SAY PADC("PERIODO ACUMULADO", WCOLS() ) COLOR GR+/GR
  1853. SELECT ANUAL
  1854. REPLACE saldo WITH v_saldo, cargo WITH totcargos, abono WITH totabonos
  1855. SKIP
  1856. c = c + 1
  1857. ENDDO
  1858. @ 6,8 SAY "" COLOR R/W
  1859. @ 10,10 SAY REPLICATE( "°", 40 )
  1860. SELECT 6
  1861. cambio = 0
  1862. LOCATE FOR fechacont = a_fechafin
  1863. IF !FOUND()
  1864. CAMBIO = PTIPOCAMB
  1865. ELSE
  1866. CAMBIO = tipocambio
  1867. ENDIF
  1868. SELECT ANUAL
  1869. GO TOP
  1870. STORE 0 TO porcent, desp
  1871. c = 1
  1872. SET FILTER TO moneda = "D"
  1873. DO WHILE !EOF()
  1874. codigo = clavecta
  1875. tiponat = tipo
  1876. x = LEFT(clavecta, 4) + " - " + SUBSTR(clavecta, 5, 3 ) + " - " + SUBSTR(clavecta, 9, 3 ) + " - " + RIGHT(clavecta,3) + "."
  1877. SELECT 2
  1878. STORE 0 TO TOTCARGOS, TOTABONOS, totcardll, totabodll, saldll
  1879. * CALCULATE SUM (CARGOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont,pfechiniej,pfechfinej) TO TOTCARGOS
  1880. * CALCULATE SUM (ABONOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont,pfechiniej,pfechfinej) TO TOTABONOS
  1881. CALCULATE SUM (CARGOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont, pfechiniej, a_fechafin) TO TOTCARGOS
  1882. CALCULATE SUM (ABONOS) FOR CLAVECTA = CODIGO .AND. BETWEEN(fechacont, pfechiniej, a_fechafin) TO TOTABONOS
  1883. totcardll = totcargos
  1884. totabodll = totabonos
  1885. totcargos = totcargos * cambio
  1886. totabonos = totabonos * cambio
  1887. IF tiponat = "D"
  1888. V_SALDO = totCARGOS - totABONOS
  1889. saldll = totcardll - totabodll
  1890. ELSE
  1891. IF tiponat = "A"
  1892. V_SALDO = totabonos - totcargos
  1893. saldll = totabodll - totcardll
  1894. ENDIF
  1895. ENDIF
  1896. ACTIVATE WINDOW status
  1897. porcent = INT( ( c * 100 ) / ctad )
  1898. desp = INT( ( c * 40 ) / ctad )
  1899. @ 7,8 SAY "" COLOR GR+*/W
  1900. @ 10,10 SAY REPLICATE( "Û", desp ) COLOR GR+/B
  1901. @ 11,0 SAY PADC( STR( porcent, 3 ) + " % ", WCOLS() ) COLOR R/W
  1902. @ WROWS()-1,0 SAY PADC("PERIODO ACUMULADO", WCOLS() ) COLOR GR+/GR
  1903. SELECT ANUAL
  1904. REPLACE saldo WITH v_saldo, cargo WITH totcargos, abono WITH totabonos
  1905. REPLACE saldodll WITH saldll
  1906. c = c + 1
  1907. * IF c > ctad
  1908. * EXIT
  1909. * ENDIF
  1910. SKIP
  1911. IF EOF()
  1912. EXIT
  1913. ENDIF
  1914. ENDDO
  1915. @ 5,8 say " "
  1916. @ 6,8 SAY " "
  1917. @ 7,8 SAY " " COLOR R/W
  1918. @ 10,10 CLEAR TO 10,WCOLS()-2
  1919. @ 10,10 SAY REPLICATE( "°", 40 )
  1920. RETURN
  1921.  
  1922. *!*****************************************************************************
  1923. *!
  1924. *! Procedure: PIMPRIME
  1925. *!
  1926. *! Called by: REPORTE (procedure in CONREAUX.PRG)
  1927. *!
  1928. *! Calls: STOPPRINT (procedure in CONREAUX.PRG)
  1929. *! : CIV_TIME() (function in CONUTIL.PRG)
  1930. *! : ENCABEZADO (procedure in CONREAUX.PRG)
  1931. *! : MUESTRA (procedure in CONREAUX.PRG)
  1932. *! : DETECTA (procedure in CONREAUX.PRG)
  1933. *! : PSUBTOTAL (procedure in CONEDFIN.PRG)
  1934. *!
  1935. *! Indexes: CLAVECTA (tag in CONHELP.CDX)
  1936. *!
  1937. *!*****************************************************************************
  1938. PROCEDURE Pimprime
  1939. *************************************************************************
  1940. NOTE : El proceso para de dise¤o del reporte cambiara, porque se generan ;
  1941. dos tipos para cada uno. El ANUAL seguira como hasta ahora, pero ;
  1942. el PARCIAL debe ponerse datos del proceso ANUAL y PARCIAL en dos ;
  1943. columnas, por lo que se modifica la presentacion.;
  1944. ;
  1945. Este es el procedimiento de los reportes PARCIALES.
  1946. *************************************************************************
  1947. *RELEASE ALL
  1948. *SET PROCEDURE TO conutil
  1949. STORE 0 TO pingresos, pgastos, pgastosfin, pimpuestos, pcirculante, pcxc, pinventario, pafijo, potroactivo, ppasivoxadqn
  1950. STORE 0 TO pcobrosanticip, pconsumos, pimpuesto2, pprestamos, pcontinrep, pcontinaisladas, pordinario, ppreferente, putejercicio
  1951. STORE 0 TO putretenida, psuppagado, pv_supdonado, putsresulter, pactivototal, ppasivototal, pcontingencias, pcapitaltotal
  1952. STORE 0 TO pGLOBALCARGOS, pGLOBALABONOS, pV_SALDO, pTOTACTIVO, pTOTPASIVO, pTOTCONTIN, pTOTCAPIT, pSWITCH1, pDIFCTSPTE, pacu
  1953. DO CASE
  1954. CASE p_nivel = 1
  1955. SELECT (areat)
  1956. v = RECCOUNT()
  1957. totpag = ( ( RECCOUNT() + 220 ) / 1.5 ) / 55
  1958. IF ROUND( totpag, 1 ) > 0
  1959. totpag = INT( totpag ) + 1
  1960. ELSE
  1961. totpag = 1
  1962. ENDIF
  1963. tiempo = ( ( reccount() * 2 ) + 36 )
  1964. min = tiempo / 60
  1965. hor = int( min / 60 )
  1966. seg = MOD( tiempo, 60 )
  1967. min2 = MOD( min, 60 )
  1968. v_totpag = totpag + 1
  1969. DIMENSION scrpan( v_totpag )
  1970. CASE p_nivel = 2
  1971. SELECT (areat)
  1972. v = RECCOUNT()
  1973. totpag = ( ( RECCOUNT() + 220 ) / 1.2 ) / 55
  1974. IF ROUND( totpag, 1 ) > 0
  1975. totpag = INT( totpag ) + 1
  1976. ELSE
  1977. totpag = 1
  1978. ENDIF
  1979. tiempo = ( ( reccount() * 2 ) + 36 )
  1980. min = tiempo / 60
  1981. hor = int( min / 60 )
  1982. seg = MOD( tiempo, 60 )
  1983. min2 = MOD( min, 60 )
  1984. v_totpag = totpag + 1
  1985. DIMENSION scrpan( v_totpag )
  1986. CASE p_nivel = 3
  1987. SELECT (areat)
  1988. v = RECCOUNT()
  1989. totpag = ( ( RECCOUNT() + 220 ) ) / 55
  1990. IF ROUND( totpag, 1 ) > 0
  1991. totpag = INT( totpag ) + 1
  1992. ELSE
  1993. totpag = 1
  1994. ENDIF
  1995. tiempo = ( ( reccount() * 2 ) + 36 )
  1996. min = tiempo / 60
  1997. hor = int( min / 60 )
  1998. seg = MOD( tiempo, 60 )
  1999. min2 = MOD( min, 60 )
  2000. v_totpag = totpag + 1
  2001. DIMENSION scrpan( v_totpag )
  2002. CASE p_nivel = 4
  2003. SELECT ANUAL
  2004. v = RECCOUNT()
  2005. totpag = ( RECCOUNT() + 220 ) / 55
  2006. IF ROUND( totpag, 1 ) > 0
  2007. totpag = INT( totpag ) + 1
  2008. ELSE
  2009. totpag = 1
  2010. ENDIF
  2011. tiempo = ( ( reccount() * 2 ) + 36 )
  2012. min = tiempo / 60
  2013. hor = int( min / 60 )
  2014. seg = MOD( tiempo, 60 )
  2015. min2 = MOD( min, 60 )
  2016. v_totpag = totpag + 1
  2017. DIMENSION scrpan( v_totpag )
  2018. ENDCASE
  2019. cadena = "00"
  2020. cad = iif( hor<10, stuff(cadena,2,1,str(hor,1)),stuff(cadena,1,2,str(hor,2))) + ":" +;
  2021. iif( min2<10, stuff(cadena,2,1,str(min2,1)),stuff(cadena,1,2,str(min2,2))) + ":" +;
  2022. iif( seg<10, stuff(cadena,2,1,str(seg,1)),stuff(cadena,1,2,str(seg,2)))
  2023. elap = "00:00:00"
  2024. porcen = 0
  2025. IF P_Sele1 = 2
  2026. ON ESCAPE DO Stopprint WITH "ESC"
  2027. * ON ERROR DO Stopprint WITH "ERR"
  2028. IF .NOT. PRINTSTATUS()
  2029. DO Stopprint WITH "OUT"
  2030. ENDIF
  2031. DEFINE WINDOW imprimir FROM 10,10 TO 18,70 SHADOW TITLE " Imprimiendo " COLOR (colorimp)
  2032. ACTIVATE WINDOW imprimir
  2033. @ 0,20 SAY "Estimado: " + cad
  2034. @ 1,20 SAY "Comienzo: " + CIV_TIME( TIME() )
  2035. @ 2,20 SAY " Actual: "
  2036. @ 4,0 SAY PADC("Pagina: " + LTRIM(STR(pagina)) + "/" + LTRIM(STR(totpag)), WCOLS() )
  2037. @ 5,8 SAY REPLICATE("°", 45 )
  2038. @ 6,0 SAY PADC( STR(porcen,3) + "%", WCOLS() )
  2039. SET PRINT ON
  2040. SET MARGIN TO 0
  2041. SET DEVICE TO PRINTER
  2042. ELSE
  2043. SET PRINT OFF
  2044. SET DEVICE TO SCREEN
  2045. DEFINE WINDOW pantalla FROM 0,0 TO 66,138 "-","-",chr(8),chr(8),chr(8),chr(8),chr(8),chr(8);
  2046. FOOTER " ESC = Cancela BACKSPACE = Pag.Prev. ENTER = Sig.Pag. " ;
  2047. COLOR (colorvent)
  2048. SET COLOR TO (colorvent)
  2049. SET CLOCK OFF
  2050. CLEAR
  2051. HIDE POPUP ALL
  2052. HIDE MENU ALL
  2053. SET CURSOR OFF
  2054. SET DISPLAY TO VGA50
  2055. ACTIVATE WINDOW pantalla
  2056. ENDIF
  2057. IF p_print = 1
  2058. p_pini = 1
  2059. p_pfin = totpag
  2060. ELSE
  2061. IF p_pini = 0
  2062. p_pini = 1
  2063. ENDIF
  2064. IF p_pfin = 0
  2065. p_pfin = totpag
  2066. ENDIF
  2067. ENDIF
  2068. DO encabezado
  2069. ***********************************************************************
  2070. NOTE: Primero se establecera una relacion entre el archivo ANUAL y el ;
  2071. PARCIAL para que se accesen ambos saldos al mismo tiempo.;
  2072. No olvidar borrar el indice.
  2073. ***********************************************************************
  2074. SELECT PARCIAL
  2075. SET FILTER TO
  2076. INDEX ON clavecta TAG clavecta
  2077. SET ORDER TO TAG clavecta
  2078. SELECT ANUAL
  2079. SET FILTER TO
  2080. GO TOP
  2081. SET RELATION TO clavecta INTO PARCIAL
  2082. STORE 0 TO saldodeudor, saldoacreedor, z, new, psaldodeudor, psaldoacreedor
  2083. f2 = .F.
  2084. DO CASE
  2085. CASE p_nivel = 1
  2086. f1 = .T.
  2087. cod = LEFT( clavecta, 4 )
  2088. principal = nombcta
  2089. adonde = pertenen
  2090. location = ubicacion
  2091. STORE 0 TO totsaldo, ptotsaldo
  2092. c = 1
  2093. DO WHILE !EOF()
  2094. IF p_sele1 = 2
  2095. DO muestra WITH c, v, pagina, totpag
  2096. ENDIF
  2097. totsaldo = totsaldo + ANUAL.saldo
  2098. ptotsaldo = ptotsaldo + PARCIAL.saldo
  2099. location = ubicacion
  2100. SKIP
  2101. c = c + 1
  2102. IF LEFT(clavecta, 4 ) = cod
  2103. LOOP
  2104. ELSE
  2105. IF pagina >= p_pini .AND. pagina <= p_pfin
  2106. @ linea, 0 SAY principal
  2107. ENDIF
  2108. IF moneda = "D"
  2109. IF pagina >= p_pini .AND. pagina <= p_pfin
  2110. @ linea, col - 80 SAY TRANSFORM( PARCIAL.saldodll, "999,999,999,999.99" )
  2111. @ linea, col - 40 SAY TRANSFORM( ANUAL.saldodll, "999,999,999,999.99" )
  2112. ENDIF
  2113. ENDIF
  2114. IF pagina >= p_pini .AND. pagina <= p_pfin
  2115. @ linea, col - 60 SAY TRANSFORM( ptotsaldo, "999,999,999,999.99" )
  2116. @ linea, col - 20 SAY TRANSFORM( totsaldo, "999,999,999,999.99" )
  2117. ENDIF
  2118. linea = linea + 1
  2119. DO Detecta
  2120. IF tipo = "D"
  2121. saldodeudor = saldodeudor + totsaldo
  2122. psaldodeudor = psaldodeudor + ptotsaldo
  2123. ELSE
  2124. saldoacreedor = saldoacreedor + totsaldo
  2125. psaldoacreedor = psaldoacreedor + ptotsaldo
  2126. ENDIF
  2127. cod = LEFT( clavecta, 4 )
  2128. principal = nombcta
  2129. STORE 0 TO totsaldo, ptotsaldo
  2130. ENDIF
  2131. IF ubicacion # location
  2132. DO CASE
  2133. CASE pertenen = "ER" .AND. location = 1
  2134. ingresos = saldoacreedor - saldodeudor
  2135. pingresos = psaldoacreedor - psaldodeudor
  2136. DO psubtotal WITH ingresos, pingresos, " TOTAL DE INGRESOS:"
  2137. STORE 0 TO saldodeudor, saldoacreedor
  2138. STORE 0 TO psaldodeudor, psaldoacreedor
  2139. CASE pertenen = "ER" .AND. location = 3
  2140. gastos = saldodeudor - saldoacreedor
  2141. pgastos = psaldodeudor - psaldoacreedor
  2142. DO psubtotal WITH gastos, pgastos, " TOTAL DE GASTOS NO FINANCIEROS:"
  2143. STORE 0 TO saldodeudor, saldoacreedor
  2144. STORE 0 TO psaldodeudor, psaldoacreedor
  2145. CASE pertenen = "ER" .AND. location = 4
  2146. gastosfin = saldodeudor - saldoacreedor
  2147. pgastosfin = psaldodeudor - psaldoacreedor
  2148. DO psubtotal WITH gastosfin, pgastosfin, " TOTAL DE GASTOS FINANCIEROS:"
  2149. STORE 0 TO saldodeudor, saldoacreedor
  2150. STORE 0 TO psaldodeudor, psaldoacreedor
  2151. CASE pertenen = "BG" .AND. location = 6
  2152. impuestos = saldodeudor - saldoacreedor
  2153. pimpuestos = psaldodeudor - psaldoacreedor
  2154. DO psubtotal WITH impuestos, pimpuestos, " TOTAL DE IMPUESTOS:"
  2155. STORE 0 TO saldodeudor, saldoacreedor
  2156. STORE 0 TO psaldodeudor, psaldoacreedor
  2157. CASE pertenen = "BG" .AND. location = 1
  2158. circulante = saldodeudor - saldoacreedor
  2159. pcirculante = psaldodeudor - psaldoacreedor
  2160. DO psubtotal WITH circulante, pcirculante, " TOTAL DE ACTIVOS CIRCULANTES:"
  2161. STORE 0 TO saldodeudor, saldoacreedor
  2162. STORE 0 TO psaldodeudor, psaldoacreedor
  2163. CASE pertenen = "BG" .AND. location = 2
  2164. cxc = saldodeudor - saldoacreedor
  2165. pcxc = psaldodeudor - psaldoacreedor
  2166. DO psubtotal WITH cxc, pcxc, " TOTAL DE CUENTAS POR COBRAR:"
  2167. STORE 0 TO saldodeudor, saldoacreedor
  2168. STORE 0 TO psaldodeudor, psaldoacreedor
  2169. CASE pertenen = "BG" .AND. location = 3
  2170. inventario = saldodeudor - saldoacreedor
  2171. pinventario = psaldodeudor - psaldoacreedor
  2172. DO psubtotal WITH inventario, pinventario, " TOTAL DE INVENTARIOS:"
  2173. STORE 0 TO saldodeudor, saldoacreedor
  2174. STORE 0 TO psaldodeudor, psaldoacreedor
  2175. CASE pertenen = "BG" .AND. location = 4
  2176. afijo = saldodeudor - saldoacreedor
  2177. pafijo = psaldodeudor - psaldoacreedor
  2178. DO psubtotal WITH afijo, pafijo, " TOTAL DE ACTIVO FIJO:"
  2179. STORE 0 TO saldodeudor, saldoacreedor
  2180. STORE 0 TO psaldodeudor, psaldoacreedor
  2181. CASE pertenen = "BG" .AND. location = 5
  2182. otroactivo = saldodeudor - saldoacreedor
  2183. potroactivo = psaldodeudor - psaldoacreedor
  2184. DO psubtotal WITH otroactivo, potroactivo, " TOTAL DE OTROS ACTIVOS:"
  2185. STORE 0 TO saldodeudor, saldoacreedor
  2186. STORE 0 TO psaldodeudor, psaldoacreedor
  2187. CASE pertenen = "BG" .AND. location = 7
  2188. pasivoxadqn = saldoacreedor - saldodeudor
  2189. ppasivoxadqn = psaldoacreedor - psaldodeudor
  2190. DO psubtotal WITH pasivoxadqn, ppasivoxadqn, " TOTAL PASIVOS X ADQUISICIONES:"
  2191. STORE 0 TO saldodeudor, saldoacreedor
  2192. STORE 0 TO psaldodeudor, psaldoacreedor
  2193. CASE pertenen = "BG" .AND. location = 8
  2194. cobrosanticip = saldoacreedor - saldodeudor
  2195. pcobrosanticip = psaldoacreedor - psaldodeudor
  2196. DO psubtotal WITH cobrosanticip, pcobrosanticip, " TOTAL PASIVO POR COBROS ANTICIPADOS:"
  2197. STORE 0 TO saldodeudor, saldoacreedor
  2198. STORE 0 TO psaldodeudor, psaldoacreedor
  2199. CASE pertenen = "BG" .AND. location = 9
  2200. consumos = saldoacreedor - saldodeudor
  2201. pconsumos = psaldoacreedor - psaldodeudor
  2202. DO psubtotal WITH consumos, pconsumos, " PASIVO POR ADQN. BIENES DE CONSUMO:"
  2203. STORE 0 TO saldodeudor, saldoacreedor
  2204. STORE 0 TO psaldodeudor, psaldoacreedor
  2205. CASE pertenen = "BG" .AND. location = 10
  2206. impuesto2 = saldoacreedor - saldodeudor
  2207. pimpuesto2 = psaldoacreedor - psaldodeudor
  2208. DO psubtotal WITH impuesto2, pimpuesto2, "PASIVOS CONTRAACTUALES E IMPOSITIVOS:"
  2209. STORE 0 TO saldodeudor, saldoacreedor
  2210. STORE 0 TO psaldodeudor, psaldoacreedor
  2211. CASE pertenen = "BG" .AND. location = 11
  2212. prestamos = saldoacreedor - saldodeudor
  2213. pprestamos = psaldoacreedor - psaldodeudor
  2214. DO psubtotal WITH prestamos, pprestamos, " PASIVOS POR OTROS PRESTAMOS:"
  2215. STORE 0 TO saldodeudor, saldoacreedor
  2216. STORE 0 TO psaldodeudor, psaldoacreedor
  2217. CASE pertenen = "BG" .AND. location = 13
  2218. continrep = saldoacreedor - saldodeudor
  2219. pcontinrep = psaldoacreedor - psaldodeudor
  2220. DO psubtotal WITH continrep, pcontinrep, " CONTINGENCIAS REPETIBLES:"
  2221. STORE 0 TO saldodeudor, saldoacreedor
  2222. STORE 0 TO psaldodeudor, psaldoacreedor
  2223. CASE pertenen = "BG" .AND. location = 14
  2224. continaisladas = saldoacreedor - saldodeudor
  2225. pcontinaisladas = psaldoacreedor - psaldodeudor
  2226. DO psubtotal WITH continaisladas, pcontinaisladas, " CONTINGENCIAS AISLADAS MEDIBLES:"
  2227. STORE 0 TO saldodeudor, saldoacreedor
  2228. STORE 0 TO psaldodeudor, psaldoacreedor
  2229. CASE pertenen = "PU" .AND. location = 16
  2230. ordinario = saldoacreedor - saldodeudor
  2231. pordinario = psaldoacreedor - psaldodeudor
  2232. DO psubtotal WITH ordinario, pordinario, " CAPITAL SOCIAL ORDINARIO:"
  2233. STORE 0 TO saldodeudor, saldoacreedor
  2234. STORE 0 TO psaldodeudor, psaldoacreedor
  2235. CASE pertenen = "BG" .AND. location = 17
  2236. preferente = saldoacreedor - saldodeudor
  2237. ppreferente = psaldoacreedor - psaldodeudor
  2238. DO psubtotal WITH preferente, ppreferente, " CAPITAL SOCIAL PREFERENTE:"
  2239. STORE 0 TO saldodeudor, saldoacreedor
  2240. STORE 0 TO psaldodeudor, psaldoacreedor
  2241. CASE pertenen = "BG" .AND. location = 18
  2242. utejercicio = saldoacreedor - saldodeudor
  2243. putejercicio = psaldoacreedor - psaldodeudor
  2244. DO psubtotal WITH utejercicio, putejercicio, " UTILIDAD DEL EJERCICIOS:"
  2245. STORE 0 TO saldodeudor, saldoacreedor
  2246. STORE 0 TO psaldodeudor, psaldoacreedor
  2247. CASE pertenen ="BG" .AND. location = 19
  2248. utretenida = saldoacreedor - saldodeudor
  2249. putretenida = psaldoacreedor - psaldodeudor
  2250. DO psubtotal WITH utretenida, putretenida, " UTILIDADES RETENIDAS:"
  2251. STORE 0 TO saldodeudor, saldoacreedor
  2252. STORE 0 TO psaldodeudor, psaldoacreedor
  2253. CASE pertenen = "BG" .AND. location = 20
  2254. suppagado = saldoacreedor - saldodeudor
  2255. psuppagado = psaldoacreedor - psaldodeudor
  2256. DO psubtotal WITH suppagado, psuppagado, " SUPERAVIT PAGADO:"
  2257. STORE 0 TO saldodeudor, saldoacreedor
  2258. STORE 0 TO psaldodeudor, psaldoacreedor
  2259. CASE pertenen = "PU" .AND. location = 21
  2260. v_supdonado = saldoacreedor - saldodeudor
  2261. pv_supdonado = psaldoacreedor - psaldodeudor
  2262. DO psubtotal WITH v_supdonado, pv_supdonado, " SUPERAVIT DONADO:"
  2263. STORE 0 TO saldodeudor, saldoacreedor
  2264. STORE 0 TO psaldodeudor, psaldoacreedor
  2265. ENDCASE
  2266. ENDIF
  2267. IF pertenen = "BG" .AND. ubicacion = 1 .AND. f1
  2268. linea = 56
  2269. DO detecta
  2270. linea = 7
  2271. IF pagina >= p_pini .AND. pagina <= p_pfin
  2272. @ linea, 0 SAY PADC( " BALANCE GENERAL ", col, "*" )
  2273. ENDIF
  2274. STORE 0 TO saldodeudor, saldoacreedor
  2275. STORE 0 TO psaldodeudor, psaldoacreedor
  2276. f1 = .F.
  2277. f2 = .T.
  2278. linea = linea + 3
  2279. ENDIF
  2280. IF pertenen = "PU" .AND. ubicacion = 1 .AND. f2
  2281. IF pagina >= p_pini .AND. pagina <= p_pfin
  2282. @ linea + 2,0 SAY PADC( " CUENTAS PUENTE ", col, "*" )
  2283. ENDIF
  2284. STORE 0 TO saldodeudor, saldoacreedor
  2285. STORE 0 TO psaldodeudor, psaldoacreedor
  2286. linea = linea + 3
  2287. DO detecta
  2288. f2 = .F.
  2289. ENDIF
  2290. ENDDO
  2291. CASE p_nivel = 2
  2292. f1 = .T.
  2293. cod = LEFT( clavecta, 7 )
  2294. principal = nombcta
  2295. adonde = pertenen
  2296. location = ubicacion
  2297. STORE 0 TO totsaldo, ptotsaldo
  2298. c = 1
  2299. DO WHILE !EOF()
  2300. IF p_sele1 = 2
  2301. DO muestra WITH c, v, pagina, totpag
  2302. ENDIF
  2303. totsaldo = totsaldo + ANUAL.saldo
  2304. ptotsaldo = ptotsaldo + PARCIAL.saldo
  2305. location = ubicacion
  2306. SKIP
  2307. c = c + 1
  2308. IF LEFT(clavecta, 7 ) = cod
  2309. LOOP
  2310. ELSE
  2311. IF pagina >= p_pini .AND. pagina <= p_pfin
  2312. @ linea, 0 SAY principal
  2313. ENDIF
  2314. IF moneda = "D"
  2315. IF pagina >= p_pini .AND. pagina <= p_pfin
  2316. @ linea, col - 80 SAY TRANSFORM( PARCIAL.saldodll, "999,999,999,999.99" )
  2317. @ linea, col - 40 SAY TRANSFORM( ANUAL.saldodll, "999,999,999,999.99" )
  2318. ENDIF
  2319. ENDIF
  2320. IF pagina >= p_pini .AND. pagina <= p_pfin
  2321. @ linea, col - 60 SAY TRANSFORM( ptotsaldo, "999,999,999,999.99" )
  2322. @ linea, col - 20 SAY TRANSFORM( totsaldo, "999,999,999,999.99" )
  2323. ENDIF
  2324. linea = linea + 1
  2325. DO Detecta
  2326. IF tipo = "D"
  2327. saldodeudor = saldodeudor + totsaldo
  2328. psaldodeudor = psaldodeudor + ptotsaldo
  2329. ELSE
  2330. saldoacreedor = saldoacreedor + totsaldo
  2331. psldoacreedor = psaldoacreedor + ptotsaldo
  2332. ENDIF
  2333. cod = LEFT( clavecta, 7 )
  2334. principal = nombcta
  2335. STORE 0 TO totsaldo, ptotsaldo
  2336. ENDIF
  2337. IF ubicacion # location
  2338. DO CASE
  2339. CASE pertenen = "ER" .AND. location = 1
  2340. ingresos = saldoacreedor - saldodeudor
  2341. pingresos = psaldoacreedor - psaldodeudor
  2342. DO psubtotal WITH ingresos, pingresos, " TOTAL DE INGRESOS:"
  2343. STORE 0 TO saldodeudor, saldoacreedor
  2344. STORE 0 TO psaldodeudor, psaldoacreedor
  2345. CASE pertenen = "ER" .AND. location = 3
  2346. gastos = saldodeudor - saldoacreedor
  2347. pgastos = psaldodeudor - psaldoacreedor
  2348. DO psubtotal WITH gastos, pgastos, " TOTAL DE GASTOS NO FINANCIEROS:"
  2349. STORE 0 TO saldodeudor, saldoacreedor
  2350. STORE 0 TO psaldodeudor, psaldoacreedor
  2351. CASE pertenen = "ER" .AND. location = 4
  2352. gastosfin = saldodeudor - saldoacreedor
  2353. pgastosfin = psaldodeudor - psaldoacreedor
  2354. DO psubtotal WITH gastosfin, pgastosfin, " TOTAL DE GASTOS FINANCIEROS:"
  2355. STORE 0 TO saldodeudor, saldoacreedor
  2356. STORE 0 TO psaldodeudor, psaldoacreedor
  2357. CASE pertenen = "BG" .AND. location = 6
  2358. impuestos = saldodeudor - saldoacreedor
  2359. pimpuestos = psaldodeudor - psaldoacreedor
  2360. DO psubtotal WITH impuestos, pimpuestos, " TOTAL DE IMPUESTOS:"
  2361. STORE 0 TO saldodeudor, saldoacreedor
  2362. STORE 0 TO psaldodeudor, psaldoacreedor
  2363. CASE pertenen = "BG" .AND. location = 1
  2364. circulante = saldodeudor - saldoacreedor
  2365. pcirculante = psaldodeudor - psaldoacreedor
  2366. DO psubtotal WITH circulante, pcirculante, " TOTAL DE ACTIVOS CIRCULANTES:"
  2367. STORE 0 TO saldodeudor, saldoacreedor
  2368. STORE 0 TO psaldodeudor, psaldoacreedor
  2369. CASE pertenen = "BG" .AND. location = 2
  2370. cxc = saldodeudor - saldoacreedor
  2371. pcxc = psaldodeudor - psaldoacreedor
  2372. DO psubtotal WITH cxc, pcxc, " TOTAL DE CUENTAS POR COBRAR:"
  2373. STORE 0 TO saldodeudor, saldoacreedor
  2374. STORE 0 TO psaldodeudor, psaldoacreedor
  2375. CASE pertenen = "BG" .AND. location = 3
  2376. inventario = saldodeudor - saldoacreedor
  2377. pinventario = psaldodeudor - psaldoacreedor
  2378. DO psubtotal WITH inventario, pinventario, " TOTAL DE INVENTARIOS:"
  2379. STORE 0 TO saldodeudor, saldoacreedor
  2380. STORE 0 TO psaldodeudor, psaldoacreedor
  2381. CASE pertenen = "BG" .AND. location = 4
  2382. afijo = saldodeudor - saldoacreedor
  2383. pafijo = psaldodeudor - psaldoacreedor
  2384. DO psubtotal WITH afijo, pafijo, " TOTAL DE ACTIVO FIJO:"
  2385. STORE 0 TO saldodeudor, saldoacreedor
  2386. STORE 0 TO psaldodeudor, psaldoacreedor
  2387. CASE pertenen = "BG" .AND. location = 5
  2388. otroactivo = saldodeudor - saldoacreedor
  2389. potroactivo = psaldodeudor - psaldoacreedor
  2390. DO psubtotal WITH otroactivo, potroactivo, " TOTAL DE OTROS ACTIVOS:"
  2391. STORE 0 TO saldodeudor, saldoacreedor
  2392. STORE 0 TO psaldodeudor, psaldoacreedor
  2393. CASE pertenen = "BG" .AND. location = 7
  2394. pasivoxadqn = saldoacreedor - saldodeudor
  2395. ppasivoxadqn = psaldoacreedor - psaldodeudor
  2396. DO psubtotal WITH pasivoxadqn, ppasivoxadqn, " TOTAL PASIVOS X ADQUISICIONES:"
  2397. STORE 0 TO saldodeudor, saldoacreedor
  2398. STORE 0 TO psaldodeudor, psaldoacreedor
  2399. CASE pertenen = "BG" .AND. location = 8
  2400. cobrosanticip = saldoacreedor - saldodeudor
  2401. pcobrosanticip = psaldoacreedor - psaldodeudor
  2402. DO psubtotal WITH cobrosanticip, pcobrosanticip, " TOTAL PASIVO POR COBROS ANTICIPADOS:"
  2403. STORE 0 TO saldodeudor, saldoacreedor
  2404. STORE 0 TO psaldodeudor, psaldoacreedor
  2405. CASE pertenen = "BG" .AND. location = 9
  2406. consumos = saldoacreedor - saldodeudor
  2407. pconsumos = psaldoacreedor - psaldodeudor
  2408. DO psubtotal WITH consumos, pconsumos, " PASIVO POR ADQN. BIENES DE CONSUMO:"
  2409. STORE 0 TO saldodeudor, saldoacreedor
  2410. STORE 0 TO psaldodeudor, psaldoacreedor
  2411. CASE pertenen = "BG" .AND. location = 10
  2412. impuesto2 = saldoacreedor - saldodeudor
  2413. pimpuesto2 = psaldoacreedor - psaldodeudor
  2414. DO psubtotal WITH impuesto2, pimpuesto2, "PASIVOS CONTRAACTUALES E IMPOSITIVOS:"
  2415. STORE 0 TO saldodeudor, saldoacreedor
  2416. STORE 0 TO psaldodeudor, psaldoacreedor
  2417. CASE pertenen = "BG" .AND. location = 11
  2418. prestamos = saldoacreedor - saldodeudor
  2419. pprestamos = psaldoacreedor - psaldodeudor
  2420. DO psubtotal WITH prestamos, pprestamos, " PASIVOS POR OTROS PRESTAMOS:"
  2421. STORE 0 TO saldodeudor, saldoacreedor
  2422. STORE 0 TO psaldodeudor, psaldoacreedor
  2423. CASE pertenen = "BG" .AND. location = 13
  2424. continrep = saldoacreedor - saldodeudor
  2425. pcontinrep = psaldoacreedor - psaldodeudor
  2426. DO psubtotal WITH continrep, pcontinrep, " CONTINGENCIAS REPETIBLES:"
  2427. STORE 0 TO saldodeudor, saldoacreedor
  2428. STORE 0 TO psaldodeudor, psaldoacreedor
  2429. CASE pertenen = "BG" .AND. location = 14
  2430. continaisladas = saldoacreedor - saldodeudor
  2431. pcontinaisladas = psaldoacreedor - psaldodeudor
  2432. DO psubtotal WITH continaisladas, pcontinaisladas, " CONTINGENCIAS AISLADAS MEDIBLES:"
  2433. STORE 0 TO saldodeudor, saldoacreedor
  2434. STORE 0 TO psaldodeudor, psaldoacreedor
  2435. CASE pertenen = "PU" .AND. location = 16
  2436. ordinario = saldoacreedor - saldodeudor
  2437. pordinario = psaldoacreedor - psaldodeudor
  2438. DO psubtotal WITH ordinario, pordinario, " CAPITAL SOCIAL ORDINARIO:"
  2439. STORE 0 TO saldodeudor, saldoacreedor
  2440. STORE 0 TO psaldodeudor, psaldoacreedor
  2441. CASE pertenen = "BG" .AND. location = 17
  2442. preferente = saldoacreedor - saldodeudor
  2443. ppreferente = psaldoacreedor - psaldodeudor
  2444. DO psubtotal WITH preferente, ppreferente, " CAPITAL SOCIAL PREFERENTE:"
  2445. STORE 0 TO saldodeudor, saldoacreedor
  2446. STORE 0 TO psaldodeudor, psaldoacreedor
  2447. CASE pertenen = "BG" .AND. location = 18
  2448. utejercicio = saldoacreedor - saldodeudor
  2449. putejercicio = psaldoacreedor - psaldodeudor
  2450. DO psubtotal WITH utejercicio, putejercicio, " UTILIDAD DEL EJERCICIOS:"
  2451. STORE 0 TO saldodeudor, saldoacreedor
  2452. STORE 0 TO psaldodeudor, psaldoacreedor
  2453. CASE pertenen ="BG" .AND. location = 19
  2454. utretenida = saldoacreedor - saldodeudor
  2455. putretenida = psaldoacreedor - psaldodeudor
  2456. DO psubtotal WITH utretenida, putretenida, " UTILIDADES RETENIDAS:"
  2457. STORE 0 TO saldodeudor, saldoacreedor
  2458. STORE 0 TO psaldodeudor, psaldoacreedor
  2459. CASE pertenen = "BG" .AND. location = 20
  2460. suppagado = saldoacreedor - saldodeudor
  2461. psuppagado = psaldoacreedor - psaldodeudor
  2462. DO psubtotal WITH suppagado, psuppagado, " SUPERAVIT PAGADO:"
  2463. STORE 0 TO saldodeudor, saldoacreedor
  2464. STORE 0 TO psaldodeudor, psaldoacreedor
  2465. CASE pertenen = "PU" .AND. location = 21
  2466. v_supdonado = saldoacreedor - saldodeudor
  2467. pv_supdonado = psaldoacreedor - psaldodeudor
  2468. DO psubtotal WITH v_supdonado, pv_supdonado, " SUPERAVIT DONADO:"
  2469. STORE 0 TO saldodeudor, saldoacreedor
  2470. STORE 0 TO psaldodeudor, psaldoacreedor
  2471. ENDCASE
  2472. ENDIF
  2473. IF pertenen = "BG" .AND. ubicacion = 1 .AND. f1
  2474. linea = 56
  2475. DO detecta
  2476. linea = 7
  2477. IF pagina >= p_pini .AND. pagina <= p_pfin
  2478. @ linea, 0 SAY PADC( " BALANCE GENERAL ", col, "*" )
  2479. ENDIF
  2480. STORE 0 TO saldodeudor, saldoacreedor
  2481. STORE 0 TO psaldodeudor, psaldoacreedor
  2482. f1 = .F.
  2483. f2 = .T.
  2484. linea = linea + 3
  2485. ENDIF
  2486. IF pertenen = "PU" .AND. ubicacion = 1 .AND. f2
  2487. IF pagina >= p_pini .AND. pagina <= p_pfin
  2488. @ linea + 2,0 SAY PADC( " CUENTAS PUENTE ", col, "*" )
  2489. ENDIF
  2490. STORE 0 TO saldodeudor, saldoacreedor
  2491. STORE 0 TO psaldodeudor, psaldoacreedor
  2492. linea = linea + 3
  2493. DO detecta
  2494. f2 = .F.
  2495. ENDIF
  2496. ENDDO
  2497. CASE p_nivel = 3
  2498. f1 = .T.
  2499. cod = LEFT( clavecta, 10 )
  2500. principal = nombcta
  2501. adonde = pertenen
  2502. location = ubicacion
  2503. STORE 0 TO totsaldo, ptotsaldo
  2504. c = 1
  2505. DO WHILE !EOF()
  2506. IF p_sele1 = 2
  2507. DO muestra WITH c, v, pagina, totpag
  2508. ENDIF
  2509. totsaldo = totsaldo + ANUAL.saldo
  2510. ptotsaldo = ptotsaldo + PARCIAL.saldo
  2511. location = ubicacion
  2512. SKIP
  2513. c = c + 1
  2514. IF LEFT(clavecta, 10 ) = cod
  2515. LOOP
  2516. ELSE
  2517. IF pagina >= p_pini .AND. pagina <= p_pfin
  2518. @ linea, 0 SAY principal
  2519. ENDIF
  2520. IF moneda = "D"
  2521. IF pagina >= p_pini .AND. pagina <= p_pfin
  2522. @ linea, col - 80 SAY TRANSFORM( PARCIAL.saldodll, "999,999,999,999.99" )
  2523. @ linea, col - 40 SAY TRANSFORM( ANUAL.saldodll, "999,999,999,999.99" )
  2524. ENDIF
  2525. ENDIF
  2526. IF pagina >= p_pini .AND. pagina <= p_pfin
  2527. @ linea, col - 60 SAY TRANSFORM( ptotsaldo, "999,999,999,999.99" )
  2528. @ linea, col - 20 SAY TRANSFORM( totsaldo, "999,999,999,999.99" )
  2529. ENDIF
  2530. linea = linea + 1
  2531. DO Detecta
  2532. IF tipo = "D"
  2533. saldodeudor = saldodeudor + totsaldo
  2534. psaldodeudor = psaldodeudor + ptotsaldo
  2535. ELSE
  2536. saldoacreedor = saldoacreedor + totsaldo
  2537. psaldoacreedor = psaldoacreedor + ptotsaldo
  2538. ENDIF
  2539. cod = LEFT( clavecta, 10 )
  2540. principal = nombcta
  2541. STORE 0 TO totsaldo, ptotsaldo
  2542. ENDIF
  2543. IF ubicacion # location
  2544. DO CASE
  2545. CASE pertenen = "ER" .AND. location = 1
  2546. ingresos = saldoacreedor - saldodeudor
  2547. pingresos = psaldoacreedor - psaldodeudor
  2548. DO psubtotal WITH ingresos, pingresos, " TOTAL DE INGRESOS:"
  2549. STORE 0 TO saldodeudor, saldoacreedor
  2550. STORE 0 TO psaldodeudor, psaldoacreedor
  2551. CASE pertenen = "ER" .AND. location = 3
  2552. gastos = saldodeudor - saldoacreedor
  2553. pgastos = psaldodeudor - psaldoacreedor
  2554. DO psubtotal WITH gastos, pgastos, " TOTAL DE GASTOS NO FINANCIEROS:"
  2555. STORE 0 TO saldodeudor, saldoacreedor
  2556. STORE 0 TO psaldodeudor, psaldoacreedor
  2557. CASE pertenen = "ER" .AND. location = 4
  2558. gastosfin = saldodeudor - saldoacreedor
  2559. pgastosfin = psaldodeudor - psaldoacreedor
  2560. DO psubtotal WITH gastosfin, pgastosfin, " TOTAL DE GASTOS FINANCIEROS:"
  2561. STORE 0 TO saldodeudor, saldoacreedor
  2562. STORE 0 TO psaldodeudor, psaldoacreedor
  2563. CASE pertenen = "BG" .AND. location = 6
  2564. impuestos = saldodeudor - saldoacreedor
  2565. pimpuestos = psaldodeudor - psaldoacreedor
  2566. DO psubtotal WITH impuestos, pimpuestos, " TOTAL DE IMPUESTOS:"
  2567. STORE 0 TO saldodeudor, saldoacreedor
  2568. STORE 0 TO psaldodeudor, psaldoacreedor
  2569. CASE pertenen = "BG" .AND. location = 1
  2570. circulante = saldodeudor - saldoacreedor
  2571. pcirculante = psaldodeudor - psaldoacreedor
  2572. DO psubtotal WITH circulante, pcirculante, " TOTAL DE ACTIVOS CIRCULANTES:"
  2573. STORE 0 TO saldodeudor, saldoacreedor
  2574. STORE 0 TO psaldodeudor, psaldoacreedor
  2575. CASE pertenen = "BG" .AND. location = 2
  2576. cxc = saldodeudor - saldoacreedor
  2577. pcxc = psaldodeudor - psaldoacreedor
  2578. DO psubtotal WITH cxc, pcxc, " TOTAL DE CUENTAS POR COBRAR:"
  2579. STORE 0 TO saldodeudor, saldoacreedor
  2580. STORE 0 TO psaldodeudor, psaldoacreedor
  2581. CASE pertenen = "BG" .AND. location = 3
  2582. inventario = saldodeudor - saldoacreedor
  2583. pinventario = psaldodeudor - psaldoacreedor
  2584. DO psubtotal WITH inventario, pinventario, " TOTAL DE INVENTARIOS:"
  2585. STORE 0 TO saldodeudor, saldoacreedor
  2586. STORE 0 TO psaldodeudor, psaldoacreedor
  2587. CASE pertenen = "BG" .AND. location = 4
  2588. afijo = saldodeudor - saldoacreedor
  2589. pafijo = psaldodeudor - psaldoacreedor
  2590. DO psubtotal WITH afijo, pafijo, " TOTAL DE ACTIVO FIJO:"
  2591. STORE 0 TO saldodeudor, saldoacreedor
  2592. STORE 0 TO psaldodeudor, psaldoacreedor
  2593. CASE pertenen = "BG" .AND. location = 5
  2594. otroactivo = saldodeudor - saldoacreedor
  2595. potroactivo = psaldodeudor - psaldoacreedor
  2596. DO psubtotal WITH otroactivo, potroactivo, " TOTAL DE OTROS ACTIVOS:"
  2597. STORE 0 TO saldodeudor, saldoacreedor
  2598. STORE 0 TO psaldodeudor, psaldoacreedor
  2599. CASE pertenen = "BG" .AND. location = 7
  2600. pasivoxadqn = saldoacreedor - saldodeudor
  2601. ppasivoxadqn = psaldoacreedor - psaldodeudor
  2602. DO psubtotal WITH pasivoxadqn, ppasivoxadqn, " TOTAL PASIVOS X ADQUISICIONES:"
  2603. STORE 0 TO saldodeudor, saldoacreedor
  2604. STORE 0 TO psaldodeudor, psaldoacreedor
  2605. CASE pertenen = "BG" .AND. location = 8
  2606. cobrosanticip = saldoacreedor - saldodeudor
  2607. pcobrosanticip = psaldoacreedor - psaldodeudor
  2608. DO psubtotal WITH cobrosanticip, pcobrosanticip, " TOTAL PASIVO POR COBROS ANTICIPADOS:"
  2609. STORE 0 TO saldodeudor, saldoacreedor
  2610. STORE 0 TO psaldodeudor, psaldoacreedor
  2611. CASE pertenen = "BG" .AND. location = 9
  2612. consumos = saldoacreedor - saldodeudor
  2613. pconsumos = psaldoacreedor - psaldodeudor
  2614. DO psubtotal WITH consumos, pconsumos, " PASIVO POR ADQN. BIENES DE CONSUMO:"
  2615. STORE 0 TO saldodeudor, saldoacreedor
  2616. STORE 0 TO psaldodeudor, psaldoacreedor
  2617. CASE pertenen = "BG" .AND. location = 10
  2618. impuesto2 = saldoacreedor - saldodeudor
  2619. pimpuesto2 = psaldoacreedor - psaldodeudor
  2620. DO psubtotal WITH impuesto2, pimpuesto2, "PASIVOS CONTRAACTUALES E IMPOSITIVOS:"
  2621. STORE 0 TO saldodeudor, saldoacreedor
  2622. STORE 0 TO psaldodeudor, psaldoacreedor
  2623. CASE pertenen = "BG" .AND. location = 11
  2624. prestamos = saldoacreedor - saldodeudor
  2625. pprestamos = psaldoacreedor - psaldodeudor
  2626. DO psubtotal WITH prestamos, pprestamos, " PASIVOS POR OTROS PRESTAMOS:"
  2627. STORE 0 TO saldodeudor, saldoacreedor
  2628. STORE 0 TO psaldodeudor, psaldoacreedor
  2629. CASE pertenen = "BG" .AND. location = 13
  2630. continrep = saldoacreedor - saldodeudor
  2631. pcontinrep = psaldoacreedor - psaldodeudor
  2632. DO psubtotal WITH continrep, pcontinrep, " CONTINGENCIAS REPETIBLES:"
  2633. STORE 0 TO saldodeudor, saldoacreedor
  2634. STORE 0 TO psaldodeudor, psaldoacreedor
  2635. CASE pertenen = "BG" .AND. location = 14
  2636. continaisladas = saldoacreedor - saldodeudor
  2637. pcontinaisladas = psaldoacreedor - psaldodeudor
  2638. DO psubtotal WITH continaisladas, pcontinaisladas, " CONTINGENCIAS AISLADAS MEDIBLES:"
  2639. STORE 0 TO saldodeudor, saldoacreedor
  2640. STORE 0 TO psaldodeudor, psaldoacreedor
  2641. CASE pertenen = "PU" .AND. location = 16
  2642. ordinario = saldoacreedor - saldodeudor
  2643. pordinario = psaldoacreedor - psaldodeudor
  2644. DO psubtotal WITH ordinario, pordinario, " CAPITAL SOCIAL ORDINARIO:"
  2645. STORE 0 TO saldodeudor, saldoacreedor
  2646. STORE 0 TO psaldodeudor, psaldoacreedor
  2647. CASE pertenen = "BG" .AND. location = 17
  2648. preferente = saldoacreedor - saldodeudor
  2649. ppreferente = psaldoacreedor - psaldodeudor
  2650. DO psubtotal WITH preferente, ppreferente, " CAPITAL SOCIAL PREFERENTE:"
  2651. STORE 0 TO saldodeudor, saldoacreedor
  2652. STORE 0 TO psaldodeudor, psaldoacreedor
  2653. CASE pertenen = "BG" .AND. location = 18
  2654. utejercicio = saldoacreedor - saldodeudor
  2655. putejercicio = psaldoacreedor - psaldodeudor
  2656. DO psubtotal WITH utejercicio, putejercicio, " UTILIDAD DEL EJERCICIOS:"
  2657. STORE 0 TO saldodeudor, saldoacreedor
  2658. STORE 0 TO psaldodeudor, psaldoacreedor
  2659. CASE pertenen ="BG" .AND. location = 19
  2660. utretenida = saldoacreedor - saldodeudor
  2661. putretenida = psaldoacreedor - psaldodeudor
  2662. DO psubtotal WITH utretenida, putretenida, " UTILIDADES RETENIDAS:"
  2663. STORE 0 TO saldodeudor, saldoacreedor
  2664. STORE 0 TO psaldodeudor, psaldoacreedor
  2665. CASE pertenen = "BG" .AND. location = 20
  2666. suppagado = saldoacreedor - saldodeudor
  2667. psuppagado = psaldoacreedor - psaldodeudor
  2668. DO psubtotal WITH suppagado, psuppagado, " SUPERAVIT PAGADO:"
  2669. STORE 0 TO saldodeudor, saldoacreedor
  2670. STORE 0 TO psaldodeudor, psaldoacreedor
  2671. CASE pertenen = "PU" .AND. location = 21
  2672. v_supdonado = saldoacreedor - saldodeudor
  2673. pv_supdonado = psaldoacreedor - psaldodeudor
  2674. DO psubtotal WITH v_supdonado, pv_supdonado, " SUPERAVIT DONADO:"
  2675. STORE 0 TO saldodeudor, saldoacreedor
  2676. STORE 0 TO psaldodeudor, psaldoacreedor
  2677. ENDCASE
  2678. ENDIF
  2679. IF pertenen = "BG" .AND. ubicacion = 1 .AND. f1
  2680. linea = 56
  2681. DO detecta
  2682. linea = 7
  2683. IF pagina >= p_pini .AND. pagina <= p_pfin
  2684. @ linea, 0 SAY PADC( " BALANCE GENERAL ", col, "*" )
  2685. ENDIF
  2686. STORE 0 TO saldodeudor, saldoacreedor
  2687. STORE 0 TO psaldodeudor, psaldoacreedor
  2688. f1 = .F.
  2689. f2 = .T.
  2690. linea = linea + 3
  2691. ENDIF
  2692. IF pertenen = "PU" .AND. ubicacion = 1 .AND. f2
  2693. IF pagina >= p_pini .AND. pagina <= p_pfin
  2694. @ linea + 2,0 SAY PADC( " CUENTAS PUENTE ", col, "*" )
  2695. ENDIF
  2696. STORE 0 TO saldodeudor, saldoacreedor
  2697. STORE 0 TO psaldodeudor, psaldoacreedor
  2698. linea = linea + 3
  2699. DO detecta
  2700. f2 = .F.
  2701. ENDIF
  2702. ENDDO
  2703. CASE p_nivel = 4
  2704. *******************************************************
  2705. NOTE: Procedimiento modificado para el reporte PARCIAL ;
  2706. los campos de saldos deben llevar el ALIAS o AREA DE ;
  2707. TRABAJO para identificar si pertenencen a PARCIAL o ;
  2708. ANUAL.
  2709. ********************************************************
  2710. f1 = .T.
  2711. IF p_pini = 1
  2712. @ linea,0 SAY PADC(" ESTADOS DE RESULTADOS ", col, "*" )
  2713. linea = linea + 2
  2714. ENDIF
  2715. c = 1
  2716. DO WHILE !EOF()
  2717. IF p_sele1 = 2
  2718. DO muestra WITH c, v, pagina, totpag
  2719. ENDIF
  2720. IF pagina >= p_pini .AND. pagina <= p_pfin
  2721. @ linea,0 SAY nombcta
  2722. ENDIF
  2723. ***********************************************
  2724. NOTE: Primero deben ir los resultados PARCIALES y luego;
  2725. los ANUALES.
  2726. ***********************************************
  2727. IF tipo = "D"
  2728. saldodeudor = saldodeudor + ANUAL.saldo
  2729. psaldodeudor = psaldodeudor + PARCIAL.saldo
  2730. ELSE
  2731. saldoacreedor = saldoacreedor + ANUAL.saldo
  2732. psaldoacreedor = psaldoacreedor + PARCIAL.saldo
  2733. ENDIF
  2734. IF cargo <> 0 .OR. abono <> 0
  2735. IF moneda = "D"
  2736. IF pagina >= p_pini .AND. pagina <= p_pfin
  2737. @ linea, col - 80 SAY TRANSFORM( PARCIAL.saldodll, "999,999,999,999.99" )
  2738. @ linea, col - 40 SAY TRANSFORM( ANUAL.saldodll, "999,999,999,999.99" )
  2739. ENDIF
  2740. ENDIF
  2741. IF pagina >= p_pini .AND. pagina <= p_pfin
  2742. @ linea, col - 60 SAY TRANSFORM( PARCIAL.saldo, "999,999,999,999.99" )
  2743. @ linea, col - 20 SAY TRANSFORM( ANUAL.saldo, "999,999,999,999.99" )
  2744. endif
  2745. linea = linea + 1
  2746. DO Detecta
  2747. ELSE
  2748. linea = linea + 1
  2749. DO Detecta
  2750. ENDIF
  2751. location = ubicacion
  2752. SKIP
  2753. c = c + 1
  2754. IF ubicacion # location
  2755. DO CASE
  2756. CASE pertenen = "ER" .AND. location = 1
  2757. ingresos = saldoacreedor - saldodeudor
  2758. pingresos = psaldoacreedor - psaldodeudor
  2759. DO psubtotal WITH ingresos, pingresos, " TOTAL DE INGRESOS:"
  2760. STORE 0 TO saldodeudor, saldoacreedor
  2761. STORE 0 TO psaldodeudor, psaldoacreedor
  2762. CASE pertenen = "ER" .AND. location = 3
  2763. gastos = saldodeudor - saldoacreedor
  2764. pgastos = psaldodeudor - psaldoacreedor
  2765. DO psubtotal WITH gastos, pgastos, " TOTAL DE GASTOS NO FINANCIEROS:"
  2766. STORE 0 TO saldodeudor, saldoacreedor
  2767. STORE 0 TO psaldodeudor, psaldoacreedor
  2768. CASE pertenen = "ER" .AND. location = 4
  2769. gastosfin = saldodeudor - saldoacreedor
  2770. pgastosfin = psaldodeudor - psaldoacreedor
  2771. DO psubtotal WITH gastosfin, pgastosfin, " TOTAL DE GASTOS FINANCIEROS:"
  2772. STORE 0 TO saldodeudor, saldoacreedor
  2773. STORE 0 TO psaldodeudor, psaldoacreedor
  2774. CASE pertenen = "BG" .AND. location = 6
  2775. impuestos = saldodeudor - saldoacreedor
  2776. pimpuestos = psaldodeudor - psaldoacreedor
  2777. DO psubtotal WITH impuestos, pimpuestos, " TOTAL DE IMPUESTOS:"
  2778. STORE 0 TO saldodeudor, saldoacreedor
  2779. STORE 0 TO psaldodeudor, psaldoacreedor
  2780. CASE pertenen = "BG" .AND. location = 1
  2781. circulante = saldodeudor - saldoacreedor
  2782. pcirculante = psaldodeudor - psaldoacreedor
  2783. DO psubtotal WITH circulante, pcirculante, " TOTAL DE ACTIVOS CIRCULANTES:"
  2784. STORE 0 TO saldodeudor, saldoacreedor
  2785. STORE 0 TO psaldodeudor, psaldoacreedor
  2786. CASE pertenen = "BG" .AND. location = 2
  2787. cxc = saldodeudor - saldoacreedor
  2788. pcxc = psaldodeudor - psaldoacreedor
  2789. DO psubtotal WITH cxc, pcxc, " TOTAL DE CUENTAS POR COBRAR:"
  2790. STORE 0 TO saldodeudor, saldoacreedor
  2791. STORE 0 TO psaldodeudor, psaldoacreedor
  2792. CASE pertenen = "BG" .AND. location = 3
  2793. inventario = saldodeudor - saldoacreedor
  2794. pinventario = psaldodeudor - psaldoacreedor
  2795. DO psubtotal WITH inventario, pinventario, " TOTAL DE INVENTARIOS:"
  2796. STORE 0 TO saldodeudor, saldoacreedor
  2797. STORE 0 TO psaldodeudor, psaldoacreedor
  2798. CASE pertenen = "BG" .AND. location = 4
  2799. afijo = saldodeudor - saldoacreedor
  2800. pafijo = psaldodeudor - psaldoacreedor
  2801. DO psubtotal WITH afijo, pafijo, " TOTAL DE ACTIVO FIJO:"
  2802. STORE 0 TO saldodeudor, saldoacreedor
  2803. STORE 0 TO psaldodeudor, psaldoacreedor
  2804. CASE pertenen = "BG" .AND. location = 5
  2805. otroactivo = saldodeudor - saldoacreedor
  2806. potroactivo = psaldodeudor - psaldoacreedor
  2807. DO psubtotal WITH otroactivo, potroactivo, " TOTAL DE OTROS ACTIVOS:"
  2808. STORE 0 TO saldodeudor, saldoacreedor
  2809. STORE 0 TO psaldodeudor, psaldoacreedor
  2810. CASE pertenen = "BG" .AND. location = 7
  2811. pasivoxadqn = saldoacreedor - saldodeudor
  2812. ppasivoxadqn = psaldoacreedor - psaldodeudor
  2813. DO psubtotal WITH pasivoxadqn, ppasivoxadqn, " TOTAL PASIVOS X ADQUISICIONES:"
  2814. STORE 0 TO saldodeudor, saldoacreedor
  2815. STORE 0 TO psaldodeudor, psaldoacreedor
  2816. CASE pertenen = "BG" .AND. location = 8
  2817. cobrosanticip = saldoacreedor - saldodeudor
  2818. pcobrosanticip = psaldoacreedor - psaldodeudor
  2819. DO psubtotal WITH cobrosanticip, pcobrosanticip, " TOTAL PASIVO POR COBROS ANTICIPADOS:"
  2820. STORE 0 TO saldodeudor, saldoacreedor
  2821. STORE 0 TO psaldodeudor, psaldoacreedor
  2822. CASE pertenen = "BG" .AND. location = 9
  2823. consumos = saldoacreedor - saldodeudor
  2824. pconsumos = psaldoacreedor - psaldodeudor
  2825. DO psubtotal WITH consumos, pconsumos, " PASIVO POR ADQN. BIENES DE CONSUMO:"
  2826. STORE 0 TO saldodeudor, saldoacreedor
  2827. STORE 0 TO psaldodeudor, psaldoacreedor
  2828. CASE pertenen = "BG" .AND. location = 10
  2829. impuesto2 = saldoacreedor - saldodeudor
  2830. pimpuesto2 = psaldoacreedor - psaldodeudor
  2831. DO psubtotal WITH impuesto2, pimpuesto2, "PASIVOS CONTRAACTUALES E IMPOSITIVOS:"
  2832. STORE 0 TO saldodeudor, saldoacreedor
  2833. STORE 0 TO psaldodeudor, psaldoacreedor
  2834. CASE pertenen = "BG" .AND. location = 11
  2835. prestamos = saldoacreedor - saldodeudor
  2836. pprestamos = psaldoacreedor - psaldodeudor
  2837. DO psubtotal WITH prestamos, pprestamos, " PASIVOS POR OTROS PRESTAMOS:"
  2838. STORE 0 TO saldodeudor, saldoacreedor
  2839. STORE 0 TO psaldodeudor, psaldoacreedor
  2840. CASE pertenen = "BG" .AND. location = 13
  2841. continrep = saldoacreedor - saldodeudor
  2842. pcontinrep = psaldoacreedor - psaldodeudor
  2843. DO psubtotal WITH continrep, pcontinrep, " CONTINGENCIAS REPETIBLES:"
  2844. STORE 0 TO saldodeudor, saldoacreedor
  2845. STORE 0 TO psaldodeudor, psaldoacreedor
  2846. CASE pertenen = "BG" .AND. location = 14
  2847. continaisladas = saldoacreedor - saldodeudor
  2848. pcontinaisladas = psaldoacreedor - psaldodeudor
  2849. DO psubtotal WITH continaisladas, pcontinaisladas, " CONTINGENCIAS AISLADAS MEDIBLES:"
  2850. STORE 0 TO saldodeudor, saldoacreedor
  2851. STORE 0 TO psaldodeudor, psaldoacreedor
  2852. CASE pertenen = "BG" .OR. pertenen = "PU" .AND. location = 16
  2853. ordinario = saldoacreedor - saldodeudor
  2854. pordinario = psaldoacreedor - psaldodeudor
  2855. DO psubtotal WITH ordinario, pordinario, " CAPITAL SOCIAL ORDINARIO:"
  2856. STORE 0 TO saldodeudor, saldoacreedor
  2857. STORE 0 TO psaldodeudor, psaldoacreedor
  2858. CASE pertenen = "BG" .OR. pertenen = "PU" .AND. location = 17
  2859. preferente = saldoacreedor - saldodeudor
  2860. ppreferente = psaldoacreedor - psaldodeudor
  2861. DO psubtotal WITH preferente, ppreferente, " CAPITAL SOCIAL PREFERENTE:"
  2862. STORE 0 TO saldodeudor, saldoacreedor
  2863. STORE 0 TO psaldodeudor, psaldoacreedor
  2864. CASE pertenen = "BG" .OR. pertenen = "PU" .AND. location = 18
  2865. utejercicio = saldoacreedor - saldodeudor
  2866. putejercicio = psaldoacreedor - psaldodeudor
  2867. DO psubtotal WITH utejercicio, putejercicio, " UTILIDAD DEL EJERCICIOS:"
  2868. STORE 0 TO saldodeudor, saldoacreedor
  2869. STORE 0 TO psaldodeudor, psaldoacreedor
  2870. CASE pertenen ="BG" .OR. pertenen = "PU" .AND. location = 19
  2871. utretenida = saldoacreedor - saldodeudor
  2872. putretenida = psaldoacreedor - psaldodeudor
  2873. DO psubtotal WITH utretenida, putretenida, " UTILIDADES RETENIDAS:"
  2874. STORE 0 TO saldodeudor, saldoacreedor
  2875. STORE 0 TO psaldodeudor, psaldoacreedor
  2876. CASE pertenen = "BG" .OR. pertenen = "PU" .AND. location = 20
  2877. suppagado = saldoacreedor - saldodeudor
  2878. psuppagado = psaldoacreedor - psaldodeudor
  2879. DO psubtotal WITH suppagado, psuppagado, " SUPERAVIT PAGADO:"
  2880. STORE 0 TO saldodeudor, saldoacreedor
  2881. STORE 0 TO psaldodeudor, psaldoacreedor
  2882. CASE pertenen = "PU" .AND. location = 21
  2883. v_supdonado = saldoacreedor - saldodeudor
  2884. pv_supdonado = psaldoacreedor - psaldodeudor
  2885. DO psubtotal WITH v_supdonado, pv_supdonado, " SUPERAVIT DONADO:"
  2886. STORE 0 TO saldodeudor, saldoacreedor
  2887. STORE 0 TO psaldodeudor, psaldoacreedor
  2888. ENDCASE
  2889. ENDIF
  2890. IF pertenen = "BG" .AND. ubicacion = 1 .AND. f1
  2891. linea = 56
  2892. DO detecta
  2893. linea = 7
  2894. IF pagina >= p_pini .AND. pagina <= p_pfin
  2895. @ linea, 0 SAY PADC( " BALANCE GENERAL ", col, "*" )
  2896. ENDIF
  2897. STORE 0 TO saldodeudor, saldoacreedor
  2898. STORE 0 TO psaldodeudor, psaldoacreedor
  2899. f1 = .F.
  2900. f2 = .T.
  2901. linea = linea + 3
  2902. ENDIF
  2903. IF pertenen = "PU" .AND. ubicacion = 1 .AND. f2
  2904. IF pagina >= p_pini .AND. pagina <= p_pfin
  2905. @ linea + 2,0 SAY PADC( " CUENTAS PUENTE ", col, "*" )
  2906. ENDIF
  2907. STORE 0 TO saldodeudor, saldoacreedor
  2908. STORE 0 TO psaldodeudor, psaldoacreedor
  2909. linea = linea + 3
  2910. DO detecta
  2911. f2 = .F.
  2912. ENDIF
  2913. ENDDO
  2914. ENDCASE
  2915. IF pagina >= p_pini .AND. pagina <= p_pfin
  2916. c = c + 1
  2917. linea = 56
  2918. DO DETECTA
  2919. utsresulter = ingresos - gastos - gastosfin - impuestos
  2920. putsresulter = pingresos - pgastos - pgastosfin - pimpuestos
  2921. @ linea,12 SAY "Estados de Resultados PARCIALES Condensado"
  2922. @ linea,77 SAY "Estados de Resultados ACUMULADO Condensado"
  2923. @ linea+1, 7 SAY REPLICATE("Ä", 54 )
  2924. @ linea+1,72 SAY REPLICATE("Ä", 54 )
  2925. @ linea+2,7 SAY " Total de Ingresos : " + TRANSFORM( pingresos, "999,999,999,999.99")
  2926. @ linea+2,72 SAY " Total de Ingresos : " + TRANSFORM( ingresos, "999,999,999,999.99")
  2927. @ linea+3,7 SAY "(-) Gastos NO Financieros : " + TRANSFORM( pgastos, "999,999,999,999.99")
  2928. @ linea+3,72 SAY "(-) Gastos NO Financieros : " + TRANSFORM( gastos, "999,999,999,999.99")
  2929. @ linea+4,7 SAY "(-) Gastos Financieros : " + TRANSFORM( pgastosfin, "999,999,999,999.99")
  2930. @ linea+4,72 SAY "(-) Gastos Financieros : " + TRANSFORM( gastosfin, "999,999,999,999.99")
  2931. @ linea+5,43 SAY REPLICATE("Ä", 18 )
  2932. @ linea+5,108 SAY REPLICATE("Ä", 18 )
  2933. @ linea+6,7 SAY "(=) Utilidad antes de Impuestos : " + TRANSFORM( pingresos-gastos-gastosfin, "999,999,999,999.99")
  2934. @ linea+6,72 SAY "(=) Utilidad antes de Impuestos : " + TRANSFORM( ingresos-gastos-gastosfin, "999,999,999,999.99")
  2935. @ linea+7,7 SAY "(-) Impuestos : " + TRANSFORM( pimpuestos, "999,999,999,999.99")
  2936. @ linea+7,72 SAY "(-) Impuestos : " + TRANSFORM( impuestos, "999,999,999,999.99")
  2937. @ linea+8,43 SAY REPLICATE("Ä", 18 )
  2938. @ linea+8,108 SAY REPLICATE("Ä", 18 )
  2939. @ linea+9,7 SAY "(=) Utilidad despues de Impuestos: " + TRANSFORM( putsresulter, "999,999,999,999.99")
  2940. @ linea+9,72 SAY "(=) Utilidad despues de Impuestos: " + TRANSFORM( utsresulter, "999,999,999,999.99")
  2941. c = c + 12
  2942. IF p_sele1 = 2
  2943. DO muestra WITH c, v, pagina, totpag
  2944. ENDIF
  2945. linea = linea + 12
  2946. DO detecta
  2947. activototal = circulante + cxc + inventario + afijo + otroactivo
  2948. pactivototal = pcirculante + pcxc + pinventario + pafijo + potroactivo
  2949. @ linea,12 SAY "Resumen de los Activos PARCIALES"
  2950. @ linea,77 SAY "Resumen de los Activos ACUMULADOS"
  2951. @ linea+1,7 SAY REPLICATE("Ä", 54 )
  2952. @ linea+1,72 SAY REPLICATE("Ä", 54 )
  2953. @ linea+2,7 SAY " Activo circulante total : " + TRANSFORM( pcirculante, "999,999,999,999.99")
  2954. @ linea+2,72 SAY " Activo circulante total : " + TRANSFORM( circulante, "999,999,999,999.99")
  2955. @ linea+3,7 SAY "(+) Cuentas por Cobrar : " + TRANSFORM( pcxc, "999,999,999,999.99")
  2956. @ linea+3,72 SAY "(+) Cuentas por Cobrar : " + TRANSFORM( cxc, "999,999,999,999.99")
  2957. @ linea+4,7 SAY "(+) Inventarios : " + TRANSFORM( pinventario, "999,999,999,999.99")
  2958. @ linea+4,72 SAY "(+) Inventarios : " + TRANSFORM( inventario, "999,999,999,999.99")
  2959. @ linea+5,7 SAY "(+) Activo Fijo Neto : " + TRANSFORM( pafijo, "999,999,999,999.99")
  2960. @ linea+5,72 SAY "(+) Activo Fijo Neto : " + TRANSFORM( afijo, "999,999,999,999.99")
  2961. @ linea+6,7 SAY "(+) Otros Activos : " + TRANSFORM( potroactivo, "999,999,999,999.99")
  2962. @ linea+6,72 SAY "(+) Otros Activos : " + TRANSFORM( otroactivo, "999,999,999,999.99")
  2963. @ linea+7,43 SAY REPLICATE( "Ä", 18 )
  2964. @ linea+7,108 SAY REPLICATE( "Ä", 18 )
  2965. @ linea+8,7 SAY "(=) Total de Activos : " + TRANSFORM( pactivototal, "999,999,999,999.99")
  2966. @ linea+8,72 SAY "(=) Total de Activos : " + TRANSFORM( activototal, "999,999,999,999.99")
  2967. @ linea+9,43 SAY REPLICATE( "Í", 18 )
  2968. @ linea+9,108 SAY REPLICATE( "Í", 18 )
  2969. c = c + 12
  2970. IF p_sele1 = 2
  2971. DO muestra WITH c, v, pagina, totpag
  2972. ENDIF
  2973. linea = linea + 12
  2974. DO detecta
  2975. pasivototal = pasivoxadqn + cobrosanticip + consumos + impuesto2 + prestamos
  2976. ppasivototal = ppasivoxadqn + pcobrosanticip + pconsumos + pimpuesto2 + pprestamos
  2977. @ linea,12 SAY "Resumen de los Pasivos PARCIALES"
  2978. @ linea,77 SAY "Resumen de los Pasivos ACUMULADOS"
  2979. @ linea+1,7 SAY REPLICATE("Ä", 54 )
  2980. @ linea+1,72 SAY REPLICATE("Ä", 54 )
  2981. @ linea+2,7 SAY " Pasivos por Adquisiciones : " + TRANSFORM( ppasivoxadqn, "999,999,999,999.99")
  2982. @ linea+2,72 SAY " Pasivos por Adquisiciones : " + TRANSFORM( pasivoxadqn, "999,999,999,999.99")
  2983. @ linea+3,7 SAY "(+) Cobros anticipados : " + TRANSFORM( pcobrosanticip, "999,999,999,999.99")
  2984. @ linea+3,72 SAY "(+) Cobros anticipados : " + TRANSFORM( cobrosanticip, "999,999,999,999.99")
  2985. @ linea+4,7 SAY "(+) Pasivos para Consumo : " + TRANSFORM( pconsumos, "999,999,999,999.99")
  2986. @ linea+4,72 SAY "(+) Pasivos para Consumo : " + TRANSFORM( consumos, "999,999,999,999.99")
  2987. @ linea+5,7 SAY "(+) Contratos e Impuestos : " + TRANSFORM( pimpuesto2, "999,999,999,999.99")
  2988. @ linea+5,72 SAY "(+) Contratos e Impuestos : " + TRANSFORM( impuesto2, "999,999,999,999.99")
  2989. @ linea+6,7 SAY "(+) Otros Prestamos : " + TRANSFORM( pprestamos, "999,999,999,999.99")
  2990. @ linea+6,72 SAY "(+) Otros Prestamos : " + TRANSFORM( prestamos, "999,999,999,999.99")
  2991. @ linea+7,43 SAY REPLICATE( "Ä", 18 )
  2992. @ linea+7,108 SAY REPLICATE( "Ä", 18 )
  2993. @ linea+8,7 SAY "(=) Total de Pasivos : " + TRANSFORM( ppasivototal, "999,999,999,999.99")
  2994. @ linea+8,72 SAY "(=) Total de Pasivos : " + TRANSFORM( pasivototal, "999,999,999,999.99")
  2995. @ linea+9,43 SAY REPLICATE( "Í", 18 )
  2996. @ linea+9,108 SAY REPLICATE( "Í", 18 )
  2997. c = c + 12
  2998. IF p_sele1 = 2
  2999. DO muestra WITH c, v, pagina, totpag
  3000. ENDIF
  3001. linea = linea + 12
  3002. DO detecta
  3003. contingencias = continrep + continaisladas
  3004. pcontingencias = pcontinrep + pcontinaisladas
  3005. @ linea,12 SAY "Resumen de las Contingencias PARCIALES"
  3006. @ linea,77 SAY "Resumen de las Contingencias ACUMULADAS"
  3007. @ linea+1,7 SAY REPLICATE("Ä", 54 )
  3008. @ linea+1,72 SAY REPLICATE("Ä", 54 )
  3009. @ linea+2,7 SAY " Contingencias Repetibles : " + TRANSFORM( pcontinrep, "999,999,999,999.99")
  3010. @ linea+2,72 SAY " Contingencias Repetibles : " + TRANSFORM( continrep, "999,999,999,999.99")
  3011. @ linea+3,7 SAY "(+) Conting. Aisladas Medibles : " + TRANSFORM( pcontinaisladas, "999,999,999,999.99")
  3012. @ linea+3,72 SAY "(+) Conting. Aisladas Medibles : " + TRANSFORM( continaisladas, "999,999,999,999.99")
  3013. @ linea+4,43 SAY REPLICATE( "Ä", 18 )
  3014. @ linea+4,108 SAY REPLICATE( "Ä", 18 )
  3015. @ linea+5,7 SAY "(=) Total de activos : " + TRANSFORM( pcontingencias, "999,999,999,999.99")
  3016. @ linea+5,72 SAY "(=) Total de activos : " + TRANSFORM( contingencias, "999,999,999,999.99")
  3017. @ linea+6,43 SAY REPLICATE( "Í", 18 )
  3018. @ linea+6,108 SAY REPLICATE( "Í", 18 )
  3019. c = c + 8
  3020. IF p_sele1 = 2
  3021. DO muestra WITH c, v, pagina, totpag
  3022. ENDIF
  3023. linea = linea + 8
  3024. DO detecta
  3025. capitaltotal = ordinario + preferente + utejercicio + utretenida + suppagado + v_supdonado + utsresulter
  3026. pcapitaltotal = pordinario + ppreferente + putejercicio + putretenida + psuppagado + pv_supdonado + putsresulter
  3027. @ linea,12 SAY "Resumen del Capital PARCIALES"
  3028. @ linea,77 SAY "Resumen del Capital ACUMULADOS"
  3029. @ linea+1,7 SAY REPLICATE("Ä", 54 )
  3030. @ linea+1,72 SAY REPLICATE("Ä", 54 )
  3031. @ linea+2,7 SAY " Capital Social Ordinario : " + TRANSFORM( pordinario, "999,999,999,999.99")
  3032. @ linea+2,72 SAY " Capital Social Ordinario : " + TRANSFORM( ordinario, "999,999,999,999.99")
  3033. @ linea+3,7 SAY "(+) Capital Social Preferente : " + TRANSFORM( ppreferente, "999,999,999,999.99")
  3034. @ linea+3,72 SAY "(+) Capital Social Preferente : " + TRANSFORM( preferente, "999,999,999,999.99")
  3035. @ linea+4,7 SAY "(+) Utilidad del Ejercicio : " + TRANSFORM( putejercicio, "999,999,999,999.99")
  3036. @ linea+4,72 SAY "(+) Utilidad del Ejercicio : " + TRANSFORM( utejercicio, "999,999,999,999.99")
  3037. @ linea+5,7 SAY "(+) Utilidades Retenidas : " + TRANSFORM( putretenida, "999,999,999,999.99")
  3038. @ linea+5,72 SAY "(+) Utilidades Retenidas : " + TRANSFORM( utretenida, "999,999,999,999.99")
  3039. @ linea+6,7 SAY "(+) Superavit Pagado : " + TRANSFORM( psuppagado, "999,999,999,999.99")
  3040. @ linea+6,72 SAY "(+) Superavit Pagado : " + TRANSFORM( suppagado, "999,999,999,999.99")
  3041. @ linea+7,7 SAY "(+) Superavit Donado : " + TRANSFORM( pv_supdonado, "999,999,999,999.99")
  3042. @ linea+7,72 SAY "(+) Superavit Donado : " + TRANSFORM( v_supdonado, "999,999,999,999.99")
  3043. @ linea+8,7 SAY "(+) Utilidad Despues de Impuestos: " + TRANSFORM( putsresulter, "999,999,999,999.99")
  3044. @ linea+8,72 SAY "(+) Utilidad Despues de Impuestos: " + TRANSFORM( utsresulter, "999,999,999,999.99")
  3045. @ linea+9,43 SAY REPLICATE( "Ä", 18 )
  3046. @ linea+9,108 SAY REPLICATE( "Ä", 18 )
  3047. @ linea+10,7 SAY "(=) Capital total : " + TRANSFORM( pcapitaltotal, "999,999,999,999.99")
  3048. @ linea+10,72 SAY "(=) Capital total : " + TRANSFORM( capitaltotal, "999,999,999,999.99")
  3049. @ linea+11,43 SAY REPLICATE( "Í", 18 )
  3050. @ linea+11,108 SAY REPLICATE( "Í", 18 )
  3051. c = c + 12
  3052. IF p_sele1 = 2
  3053. DO muestra WITH c, v, pagina, totpag
  3054. ENDIF
  3055. ENDIF
  3056. linea = linea + 12
  3057. DO detecta
  3058. IF pagina >= p_pini .AND. pagina <= p_pfin
  3059. @ linea,12 SAY "CUADRE DEL BALANCE GENERAL EN PARCIALES"
  3060. @ linea,77 SAY "CUADRE DEL BALANCE GENERAL EN ACUMULADO"
  3061. @ linea+1,7 SAY REPLICATE("Ä", 54 )
  3062. @ linea+1,72 SAY REPLICATE("Ä", 54 )
  3063. @ linea+2,7 SAY " PASIVOS : " + TRANSFORM( ppasivototal, "999,999,999,999.99")
  3064. @ linea+2,72 SAY " PASIVOS : " + TRANSFORM( pasivototal, "999,999,999,999.99")
  3065. @ linea+3,7 SAY "(+) CONTINGENCIAS : " + TRANSFORM( pcontingencias, "999,999,999,999.99")
  3066. @ linea+3,72 SAY "(+) CONTINGENCIAS : " + TRANSFORM( contingencias, "999,999,999,999.99")
  3067. @ linea+4,7 SAY "(+) CAPITAL : " + TRANSFORM( pcapitaltotal, "999,999,999,999.99")
  3068. @ linea+4,72 SAY "(+) CAPITAL : " + TRANSFORM( capitaltotal, "999,999,999,999.99")
  3069. @ linea+5,43 SAY REPLICATE( "Ä", 18 )
  3070. @ linea+5,108 SAY REPLICATE( "Ä", 18 )
  3071. ppasivototal = ppasivototal + pcontingencias + pcapitaltotal
  3072. pasivototal = pasivototal + contingencias + capitaltotal
  3073. @ linea+6,7 SAY "(=) PASIVO + CAPITAL : " + TRANSFORM( ppasivototal, "999,999,999,999.99")
  3074. @ linea+6,72 SAY "(=) PASIVO + CAPITAL : " + TRANSFORM( pasivototal, "999,999,999,999.99")
  3075. @ linea+7,7 SAY " ACTIVOS : " + TRANSFORM( pactivototal, "999,999,999,999.99")
  3076. @ linea+7,72 SAY " ACTIVOS : " + TRANSFORM( activototal, "999,999,999,999.99")
  3077. @ linea+8,43 SAY REPLICATE( "Ä", 18 )
  3078. @ linea+8,108 SAY REPLICATE( "Ä", 18 )
  3079. @ linea+9,7 SAY "Diferencias A - (P + C) : " + TRANSFORM( pactivototal - ppasivototal, "999,999,999,999.99")
  3080. @ linea+9,72 SAY "Diferencias A - (P + C) : " + TRANSFORM( activototal - pasivototal, "999,999,999,999.99")
  3081. @ linea+10,43 SAY REPLICATE( "Í", 18 )
  3082. @ linea+10,108 SAY REPLICATE( "Í", 18 )
  3083. @ linea+12,7 SAY "Tipo de Cambio de Valuacion : " + TRANSFORM( cambio, "999,999.999999")
  3084. @ linea+12,72 SAY "Tipo de Cambio de Valuacion : " + TRANSFORM( cambio, "999,999.999999")
  3085. ENDIF
  3086. IF p_sele1 = 1
  3087. c = c + 12
  3088. IF p_sele1 = 2
  3089. DO muestra WITH c, v, pagina, totpag
  3090. ENDIF
  3091. linea = 57
  3092. DO detecta
  3093. ENDIF
  3094. RETURN
  3095.  
  3096. *!*****************************************************************************
  3097. *!
  3098. *! Procedure: PFILL
  3099. *!
  3100. *! Called by: LLENADO (procedure in CONEDFIN.PRG)
  3101. *!
  3102. *!*****************************************************************************
  3103. PROCEDURE Pfill
  3104. ******************************
  3105. * Procedimiento de llenado para reporte
  3106. *
  3107. STORE 0 TO porcent, desp
  3108. c = 1
  3109. FOR J = 1 TO 3 && Este For son Balance/EdoResult/Cts Puentes
  3110. SELECT 3
  3111. totreg = RECCOUNT()
  3112. SET FILTER TO
  3113. DO CASE
  3114. CASE J = 1
  3115. P = "ER"
  3116. R = 6
  3117. MENSAJE = "Estados de Resultados"
  3118. CASE J = 2
  3119. P = "BG"
  3120. R = 21
  3121. MENSAJE = "Balance General"
  3122. CASE J = 3
  3123. CONTADOR = 0
  3124. SCAN FOR UPPER (PERTENEN) = "PU"
  3125. CONTADOR = CONTADOR + 1
  3126. ENDSCAN
  3127. P = "PU"
  3128. R = 2
  3129. MENSAJE = "Cuentas Puente"
  3130. IF CONTADOR = 0
  3131. EXIT
  3132. ENDIF
  3133. ENDCASE
  3134. FOR I = 1 TO R
  3135. SELECT 3
  3136. SET FILTER TO UBICACION = I AND PERTENEN = P
  3137. GO TOP
  3138. CODIGO = CLAVECTA
  3139. INICIO = CTA
  3140. DO WHILE !EOF()
  3141. CODIGO = CLAVECTA
  3142. TIPOMON = MONEDA
  3143. tiponat = tipo
  3144. what = pertenen
  3145. where = ubicacion
  3146. DO CASE
  3147. CASE CTA <> SPACE(4) AND SCTA <> SPACE(3) AND SSCTA <> SPACE(3) AND SSSCTA <> SPACE(3)
  3148. X = CTA + " - " + SCTA + " - " + SSCTA + " - " + SSSCTA + "."
  3149. Y = NSSSCTA
  3150. Z = SPACE(1)
  3151. CASE CTA <> SPACE(4) AND SCTA <> SPACE(3) AND SSCTA <> SPACE(3) AND SSSCTA = SPACE(3)
  3152. X = CTA + " - " + SCTA + " - " + SSCTA + "."
  3153. Y = NSSCTA
  3154. Z = SPACE(1)
  3155. CASE CTA <> SPACE(4) AND SCTA <> SPACE(3) AND SSCTA = SPACE(3) AND SSSCTA = SPACE(3)
  3156. X = CTA + " - " + SCTA + "."
  3157. Y = NSCTA
  3158. Z = SPACE(1)
  3159. CASE CTA <> SPACE(4) AND SCTA = SPACE(3) AND SSCTA = SPACE(3) AND SSSCTA = SPACE(3)
  3160. X = CTA + "."
  3161. Y = NCTA
  3162. ENDCASE
  3163. ACTIVATE WINDOW status
  3164. porcent = INT( ( c * 100 ) / totreg )
  3165. desp = INT( ( c * 40 ) / totreg )
  3166. @ 5,8 SAY "" COLOR GR+*/W
  3167. @ 10,10 SAY REPLICATE( "Û", desp ) COLOR GR+/B
  3168. @ 11,0 SAY PADC( STR( porcent, 3 ) + " % ", WCOLS() ) COLOR R/W
  3169. @ WROWS()-1,0 SAY PADC("PERIODO PARCIAL", WCOLS() ) COLOR GR+/GR
  3170. SELECT PARCIAL
  3171. APPEND BLANK
  3172. REPLACE clavecta WITH codigo, nombcta WITH x+SPACE(5)+y
  3173. REPLACE moneda WITH tipomon, pertenen WITH what, tipo WITH tiponat
  3174. REPLACE ubicacion WITH where
  3175. SELECT 3
  3176. SKIP
  3177. c = c + 1
  3178. IF CTA <> INICIO
  3179. INICIO = CTA
  3180. ENDIF
  3181. ENDDO
  3182. NEXT
  3183. ENDFOR
  3184. @ 5,8 SAY "" COLOR R/W
  3185. @ 10,10 SAY REPLICATE( "°", 40 )
  3186. SELECT PARCIAL
  3187. STORE 0 TO ctap, ctad
  3188. SCAN FOR moneda = "P"
  3189. ctap = ctap + 1
  3190. ENDSCAN
  3191. SCAN FOR moneda = "D"
  3192. ctad = ctad + 1
  3193. ENDSCAN
  3194. GO TOP
  3195. STORE 0 TO porcent, desp
  3196. c = 1
  3197. SET FILTER TO moneda = "P"
  3198. DO WHILE !EOF()
  3199. codigo = clavecta
  3200. tiponat = tipo
  3201. x = LEFT(clavecta, 4) + " - " + SUBSTR(clavecta, 5, 3 ) + " - " + SUBSTR(clavecta, 9, 3 ) + " - " + RIGHT(clavecta,3) + "."
  3202. SELECT 1
  3203. TOTCARGOS = 0
  3204. TOTABONOS = 0
  3205. CALCULATE SUM(CARGOS) FOR CLAVECTA = CODIGO .AND. fechacont >= a_fechaini .AND. fechacont <= a_fechafin TO TOTCARGOS
  3206. CALCULATE SUM(ABONOS) FOR CLAVECTA = CODIGO .AND. fechacont >= a_fechaini .AND. fechacont <= a_fechafin TO TOTABONOS
  3207. IF tiponat = "D"
  3208. V_SALDO = totCARGOS - totABONOS
  3209. ELSE
  3210. IF tiponat = "A"
  3211. V_SALDO = totabonos - totcargos
  3212. ELSE
  3213. v_SALDO = 999999999.99
  3214. ENDIF
  3215. ENDIF
  3216. ACTIVATE WINDOW status
  3217. porcent = INT( ( c * 100 ) / ctap )
  3218. desp = INT( ( c * 40 ) / ctap )
  3219. @ 6,8 SAY "" COLOR GR+*/W
  3220. @ 10,10 SAY REPLICATE( "Û", desp ) COLOR GR+/B
  3221. @ 11,0 SAY PADC( STR( porcent, 3 ) + " % ", WCOLS() ) COLOR R/W
  3222. @ WROWS()-1,0 SAY PADC("PERIODO PARCIAL", WCOLS() ) COLOR GR+/GR
  3223. SELECT PARCIAL
  3224. REPLACE saldo WITH v_saldo, cargo WITH totcargos, abono WITH totabonos
  3225. SKIP
  3226. c = c + 1
  3227. ENDDO
  3228. @ 6,8 SAY "" COLOR R/W
  3229. @ 10,10 SAY REPLICATE( "°", 40 )
  3230. SELECT 6
  3231. cambio = 0
  3232. LOCATE FOR fechacont = a_fechafin
  3233. IF !FOUND()
  3234. CAMBIO = PTIPOCAMB
  3235. ELSE
  3236. CAMBIO = tipocambio
  3237. ENDIF
  3238. SELECT PARCIAL
  3239. GO TOP
  3240. STORE 0 TO porcent, desp
  3241. c = 1
  3242. SET FILTER TO moneda = "D"
  3243. DO WHILE !EOF()
  3244. codigo = clavecta
  3245. tiponat = tipo
  3246. x = LEFT(clavecta, 4) + " - " + SUBSTR(clavecta, 5, 3 ) + " - " + SUBSTR(clavecta, 9, 3 ) + " - " + RIGHT(clavecta,3) + "."
  3247. SELECT 2
  3248. STORE 0 TO TOTCARGOS, TOTABONOS, totcardll, totabodll, saldll
  3249. CALCULATE SUM (CARGOS) FOR CLAVECTA = codigo .AND. fechacont >= a_fechaini .AND. fechacont <= a_fechafin TO TOTCARGOS
  3250. CALCULATE SUM (ABONOS) FOR CLAVECTA = codigo .AND. fechacont >= a_fechaini .AND. fechacont <= a_fechafin TO TOTABONOS
  3251. totcardll = totcargos
  3252. totabodll = totabonos
  3253. totcargos = totcargos * cambio
  3254. totabonos = totabonos * cambio
  3255. IF tiponat = "D"
  3256. V_SALDO = totCARGOS - totABONOS
  3257. saldll = totcardll - totabodll
  3258. ELSE
  3259. IF tiponat = "A"
  3260. V_SALDO = totabonos - totcargos
  3261. saldll = totabodll - totcardll
  3262. ENDIF
  3263. ENDIF
  3264. ACTIVATE WINDOW status
  3265. porcent = INT( ( c * 100 ) / ctad )
  3266. desp = INT( ( c * 40 ) / ctad )
  3267. @ 7,8 SAY "" COLOR GR+*/W
  3268. @ 10,10 SAY REPLICATE( "Û", desp ) COLOR GR+/B
  3269. @ 11,0 SAY PADC( STR( porcent, 3 ) + " % ", WCOLS() ) COLOR R/W
  3270. @ WROWS()-1,0 SAY PADC("PERIODO PARCIAL", WCOLS() ) COLOR GR+/GR
  3271. SELECT PARCIAL
  3272. REPLACE saldo WITH v_saldo, cargo WITH totcargos, abono WITH totabonos
  3273. REPLACE saldodll WITH saldll
  3274. c = c + 1
  3275. * IF c > ctad
  3276. * EXIT
  3277. * ENDIF
  3278. SKIP
  3279. IF EOF()
  3280. EXIT
  3281. ENDIF
  3282. ENDDO
  3283. @ 5,8 say " "
  3284. @ 6,8 SAY " "
  3285. @ 7,8 SAY " " COLOR R/W
  3286. @ 10,10 CLEAR TO 10,WCOLS()-2
  3287. @ 10,10 SAY REPLICATE( "°", 40 )
  3288. RETURN
  3289.  
  3290. *!*****************************************************************************
  3291. *!
  3292. *! Procedure: PSUBTOTAL
  3293. *!
  3294. *! Called by: PIMPRIME (procedure in CONEDFIN.PRG)
  3295. *!
  3296. *! Calls: DETECTA (procedure in CONREAUX.PRG)
  3297. *!
  3298. *!*****************************************************************************
  3299. PROCEDURE psubtotal
  3300. PARAMETERS cantidad, bcantidad, mensaje
  3301. IF cantidad <> 0 &&.AND. bcantidad <> 0
  3302. linea = linea + 1
  3303. DO detecta
  3304. IF pagina >= p_pini .AND. pagina <= p_pfin
  3305. @ linea, 0 SAY REPLICATE( "Ä", col )
  3306. ENDIF
  3307. linea = linea + 1
  3308. Do detecta
  3309. IF pagina >= p_pini .AND. pagina <= p_pfin
  3310. IF informe = 2
  3311. @ linea, 23 SAY mensaje + TRANSFORM( cantidad, "999,999,999,999.99")
  3312. ELSE
  3313. @ linea, 39 SAY mensaje + TRANSFORM( bcantidad, "999,999,999,999.99")
  3314. @ linea, 116 SAY TRANSFORM( cantidad, "999,999,999,999.99")
  3315. ENDIF
  3316. ENDIF
  3317. linea = linea + 1
  3318. DO detecta
  3319. IF pagina >= p_pini .AND. pagina <= p_pfin
  3320. IF informe = 2
  3321. @ linea, 63 SAY "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
  3322. ELSE
  3323. @ linea, 79 SAY "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
  3324. @ linea, 119 SAY "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
  3325. ENDIF
  3326. ENDIF
  3327. linea = linea + 1
  3328. DO detecta
  3329. ENDIF
  3330. RETURN
  3331. *: EOF: CONEDFIN.PRG
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement