martes, 27 de octubre de 2009

TCB Migración.- Prestamos Movimiento.- part II

después de una rotura de cabeza, me dediqué a implementar el script PHP y aquí lo muestro:



2 case 878:

3

4
$msg .= "============================ GENERANDO
TABLAS DE AMORTIZACION TCB \r\n "
;

5

6

7

8
//crear tabla
de amortizaciones pagadas


9

10
$sql = "SELECT SQL_CACHE

11

12 `operaciones_mvtos`.`socio_afectado` AS `socio`,


13

14 `operaciones_mvtos`.`docto_afectado` AS `credito`,


15

16 `operaciones_mvtos`.`tipo_operacion` AS `operacion`,


17

18 `operaciones_mvtos`.`fecha_operacion` AS `fecha`,


19

20 `eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,


21

22 SUM(`operaciones_mvtos`.`afectacion_real`) AS `monto`

23

24 FROM

25

26 `eacp_config_bases_de_integracion_miembros`

27

28 `eacp_config_bases_de_integracion_miembros`

29

30 INNER JOIN `operaciones_mvtos` `operaciones_mvtos`

31

32 ON `eacp_config_bases_de_integracion_miembros`.`miembro` =

33

34 `operaciones_mvtos`.`tipo_operacion`

35

36 WHERE

37

38 (`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`
=8002)


39

40 AND

41

42 (`operaciones_mvtos`.`docto_afectado` != 1)


43

44 GROUP BY

45

46 `operaciones_mvtos`.`docto_afectado`,


47

48 `operaciones_mvtos`.`tipo_operacion`,


49

50 `operaciones_mvtos`.`fecha_operacion`

51

52 ORDER BY

53

54 `eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,


55

56 `operaciones_mvtos`.`docto_afectado`,


57

58 `operaciones_mvtos`.`fecha_operacion`,


59

60 `operaciones_mvtos`.`tipo_operacion` /* LIMIT 0,100 */ "
;

61

62
$rs = mysql_query($sql, cnnGeneral() );

63

64
$MarkCredito = false;

65

66
$MarkFecha = false;

67

