Advertisement
Guest User

Untitled

a guest
Aug 6th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. lparameters m.empresa
  2. wait window "Generando Remesa..." nowait
  3.  
  4. local m.canal, m.archivo, m.año, m.numero, m.concepto, m.totimporte, m.linea, m.ancorder, m.recibos, m.fechacargo, ;
  5.     m.remesa, m.datos, m.omitidos, m.fecha, m.curso, m.referencia, m.refint
  6. =seek(m.empresa, "empresas", "codigo")
  7.  
  8. m.remesa = sys(2015)
  9. m.fecha = app.date
  10.  
  11. m.archivo = "remesas\" + dtos(m.fecha) + "_" + padl(alltrim(str(m.empresa)), 1, "0") + m.remesa + ".txt"
  12. m.fechacargo = m.fecha + 1
  13.  
  14. do form pidefecha with m.fechacargo, "Fecha de Cargo" to m.fechacargo
  15. if empty(m.fechacargo)
  16.     return ""
  17. endif
  18.  
  19. if empty(m.archivo)
  20.     return ""
  21. endif
  22.  
  23. select all ;
  24.     alltrim(alltrim(alumnas.nombre) + " " + alltrim(alumnas.apellido1) + " " + alltrim(alumnas.apellido2)) as nombre, ;
  25.     recibos.* ;
  26.     from recibos ;
  27.     inner join alumnas on recibos.alumna = alumnas.codigo ;
  28.     where recibos.empresa = ?m.empresa ;
  29.     and recibos.remesa = "" ;
  30.     and recibos.pagado = .f. ;
  31.     and recibos.formapago = 1 ;
  32.     order by 1 ;
  33.     into cursor lisrecrem nofilter
  34.  
  35. if _tally = 0
  36.     =messagebox("Ningun registro seleccionado.", 0 + 16, "A.G.P.")
  37.     return ""
  38. endif
  39.  
  40.  
  41. set safety off
  42. m.canal = fcreate(m.archivo)
  43. set safety on
  44.  
  45. if m.canal = -1
  46.     =messagebox("No se puede crear el archivo.", 0 + 16, "A.G.P.")
  47.     return ""
  48. endif
  49.  
  50. termo = createobject("termo2",0, reccount("lisrecrem"), 1)
  51. termo.intervalo = 1
  52. termo.show()
  53.  
  54. begin transaction
  55. *********************************************
  56. *** CABECERA DE PRESENTADOR               ***
  57. *********************************************
  58. *--- CODIGO REGISTRO ---*
  59. m.linea = "51"
  60. *--- CODIGO DATO ---*
  61. m.linea = m.linea + "80"
  62. *--- N.I.F. ---*
  63. m.linea = m.linea + padl(allt(empresas.nif), 9, " ")
  64. *--- SUFIJO ---*
  65. m.linea = m.linea + padl(alltrim(empresas.sufijo), 3, "0")
  66. *--- FECHA CONFECCION SOPORTE ---*
  67. m.linea = m.linea + padl(day(m.fecha), 2, "0")
  68. m.linea = m.linea + padl(month(m.fecha), 2, "0")
  69. m.linea = m.linea + right(allt(str(year(m.fecha))), 2)
  70. *--- LIBRE 6 ---*
  71. m.linea = m.linea + space(6)
  72. *--- NOMBRE CLIENTE PRESENTADOR ---*
  73. m.linea = m.linea + padr(allt(empresas.nombre), 40, " ")
  74. *--- LIBRE 20 ---*
  75. m.linea = m.linea + space(20)
  76. *--- ENTIDAD RECEPTORA ---*
  77. m.linea = m.linea + padl(empresas.ccc1, 4, "0")
  78. *--- OFICINA RECEPTORA ---*
  79. m.linea = m.linea + padl(empresas.ccc2, 4, "0")
  80. *--- LIBRE 12 ---*
  81. m.linea = m.linea + space(12)
  82. *--- LIBRE 40 ---*
  83. m.linea = m.linea + space(40)
  84. *--- LIBRE 14 ---*
  85. m.linea = m.linea + space(14)
  86.  
  87. this.escribe(m.canal, m.linea, 162)
  88.  
  89. *********************************************
  90. *** CABECERA DE ORDENANTE                 ***
  91. *********************************************
  92. *--- CODIGO REGISTRO ---*
  93. m.linea = "53"
  94. *--- CODIGO DATO ---*
  95. m.linea = m.linea + "80"
  96. *--- CIF ---*
  97. m.linea = m.linea + padl(allt(empresas.nif), 9, " ")
  98. *--- SUFIJO ---*
  99. m.linea = m.linea + padl(alltrim(empresas.sufijo), 3, "0")
  100. *--- FECHA CONFECCION SOPORTE ---*
  101. m.linea = m.linea + padl(day(m.fecha), 2, "0")
  102. m.linea = m.linea + padl(month(m.fecha), 2, "0")
  103. m.linea = m.linea + right(allt(str(year(m.fecha))), 2)
  104. *--- FECHA CARGO ---*
  105. m.linea = m.linea + padl(day(m.fechacargo), 2, "0")
  106. m.linea = m.linea + padl(month(m.fechacargo), 2, "0")
  107. m.linea = m.linea + right(allt(str(year(m.fechacargo))), 2)
  108. *--- NOMBRE CLIENTE ORDENANTE ---*
  109. **** vamos a probar si cambiando este nombre de ordenante, les va siempre como DANCO
  110. *m.linea = m.linea + padr(allt(empresas.nombre), 40, " ")
  111. m.linea = m.linea + padr("Estudio DANCO, Danza y Coreografía", 40, " ")
  112. *--- ENTIDAD RECEPTORA ---*
  113. m.linea = m.linea + padl(allt(empresas.ccc1), 4, "0")
  114. *--- OFICINA RECEPTORA ---*
  115. m.linea = m.linea + padl(allt(empresas.ccc2), 4, "0")
  116. *--- DIGITOS CONTROL ---*
  117. m.linea = m.linea + padl(allt(empresas.ccc3), 2, "0")
  118. *--- NUMERO DE CUENTA ---*
  119. m.linea = m.linea + padl(allt(empresas.ccc4), 10, "0")
  120. *--- LIBRE 8 ---*
  121. m.linea = m.linea + space(8)
  122. *--- TIPO PROCEDIMIENTO ---*
  123. m.linea = m.linea + "01"
  124. *--- LIBRE 10 ---*
  125. m.linea = m.linea + space(10)
  126. *--- LIBRE 40 ---*
  127. m.linea = m.linea + space(40)
  128. *--- LIBRE 14 ---*
  129. m.linea = m.linea + space(14)
  130.  
  131. this.escribe(m.canal, m.linea, 162)
  132.  
  133.  
  134. ******************************
  135. *** REGISTROS INDIVIDUALES ***
  136. ******************************
  137.  
  138.  
  139.  
  140. m.totimporte = $0
  141. store 0 to m.recibos, m.omitidos
  142. go top in lisrecrem
  143. do while !eof("lisrecrem")
  144.     termo.ponval(recno("lisrecrem"))
  145.     set near off
  146.     =seek(lisrecrem.alumna, "alumnas", "codigo")
  147.     =seek(lisrecrem.codigo, "recibos", "codigo")
  148.     set near on
  149.     *
  150.     if empty(alumnas.ccc1) or empty(alumnas.ccc2) or empty(alumnas.ccc3) or empty(alumnas.ccc4)
  151.         app.mess("La alumna " + alltrim(lisrecrem.nombre) + chr(13) + " no tiene datos de cuenta bancaria.")
  152.         =fclose(m.canal)
  153.         rollback
  154.         return ""
  155.     endif
  156.     *
  157.     m.año = recibos.año
  158.     m.mes = recibos.mes
  159.     m.curso = recibos.curso
  160.     *
  161.     m.refint = alumnas.codigo
  162.     m.referencia = this.referencia()
  163.     replace alumnas.referencia with m.referencia in alumnas && así podré buscarla por la referencia
  164.     *
  165.     ***************************************
  166.     *** REGISTRO INDIVIDUAL OBLIGATORIO ***
  167.     ***************************************
  168.     *--- CODIGO DE REGISTRO ---*
  169.     m.linea = "56"
  170.     *--- CODIGO DE DATO ---*
  171.     m.linea = m.linea + "80"
  172.     *--- N.I.F. ORDENANTE ---*
  173.     m.linea = m.linea + padl(allt(empresas.nif), 9, " ")
  174.     *--- SUFIJO ---*
  175.     m.linea = m.linea + padl(alltrim(empresas.sufijo), 3, "0")
  176.     *--- CODIGO DE REFERENCIA ---*
  177.     m.linea = m.linea + padr(m.referencia, 12, " ")
  178.     *--- NOMBRE TITULAR DOMICILIACION ---*
  179.     do case
  180.         case alumnas.titular = 1 && padre
  181.             m.titular = alltrim(alumnas.nombrepadre) + " " + alltrim(alumnas.apellido1)
  182.         case alumnas.titular = 2 && madre
  183.             m.titular = alltrim(alumnas.nombremadre) + " " + alltrim(alumnas.apellido2)
  184.         case alumnas.titular = 3 && alumna
  185.             m.titular = alltrim(lisrecrem.nombre)
  186.         case alumnas.titular = 4 && Otro
  187.             m.titular = alltrim(alumnas.nombretitular)
  188.     endcase
  189.     m.linea = m.linea + padr(m.titular, 40, " ")
  190.     *--- ENTIDAD PAGADORA ---*
  191.     m.linea = m.linea + padl(allt(alumnas.ccc1), 4, "0")
  192.     *--- oficina pagadora ---*
  193.     m.linea = m.linea + padl(allt(alumnas.ccc2), 4, "0")
  194.     *--- digitos control ---*
  195.     m.linea = m.linea + padl(allt(alumnas.ccc3), 2, "0")
  196.     *--- cuenta ---*
  197.     m.linea = m.linea + padl(allt(alumnas.ccc4), 10, "0")
  198.     *--- importe ---*
  199.     * si son euros el importe se multiplica por 100 y no se incluyen decimales
  200.     m.linea = m.linea + padl(allt(str(lisrecrem.importe * 100)), 10, "0")
  201.     *--- codigo devoluciones ---*
  202.     m.linea = m.linea + space(6)
  203.     *--- codigo referencia interna ---*
  204.     m.linea = m.linea + padr(m.refint, 10, " ")
  205.     *--- primer campo de concepto ---*
  206.     m.concepto = "Estudio DANCO, Danza y Coreografía"
  207.     m.linea = m.linea + padr(m.concepto, 40, " ")
  208.     *--- LIBRE 8 ---*
  209.     m.linea = m.linea + space(8)
  210.     this.escribe(m.canal, m.linea, 162)
  211.     ***************************************
  212.     *** REGISTRO PRIMERO OPCIONAL       ***
  213.     ***************************************
  214.     *--- CODIGO REGISTRO ---*
  215.     m.linea = "56"
  216.     *--- codigo dato ---*
  217.     m.linea = m.linea + "81"
  218.     *--- N.I.F. ---*
  219.     m.linea = m.linea + padl(allt(empresas.nif), 9, " ")
  220.     *--- sufijo ---*
  221.     m.linea = m.linea + padl(alltrim(empresas.sufijo), 3, "0")
  222.     *--- CODIGO DE REFERENCIA ---*
  223.     m.linea = m.linea + padr(m.referencia, 12, " ")
  224.     *--- segundo campo de concepto ---*
  225.     m.concepto = alltrim(recibos.concepto)
  226.     m.linea = m.linea + padr(m.concepto, 40, " ")
  227.     *-%- tercer campo de concepto ---*
  228.     do case
  229.         case m.mes = 13 && matricula
  230.             m.concepto = "Matrícula curso " + trans(m.curso, "9999") + "-" + trans(m.curso + 1, "9999")
  231.         case m.mes = 14 && vestuario
  232.             m.concepto = "Vestuario curso " + trans(m.curso, "9999") + "-" + trans(m.curso + 1, "9999")
  233.         otherwise
  234.             m.concepto = "Cuota " + cmonth(date(m.año, m.mes, 1)) + " / " + trans(m.año, "9999")
  235.     endcase
  236.     m.linea = m.linea + padr(m.concepto, 40, " ")
  237.     *--- CUARTO CAMPO DE CONCEPTO ---*
  238.     m.concepto = alltrim(lisrecrem.nombre)
  239.     m.linea = m.linea + padr(m.concepto, 40, " ")
  240.     *--- LIBRE 14 ---*
  241.     m.linea = m.linea + space(14)
  242.     this.escribe(m.canal, m.linea, 162)
  243.     *************************************
  244.     *** REGISTRO SEXTO OPCIONAL       ***
  245.     *************************************
  246.     *--- CODIGO REGISTRO ---*
  247.     m.linea = "56"
  248.     *--- CODIGO DATO ---*
  249.     m.linea = m.linea + "86"
  250.     *--- N.I.F. ---*
  251.     m.linea = m.linea + padl(allt(empresas.nif), 9, " ")
  252.     *--- SUFIJO ---*
  253.     m.linea = m.linea + padl(alltrim(empresas.sufijo), 3, "0")
  254.     *--- CODIGO DE REFERENCIA ---*
  255.     m.linea = m.linea + padr(m.referencia, 12, " ")
  256.     *--- NOMBRE TITULAR CUENTA ---*
  257.     m.linea = m.linea + padr(m.titular, 40, " ")
  258.     *--- DOMICILIO TITULAR CUENTA ---*
  259.     m.linea = m.linea + padr(alumnas.direccion, 40, " ")
  260.     *--- PLAZA TITULAR CUENTA ---*
  261.     m.linea = m.linea + padr(alumnas.poblacion, 35, " ")
  262.     *--- CODIGO POSTAL ---*
  263.     m.linea = m.linea + padl(alumnas.postal, 5, "0")
  264.     *--- LIBRE 14 ---*
  265.     m.linea = m.linea + space(14)
  266.     this.escribe(m.canal, m.linea, 162)
  267.     ***********************
  268.     replace ;
  269.         recibos.remesa with m.remesa ;
  270.         in recibos
  271.     m.totimporte = m.totimporte + lisrecrem.importe
  272.     m.recibos = m.recibos + 1
  273.     skip 1 in lisrecrem
  274. enddo
  275.  
  276. release termo
  277.  
  278. *********************************************
  279. *** TOTAL DE ORDENANTE                    ***
  280. *********************************************
  281. *--- CODIGO DE REGISTRO ---*
  282. m.linea = "58"
  283. *--- CODIGO DE DATO ---*
  284. m.linea = m.linea + "80"
  285. *--- N.I.F. ---*
  286. m.linea = m.linea + padl(allt(empresas.nif), 9, " ")
  287. *--- SUFIJO ---*
  288. m.linea = m.linea + padl(alltrim(empresas.sufijo), 3, "0")
  289. *--- LIBRE 12 ---*
  290. m.linea = m.linea + space(12)
  291. *--- LIBRE 40 ---*
  292. m.linea = m.linea + space(40)
  293. *--- LIBRE 20 ---*
  294. m.linea = m.linea + space(20)
  295. *--- SUMA DE IMPORTES ---*
  296. * si son euros el importe se multiplica por 100 y no se incluyen decimales
  297. m.linea = m.linea + padl(allt(str(m.totimporte * 100)), 10, "0")
  298. *--- LIBRE 6 ---*
  299. m.linea = m.linea + space(6)
  300. *--- NUMERO DOMICILIACIONES ---*
  301. m.linea = m.linea + padl(m.recibos, 10, "0")
  302. *--- NUMERO REGISTROS ORDENANTE ---*
  303. m.linea = m.linea + padl((m.recibos * 3) + 2, 10, "0")
  304. *--- LIBRE 20 ---*
  305. m.linea = m.linea + space(20)
  306. *--- LIBRE 18 ---*
  307. m.linea = m.linea + space(18)
  308. this.escribe(m.canal, m.linea, 162)
  309.  
  310. *********************************************
  311. *** TOTAL GENERAL                         ***
  312. *********************************************
  313. *--- CODIGO DE REGISTRO ---*
  314. m.linea = "59"
  315. *--- CODIGO DE DATO ---*
  316. m.linea = m.linea + "80"
  317. *--- NIF ---*
  318. m.linea = m.linea + padl(allt(empresas.nif), 9, " ")
  319. *--- SUFIJO ---*
  320. m.linea = m.linea + padl(alltrim(empresas.sufijo), 3, "0")
  321. *--- LIBRE 12 ---*
  322. m.linea = m.linea + space(12)
  323. *--- LIBRE 40 ---*
  324. m.linea = m.linea + space(40)
  325. *--- NUMERO DE ORDENANTES ---*
  326. m.linea = m.linea + "0001"
  327. *--- LIBRE 16 ---*
  328. m.linea = m.linea + space(16)
  329. *--- SUMA TOTAL DE IMPORTES ---*
  330. * si son euros el importe se multiplica por 100 y no se incluyen decimales
  331. m.linea = m.linea + padl(allt(str(m.totimporte * 100)), 10, "0")
  332. *--- LINRE 6 ---*
  333. m.linea = m.linea + space(6)
  334. *--- NUMERO TOTAL DE DOMICILIACIONES ---*
  335. m.linea = m.linea + padl(m.recibos, 10, "0")
  336. *--- NUMERO TOTAL DE REGISTROS ---*
  337. m.linea = m.linea + padl((m.recibos * 3) + 4, 10, "0")
  338. *--- LIBRE 20 ---*
  339. m.linea = m.linea + space(20)
  340. *--- LIBRE 18 ---*
  341. m.linea = m.linea + space(18)
  342. this.escribe(m.canal, m.linea, 162)
  343.  
  344. =fclose(m.canal)
  345.  
  346. m.datos = filetostr(m.archivo)
  347.  
  348. insert into remesas ;
  349.     (codigo, fecha, fechacargo, recibos, importe, datos, fichero, empresa) ;
  350.     values ;
  351.     (m.remesa, m.fecha, m.fechacargo, m.recibos, m.totimporte, m.datos, justfname(m.archivo), m.empresa)
  352.  
  353. end transaction
  354.  
  355. m.mensaje = alltrim(str(m.recibos)) + " recibos enviados" + chr(13) + transform(m.totimporte, "999,999,999.99") + ""
  356. if m.omitidos > 0
  357.     m.mensaje = m.mensaje + alltrim(str(m.omitidos)) + " recibos omitidos por estar ya en remesa o pagados o efectivo."
  358. endif
  359. app.mess(m.mensaje)
  360.  
  361. wait clear
  362. return m.remesa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement