Dame Alumno PHP
Para poder revisar los materiales creados por el PHP, se deja un script para que pueda ser ejecutado en la Base de Datos y así poder revisar los resultados encontrados:
-- Antes de Ejecutar, se deben cambiar los parámetros de la penúltima consulta set @empresaId = 1; set @alumnoId = 15159221; select trans_id into @transFacturaId from trans where empresa_id = @empresaId and parametro = 'FA'; select trans_id into @transPagoId from trans where empresa_id = @empresaId and parametro = 'PA'; select trans_id into @transNotaCreditoId from trans where empresa_id = @empresaId and parametro = 'NCR'; select trans_id into @transNotaDebitoId from trans where empresa_id = @empresaId and parametro = 'ND'; select trans_id into @transDevolucionId from trans where empresa_id = @empresaId and parametro = 'DEV'; select trans_id into @transReembolsoId from trans where empresa_id = @empresaId and parametro = 'RE'; select trans_id into @transCancelacionPagoId from trans where empresa_id = @empresaId and parametro = 'CPA'; drop temporary table if exists alumno_tmp; create temporary table alumno_tmp select a.* from alumno a, alumno b where b.alumno_id = @alumnoId and a.persona_id = b.persona_id and a.activo = 1 and a.no_cobrar = 0 /*and cnc.paga_colegio = 0 PASA AL QUERY DE ARTICULOS POR PAGAR */ order by a.alumno_id desc; select a.* from alumno a, alumno b where b.alumno_id = @alumnoId and a.persona_id = b.persona_id and a.activo = 1 ; select distinct a.alumno_id, p.*, c.colegio_id, c.colegio_clave, c.colegio, c.persona_id as persona_colegio_id, n.*, g.*, gpo.*, ce.*, cgg.* from alumno_tmp a, persona p, colegio_nivel_ciclo cnc, colegio_grado_grupo cgg, colegio c, nivel n, grado g, grupo gpo, ciclo_escolar ce where /*a.alumno_id = ?ll_alumno_id and*/ a.activo = 1 and p.persona_id = a.persona_id and cgg.colegio_grado_grupo_id = a.colegio_grado_grupo_id and cnc.colegio_nivel_ciclo_id = cgg.colegio_nivel_ciclo_id /*and cnc.activo = 1*/ and ce.ciclo_escolar_id = cnc.ciclo_escolar_id /*and ce.pagando = 1*/ and n.nivel_id = cnc.nivel_id and g.grado_id = cgg.grado_id and gpo.grupo_id = cgg.grupo_id and c.colegio_id = cnc.colegio_id order by ce.pagando desc, a.alumno_id desc, ce.ciclo_escolar_orden limit 0, 1; drop temporary table if exists documento_linea_tmp; create temporary table documento_linea_tmp select distinct dl.* from documento_linea dl, alumno_tmp al where dl.alumno_id = al.alumno_id /* PUEDE VENIR ALUMNO */ and dl.persona_id = al.persona_id; /* Y PERSONA */ insert into documento_linea_tmp select distinct dl.* from documento_linea dl, alumno_tmp al where dl.alumno_id = 0 /* PUEDE VENIR SIN ALUMNO */ and dl.persona_id = al.persona_id; /* Y UNICAMENTE PERSONA */ insert into documento_linea_tmp select distinct dl.* from documento_linea dl, alumno_tmp al where dl.alumno_id = al.alumno_id /* PUEDE VENIR UNICAMENTE ALUMNO */ and dl.persona_id = 0; /* Y SIN PERSONA */ drop temporary table if exists articulo_pagado_tmp; create temporary table articulo_pagado_tmp select a.articulo_id, a.articulo_clave, a.sap_id, a.articulo, a.articulo_orden, ta.parametro as tipo_articulo_parametro, agp.articulo_grado_periodo_id, ce.ciclo_escolar_id, ce.ciclo_escolar_clave, round(sum( case when r.trans_id in (@transPagoId/*, @transNotaCreditoId*/) then 1 when r.trans_id in (@transReembolsoId, @transCancelacionPagoId, @transNotaCreditoId/*, @transNotaDebitoId*/) then - 1 else 0 end * (dl.cantidad * dl.precio * (1 - dl.descuento_porcentaje*.01) * (1 + dl.impuesto_porcentaje*.01) + dl.cargo * (1 + dl.impuesto_cargo_porcentaje * .01) ) ), 4) as pagado, round(sum( case when r.trans_id in (@transPagoId/*, @transNotaCreditoId*/) then 1 when r.trans_id in (@transReembolsoId, @transCancelacionPagoId, @transNotaCreditoId/*, @transNotaDebitoId*/) then - 1 else 0 end * dl.cantidad * dl.precio), 4) as dl_bruto, round(sum( case when r.trans_id in (@transPagoId/*, @transNotaCreditoId*/) then 1 when r.trans_id in (@transReembolsoId, @transCancelacionPagoId, @transNotaCreditoId/*, @transNotaDebitoId*/) then - 1 else 0 end * dl.cantidad * (dl.precio * (dl.descuento_porcentaje*.01) ) ), 4) as dl_descuento, round(sum( case when r.trans_id in (@transPagoId/*, @transNotaCreditoId*/) then 1 when r.trans_id in (@transReembolsoId, @transCancelacionPagoId, @transNotaCreditoId/*, @transNotaDebitoId*/) then - 1 else 0 end * dl.cantidad * (dl.precio * (dl.impuesto_porcentaje*.01) ) ), 4) as dl_impuesto, round(sum( case when r.trans_id in (@transPagoId/*, @transNotaCreditoId*/) then 1 when r.trans_id in (@transReembolsoId, @transCancelacionPagoId, @transNotaCreditoId/*, @transNotaDebitoId*/) then - 1 else 0 end * (dl.cargo * (1 + dl.impuesto_cargo_porcentaje * .01) ) ), 4) as dl_cargo, 0 as reportado from documento_linea_tmp dl, documento d, articulo_grado_periodo agp, articulo a, tipo_articulo ta, razon r, alumno_tmp al, colegio_nivel_ciclo cnc, ciclo_escolar ce /*where dl.alumno_id = @alumnoId*/ where 1 and d.documento_id = dl.documento_id and d.aplicado = 1 and d.fecha_cancelado is null and r.razon_id = d.razon_id and r.trans_id in (@transPagoId, @transReembolsoId, @transCancelacionPagoId, @transNotaCreditoId) and agp.articulo_grado_periodo_id = dl.articulo_grado_periodo_id and a.articulo_id = case dl.articulo_grado_periodo_id when 0 then dl.articulo_id else agp.articulo_id end and ta.tipo_articulo_id = a.tipo_articulo_id and al.alumno_id = case when dl.alumno_id = 0 then al.alumno_id else dl.alumno_id end and cnc.colegio_nivel_ciclo_id = al.colegio_nivel_ciclo_id and ce.ciclo_escolar_id = cnc.ciclo_escolar_id group by a.articulo_id, a.articulo_clave, a.sap_id, a.articulo, a.articulo_orden, ta.parametro, agp.articulo_grado_periodo_id, ce.ciclo_escolar_id, ce.ciclo_escolar_clave; drop temporary table if exists articulo_alumno_tmp; create temporary table articulo_alumno_tmp select distinct cap.*, coalesce(agp.articulo_grado_periodo_id, 0) as articulo_grado_periodo_id, a.articulo_clave, a.sap_id, a.articulo, a.articulo_orden, cast(0 as decimal(18,4)) as precio_original, cast(0 as decimal(18,4)) as pagado, cast(0 as decimal(18,4)) as dl_bruto, cast(0 as decimal(18,4)) as dl_descuento, cast(0 as decimal(18,4)) as dl_impuesto, cast(0 as decimal(18,4)) as dl_cargo, ce.ciclo_escolar_id, ce.ciclo_escolar_clave, ce.activo as ce_activo, ce.pagando, al.alumno_id as alumno_ciclo_id, al.hijo_profesor, ta.parametro as tipo_articulo_parametro, tv.tipo_venta_clave, tv.parametro tipo_venta_parametro, cv.canal_venta_clave, cv.parametro canal_venta_parametro, pl.plazo_clave, pl.parametro plazo_parametro, re.razon_excepcion_clave, re.parametro razon_excepcion_parametro from articulo a, tipo_articulo ta, alumno_tmp al, colegio_nivel_ciclo cnc, ciclo_escolar ce, tipo_venta tv, canal_venta cv, plazo pl, razon_excepcion re, colegio_articulo_precio cap left join articulo_grado_periodo agp on(agp.articulo_id = cap.articulo_id and agp.grado_id = cap.grado_id and agp.periodo_ciclo_id = cap.periodo_ciclo_id) where cap.colegio_nivel_ciclo_id = al.colegio_nivel_ciclo_id /*?colegio_nivel_ciclo_id*/ and cap.grado_id in /*?grado_id*/(select cgg.grado_id from colegio_grado_grupo cgg where cgg.colegio_grado_grupo_id = al.colegio_grado_grupo_id) and cap.grupo_id in (0, /*?grupo_id*/(select cgg.grupo_id from colegio_grado_grupo cgg where cgg.colegio_grado_grupo_id = al.colegio_grado_grupo_id)) and cap.tipo_venta_id = tv.tipo_venta_id and cap.canal_venta_id = cv.canal_venta_id and cap.plazo_id = pl.plazo_id and cap.razon_excepcion_id = re.razon_excepcion_id and cap.alumno_id in (0, al.alumno_id /*?alumno_id*/) and a.articulo_id = cap.articulo_id and ta.tipo_articulo_id = a.tipo_articulo_id and cnc.colegio_nivel_ciclo_id = cap.colegio_nivel_ciclo_id and ce.ciclo_escolar_id = cnc.ciclo_escolar_id; update articulo_alumno_tmp aa set /*pagado = coalesce((select distinct t.pagado from articulo_pagado_tmp t where t.articulo_grado_periodo_id = articulo_alumno_tmp.articulo_grado_periodo_id), 0)*/ pagado = coalesce((select distinct t.pagado from articulo_pagado_tmp t where t.articulo_grado_periodo_id = case aa.articulo_grado_periodo_id when 0 then t.articulo_grado_periodo_id else aa.articulo_grado_periodo_id end and t.articulo_id = case aa.articulo_id when 0 then t.articulo_id else aa.articulo_id end ), 0) ; update articulo_alumno_tmp aa, articulo_pagado_tmp t set aa.pagado = coalesce(t.pagado, 0), aa.dl_bruto = coalesce(t.dl_bruto, 0), aa.dl_descuento = coalesce(t.dl_descuento, 0), aa.dl_impuesto = coalesce(t.dl_impuesto, 0), aa.dl_cargo = coalesce(t.dl_cargo, 0) where t.articulo_grado_periodo_id = case aa.articulo_grado_periodo_id when 0 then t.articulo_grado_periodo_id else aa.articulo_grado_periodo_id end and t.ciclo_escolar_id = case aa.articulo_grado_periodo_id when 0 then aa.ciclo_escolar_id else t.ciclo_escolar_id end and t.articulo_id = case aa.articulo_id when 0 then t.articulo_id else aa.articulo_id end ; update articulo_pagado_tmp ap set /*reportado = coalesce((select distinct 1 from articulo_alumno_tmp t where t.articulo_grado_periodo_id = articulo_pagado_tmp.articulo_grado_periodo_id), 0)*/ reportado = coalesce((select distinct 1 from articulo_alumno_tmp t where t.articulo_grado_periodo_id = case ap.articulo_grado_periodo_id when 0 then t.articulo_grado_periodo_id else ap.articulo_grado_periodo_id end and t.articulo_id = case ap.articulo_id when 0 then t.articulo_id else ap.articulo_id end ), 0); drop temporary table if exists articulo_pagado_tmp_2; create temporary table articulo_pagado_tmp_2 select * from articulo_pagado_tmp; update articulo_alumno_tmp aa set aa.precio_original = aa.precio, aa.precio = case when coalesce((select sum(ap.dl_bruto) from articulo_pagado_tmp_2 ap where aa.ciclo_escolar_id = ap.ciclo_escolar_id and ap.tipo_articulo_parametro = aa.tipo_articulo_parametro and ap.articulo_id = aa.articulo_id and ap.pagado > 0), 0) >= aa.precio then 0 else greatest(0, ( ( aa.precio * (1 - aa.descuento_porcentaje*.01) * (1 + aa.impuesto_porcentaje*.01) + aa.cargo_financiero * (1 + aa.impuesto_cargo_financiero_porcentaje * .01) ) - coalesce((select sum(ap.pagado) from articulo_pagado_tmp ap where aa.ciclo_escolar_id = ap.ciclo_escolar_id and ap.tipo_articulo_parametro = aa.tipo_articulo_parametro and ap.articulo_id = aa.articulo_id and ap.pagado > 0), 0) - aa.cargo_financiero * (1 + aa.impuesto_cargo_financiero_porcentaje * .01) ) / ( (1 - aa.descuento_porcentaje*.01) * (1 + aa.impuesto_porcentaje*.01) ) ) end where aa.tipo_articulo_parametro in ('LIB', 'IPAD', 'SUBP-G', 'SUBP-G-V', 'SERV') /*and aa.pagando = 1 */; select * from articulo_pagado_tmp where reportado = 0 order by articulo_orden, articulo_clave; drop temporary table if exists articulo_excepcion_tmp; create temporary table articulo_excepcion_tmp select * from articulo_alumno_tmp where alumno_id > 0 or grupo_id > 0; select count(*) as cuenta from articulo_excepcion_tmp; delete from articulo_alumno_tmp where ciclo_escolar_id in (select ciclo_escolar_id from articulo_excepcion_tmp where alumno_id > 0) and alumno_id = 0 and pagado = 0; delete from articulo_alumno_tmp where ciclo_escolar_id in (select ciclo_escolar_id from articulo_excepcion_tmp where grupo_id > 0) and grupo_id = 0 and alumno_id = 0/*and grupo_id = 0*/ and pagado = 0; select articulo_alumno_tmp.*, proporcion_parametro from articulo_alumno_tmp, tipo_venta where tipo_venta.tipo_venta_id = articulo_alumno_tmp.tipo_venta_id order by alumno_id desc, ciclo_escolar_id, grupo_id desc, kit_id, case kit_id - articulo_id when 0 then 0 else articulo_orden end, articulo_orden, articulo_clave; select dl.*, d.documento, case when substring(d.referencia, 1, 1) = 'X' then substring(d.referencia, 2) else d.referencia end as referencia, r.parametro as razon_cargo_parametro, round(1*coalesce(mid(dsl.detalle, locate('precio_colegio:', dsl.detalle) + length('precio_colegio:')), -1957), 2) as precio_colegio, round(1*coalesce(mid(dsl.detalle, locate('pvp:', dsl.detalle) + length('pvp:')), -1957), 2) as pvp, round(1*coalesce(mid(dsl.detalle, locate('precio_pagado:', dsl.detalle) + length('precio_pagado:')), -1957), 2) as precio_pagado, round(1*coalesce(mid(dsl.detalle, locate('neto_pagado:', dsl.detalle) + length('neto_pagado:')), -1957), 2) as neto_pagado from documento d, documento_linea dl, documento_sublinea dsl, razon r, alumno a, colegio_nivel_ciclo cnc where d.documento_id = dl.documento_id and d.linea_captura_banamex = 'sesion_id: e9g1u5v8bn9ov5k39u6oh11ni0' and dl.persona_id = 7673819 and dl.articulo_id = 44 and dsl.documento_id = dl.documento_id and dsl.linea = dl.linea and r.razon_id = dl.razon_cargo_id and a.alumno_id = dl.alumno_id and cnc.colegio_nivel_ciclo_id = a.colegio_nivel_ciclo_id and cnc.ciclo_escolar_id =362 order by dl.linea; select *, UNIX_TIMESTAMP(fecha_hasta) as ut_fecha_hasta from colegio_articulo_abono where colegio_articulo_precio_id =1599830 order by abono;