68 while(
$rw = mysql_fetch_array($rs) ) {

69

70
$credito = $rw["credito"];

71

72
$socio = $rw["socio"];

73

74
$fecha = $rw["fecha"];

75

76
$operacion = $rw["operacion"];

77

78
$monto = $rw["monto"];

79

80

81

82
$iva_pagado = 0;

83

84
$capital_pagado = 0;

85

86
$IM_pagado = 0;

87

88
$IN_pagado = 0;

89

90
$IvaMPagado = 0;

91

92
$comisiones = 0;

93

94
$iva_comisiones = 0;

95

96

97

98 switch (
$operacion
){

99

100 case
120:

101

102
$capital_pagado
+= $monto;

103

104 break;

105

106 case
140:

107

108
$IN_pagado += $monto;

109

110
$iva_pagado += $monto * 0.15;

111

112 break;

113

114 case
141:

115

116
$IM_pagado += $monto;

117

118
$IvaMPagado += $monto * 0.15;

119

120 break;

121

122 case
146:

123

124
$comisiones += $monto;

125

126 break;

127

128 case
145:

129

130
$comisiones += $monto;

131

132 break;

133

134 case
351:

135

136
$IN_pagado += $monto;

137

138
$iva_pagado += $monto * 0.15;

139

140 break;

141

142 case
143:

143

144
$IM_pagado += $monto;

145

146
$IvaMPagado += $monto * 0.15;

147

148 break;

149

150 case
142:

151

152
$IN_pagado += $monto;

153

154
$iva_pagado += $monto * 0.15;

155

156 break;

157

158 }

159

160
$sql = "UPDATE tcb_prestamos_movimientos

161

162 SET

163

164 capital_pagado=(capital_pagado + $capital_pagado),


165

166 interes_pagado= (interes_pagado + $IN_pagado),


167

168 iva_pagado=(iva_pagado + $iva_pagado),


169

170 interes_moratorio= (interes_moratorio + $IM_pagado),

171

172 iva_interes_moratorio=(iva_interes_moratorio + $IvaMPagado),


173

174 comisiones=(comisiones + $comisiones),

175

176 iva_comisiones=(iva_comisiones + $iva_comisiones)


177

178 WHERE

179

180 (numero_de_cliente=$socio)


181

182 AND

183

184 (numero_de_credito=$credito)


185

186 AND

187

188 (fecha_de_amortizacion='$fecha') "
;

189

190
$x = my_query($sql, true);

191

192 if ( (
$x["stat"] == false) OR ($x["rows"] <= 0) ){

193

194
$msg .= "$socio\t$credito\t$operacion\tWARN\tSe
fallo al actualizar el registro("
. $x["rows"] . "), se intenta uno nuevo\r\n";

195

196
$sql = "INSERT INTO tcb_prestamos_movimientos

197

198 (numero_de_cliente, numero_de_credito, numero_de_pago,
fecha_de_amortizacion,


199

200 capital_a_pagar, interes_a_pagar,
iva_por_el_interes_a_pagar,


201

202 capital_pagado, interes_pagado, iva_pagado,


203

204 interes_moratorio, iva_interes_moratorio, comisiones,
iva_comisiones)

205

206 VALUES

207

208 ($socio, $credito, 0, '$fecha',


209

210 0, 0, 0,

211

212 $capital_pagado, $IN_pagado, $iva_pagado,


213

214 $IM_pagado, $IvaMPagado, $comisiones, $iva_comisiones) "
;

215

216

217

218
$x = my_query($sql);

219

220 if (
$x["stat"] == false){

221

222
$msg .= "$socio\t$credito\t$operacion\tERROR\tSe
fallo al agregar el registro\r\n"
;

223

224 }

225

226 } else {

227

228
$msg .= "$socio\t$credito\t$operacion\tOK\tRegistro
actualizado\r\n"
;

229

230 }

231

232 }

233

234
//separar de
un pago

235

236 //separar de pagos varios

237

238 //acumular operaciones por pagar

239

240 //acumular conceptos pagados

241

242
$sqlIS = "SELECT socio, credito, parcialidad,

243

244 fecha_de_vencimiento, fecha_de_abono,

245

246 saldo_vigente, saldo_vencido, interes_vigente,
interes_vencido, saldo_interes_vencido,

247

248 interes_moratorio, estatus, iva_interes_normal,
iva_interes_moratorio

249

250 FROM sisbancs_amortizaciones "
;

251

252

253

254
$rs = mysql_query($sqlIS, cnnGeneral() );

255

256 while(
$rw = mysql_fetch_array($rs) ) {

257

258
$credito = $rw["credito"];

259

260
$socio = $rw["socio"];

261

262
$fecha = $rw["fecha_de_vencimiento"];

263

264
$monto = $rw["monto"];

265

266
$letra = $rw["parcialidad"];

267

268
$capital = $rw["saldo_vigente"] + $rw["saldo_vencido"];

269

270
$interes = $rw["interes_vigente"] + $rw["interes_vencido"];

271

272
$iva = $rw["iva_interes_normal"];

273

274

275

276
$sqlIS = "INSERT INTO tcb_prestamos_movimientos

277

278 (numero_de_cliente, numero_de_credito, numero_de_pago,
fecha_de_amortizacion, capital_a_pagar,


279

280 interes_a_pagar, iva_por_el_interes_a_pagar, capital_pagado,
interes_pagado, iva_pagado,


281

282 interes_moratorio, iva_interes_moratorio, comisiones,
iva_comisiones)

283

284 VALUES($socio, $credito, $letra, '$fecha', $capital,


285

286 $interes, $iva, 0, 0, 0, 0, 0, 0, 0)"
;

287

288
my_query($sqlIS);

289

290 }

291

292 break;

293

La primera pruebas me ha arrojado buenos resultados, pero no los que esperaba.
Uno de esos errores era la no coincidencia entre el saldo y la suma de "pagados" y "pendientes de pago", por ellos elaboré un script SQL para buscar diferencias

SELECT numero_de_cliente, numero_de_credito, saldo_actual, SUM(capital_a_pagar) AS 'apagar',

SUM(capital_pagado) AS 'pagado', monto_autorizado,
(SUM(capital_a_pagar) + SUM(capital_pagado)) AS 'resultado'

FROM `creditos_solicitud` `creditos_solicitud`
INNER JOIN `tcb_prestamos_movimientos` `tcb_prestamos_movimientos`
ON `creditos_solicitud`.`numero_solicitud` = `tcb_prestamos_movimientos`
.`numero_de_credito`

GROUP BY

numero_de_credito
HAVING (monto_autorizado - resultado) != 0



También me día la tarea de elaborar otro procedimiento PHP para eliminar Movimientos de Crédito mo migrables, tal como es el caso de los créditos pagados.



2 case 881:
3
4
$sql = "
5
6 SELECT
7
8 `creditos_solicitud`.*,
9
10 `creditos_solicitud`.`estatus_actual`,
11
12 `creditos_solicitud`.`saldo_actual`
13
14 FROM
15
16 `creditos_solicitud` `creditos_solicitud`
17
18 WHERE
19
20 (`creditos_solicitud`.`estatus_actual` =50) OR
21
22 (`creditos_solicitud`.`saldo_actual` <=0.99)
23
24 "
;
25
26
$rs = mysql_query($sql, cnnGeneral() );
27
28 while(
$rw = mysql_fetch_array($rs) ) {
29
30
$credito = $rw["numero_solicitud"];
31
32
$sqlDE = " DELETE FROM tcb_prestamos_movimientos WHERE numero_de_credito=$credito ";
33
34
$x = my_query($sqlDE, true);
35
36
$msg = $x["info"];
37
38 }
39
40 break;
41




ejecuté el código de la utilería 882, y tardó varios minutos en mi pc de pruebas un Intel Dual Core a 1.8 Ghz con 2GB de RAM.

No hay comentarios: