function GetSQLDeudaCliente($fsql,$fcliente,$fsucursal=0,$fbn=0){ $fdevsql = ""; if($fsql=="R"){ $fdevsql=" select distinct 1 as tipo, pd.codigo, date_format(r.fecha,'%d/%m/%Y') as fecha, concat(comp.abreviatura,' ',r.numero) as ncomp, pd.cantidad, pd.precio, (((rd.cantidad - (select ifnull(sum(rdd1.cantidad),0) from remitodevolucion_detalle rdd1 inner join remitosdevolucion rd1 on rd1.codigo = rdd1.remitodevolucion where rdd1.remitodetalle = rd.codigo and rd1.estado = 1 )) *pd.precio) + ((rd.cantidad - (select ifnull(sum(rdd1.cantidad),0) from remitodevolucion_detalle rdd1 inner join remitosdevolucion rd1 on rd1.codigo = rdd1.remitodevolucion where rdd1.remitodetalle = rd.codigo and rd1.estado = 1 )) *pd.percepcioniibb)) as total, ifnull((select ac.facturado from acopios ac where ac.codigo = p.acopio),0) as acfacturado, ifnull(p.acopio,0) as pacopio, r.codigo as rcodigo, p.acopio from pedidos p inner join pedido_detalle pd on p.codigo = pd.pedido and pd.estado = 1 inner join remito_detalle rd on rd.pedidodetalle = pd.codigo inner join remitos r on r.codigo = rd.remito inner join comprobantes comp on comp.codigo = r.comprobante inner join sucursales suc on suc.codigo = p.sucursal left join acopios ac on ac.codigo = p.acopio left join presupuestos pr on pr.codigo = p.presupuesto and pr.estado = 1 where p.acopio = 0 and "; if($fcliente>0)$fdevsql .= " p.cliente = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; $fdevsql .= " rd.facturado = 0 and ifnull(pr.facturado,0) = 0 and r.facturado = 0 and (ifnull(p.acopio,0) = 0 or (ifnull(p.acopio,0) > 0 and ifnull(ac.facturado,0) = 0)) and pd.facturado = 0 and p.autorizar = 0 and p.autorizarcredito = 0 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and p.estado = 1 and pd.estado = 1 and r.estado = 1 "; if($fsucursal>0)$fdevsql .= " and suc.codigo = '$fsucursal' "; $fdevsql .= " having total > 0 "; } if($fsql=="RAC"){ $fdevsql=" select distinct 1 as tipo, pd.codigo, date_format(r.fecha,'%d/%m/%Y') as fecha, concat(comp.abreviatura,' ',r.numero) as ncomp, pd.cantidad, pd.precio, (((rd.cantidad - (select ifnull(sum(rdd1.cantidad),0) from remitodevolucion_detalle rdd1 inner join remitosdevolucion rd1 on rd1.codigo = rdd1.remitodevolucion where rdd1.remitodetalle = rd.codigo and rd1.estado = 1 )) *pd.precio) + ((rd.cantidad - (select ifnull(sum(rdd1.cantidad),0) from remitodevolucion_detalle rdd1 inner join remitosdevolucion rd1 on rd1.codigo = rdd1.remitodevolucion where rdd1.remitodetalle = rd.codigo and rd1.estado = 1 )) *pd.percepcioniibb)) as total, ifnull((select ac.facturado from acopios ac where ac.codigo = p.acopio),0) as acfacturado, ifnull(p.acopio,0) as pacopio, r.codigo as rcodigo, p.acopio from pedidos p inner join pedido_detalle pd on p.codigo = pd.pedido and pd.estado = 1 inner join remito_detalle rd on rd.pedidodetalle = pd.codigo inner join remitos r on r.codigo = rd.remito inner join comprobantes comp on comp.codigo = r.comprobante inner join sucursales suc on suc.codigo = p.sucursal left join acopios ac on ac.codigo = p.acopio left join presupuestos pr on pr.codigo = p.presupuesto and pr.estado = 1 where p.acopio > 0 and "; if($fcliente>0)$fdevsql .= " p.cliente = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; $fdevsql .= " rd.facturado = 0 and ifnull(pr.facturado,0) = 0 and r.facturado = 0 and pd.facturado = 0 and p.autorizar = 0 and p.autorizarcredito = 0 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and p.estado = 1 and pd.estado = 1 and r.estado = 1 "; if($fsucursal>0)$fdevsql .= " and suc.codigo = '$fsucursal' "; $fdevsql .= " having total > 0 "; //and (ifnull(p.acopio,0) = 0 or (ifnull(p.acopio,0) > 0 and ifnull(ac.facturado,0) = 0)) } if($fsql=="P"){ $fdevsql = " select 1 as tipo, pd.codigo, concat(comp.abreviatura,' ',p.numero) as ncomp, p.codigo as codigo, date_format(p.fecha,'%d/%m/%Y') as fecha, pd.cantidad, (select ifnull(sum(rd.cantidad),0) from remito_detalle rd inner join remitos r on r.codigo = rd.remito where rd.pedidodetalle = pd.codigo and r.estado = 1) as remitados, (select ifnull(sum(rdd1.cantidad),0) from remitodevolucion_detalle rdd1 inner join remitosdevolucion rd1 on rd1.codigo = rdd1.remitodevolucion where rdd1.pedidodetalle = pd.codigo and rd1.estado = 1) as devueltados, (select ifnull(sum(pdd1.cantidad),0) from pedidodevolucion_detalle pdd1 inner join pedidosdevolucion pd1 on pd1.codigo = pdd1.pedidodevolucion where pdd1.pedidodetalle = pd.codigo and pd1.estado = 1 ) as anulados, pd.precio , p.autorizar, pd.percepcioniibb as percepcioniibbpd, p.acopio, p.codigo as pcodigo from pedidos p inner join pedido_detalle pd on p.codigo = pd.pedido and pd.estado = 1 inner join clientes cl on cl.codigo = p.cliente inner join comprobantes comp on comp.codigo = p.comprobante inner join sucursales suc on suc.codigo = p.sucursal left join presupuestos pr on pr.codigo = p.presupuesto left join acopios ac on ac.codigo = p.acopio where p.acopio = 0 and "; if($fcliente>0)$fdevsql .= " p.cliente = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; $fdevsql .= " pd.facturado = 0 and p.autorizar = 0 and p.autorizarcredito = 0 and (ac.facturado = 0 or ac.facturado is null) and (pr.facturado = 0 or pr.facturado is null) and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and p.estado = 1 and p.revisado = 1 "; if($fsucursal>0)$fdevsql .= " and suc.codigo = '$fsucursal' "; $fdevsql .= " having (cantidad-remitados)>0 "; $fdevsql .= " order by fecha, ncomp "; } if($fsql=="PAC"){ $fdevsql = " select 1 as tipo, pd.codigo, concat(comp.abreviatura,' ',p.numero) as ncomp, p.codigo as codigo, date_format(p.fecha,'%d/%m/%Y') as fecha, pd.cantidad, (select ifnull(sum(rd.cantidad),0) from remito_detalle rd inner join remitos r on r.codigo = rd.remito where rd.pedidodetalle = pd.codigo and r.estado = 1) as remitados, (select ifnull(sum(rdd1.cantidad),0) from remitodevolucion_detalle rdd1 inner join remitosdevolucion rd1 on rd1.codigo = rdd1.remitodevolucion where rdd1.pedidodetalle = pd.codigo and rd1.estado = 1) as devueltados, (select ifnull(sum(pdd1.cantidad),0) from pedidodevolucion_detalle pdd1 inner join pedidosdevolucion pd1 on pd1.codigo = pdd1.pedidodevolucion where pdd1.pedidodetalle = pd.codigo and pd1.estado = 1 ) as anulados, pd.precio , p.autorizar, pd.percepcioniibb as percepcioniibbpd, p.acopio, p.codigo as pcodigo from pedidos p inner join pedido_detalle pd on p.codigo = pd.pedido and pd.estado = 1 inner join clientes cl on cl.codigo = p.cliente inner join comprobantes comp on comp.codigo = p.comprobante inner join sucursales suc on suc.codigo = p.sucursal left join presupuestos pr on pr.codigo = p.presupuesto left join acopios ac on ac.codigo = p.acopio where p.acopio > 0 and "; if($fcliente>0)$fdevsql .= " p.cliente = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; $fdevsql .= " pd.facturado = 0 and p.autorizar = 0 and p.autorizarcredito = 0 and (ac.facturado = 0 or ac.facturado is null) and (pr.facturado = 0 or pr.facturado is null) and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and p.estado = 1 and p.revisado = 1 "; if($fsucursal>0)$fdevsql .= " and suc.codigo = '$fsucursal' "; $fdevsql .= " having (cantidad-remitados)>0 "; $fdevsql .= " order by fecha, ncomp "; } if($fsql=="FV"){ $fdevsql = "select distinct 1 as tipo, concat(v.nombre,' ',v.apellido) as nvendedor, c.contacto, c.telefono, c.email, c.direccion, c.razon_social, concat(comp.abreviatura,' ',fv.numero) as ncomp, fv.codigo, date_format(fv.fecha,'%d/%m/%Y') as fecha, date_format(fv.fechavto,'%d/%m/%Y') as fechavto, datediff(fv.fechavto,curdate()) as dias, fv.total, (select ifnull(sum(rd.importe),0) from recibo_detalle rd inner join recibos r on r.codigo = rd.recibo and rd.estado = 1 where rd.facturaventa = fv.codigo and r.estado = 1) as pagado , 1 as autorizar, fv.acopio, DATEDIFF(curdate(),fv.fechavto) as diasres, fv.fechavto as fechaord from facturasventa fv inner join comprobantes comp on comp.codigo = fv.comprobante inner join clientes c on c.codigo = fv.subcuenta inner join sucursales suc on suc.codigo = fv.sucursal left join facturaventa_item fvi on fvi.facturaventa = fv.codigo and fvi.estado = 1 left join vendedores v on v.codigo = c.vendedor where "; if($fcliente>0)$fdevsql .= " fv.subcuenta = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; if($fsucursal>0)$fdevsql .= " suc.codigo = '$fsucursal' and "; $fdevsql .= " fv.pagada = 0 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and fv.estado = 1 and fv.anulada = 0 having round(total-pagado,1)>0 and (acopio=0) union select distinct 2 as tipo, concat(v.nombre,' ',v.apellido) as nvendedor, c.contacto, c.telefono, c.email, c.direccion, c.razon_social, concat(comp.abreviatura,' ',nc.numero) as ncomp, nc.codigo, date_format(nc.fecha,'%d/%m/%Y') as fecha, date_format(nc.fechavto,'%d/%m/%Y') as fechavto, datediff(nc.fechavto,curdate()) as dias, (-1*nc.total) as total, ((select ifnull(sum(rcd.importe),0) from recibo_detalle rcd inner join recibos r on r.codigo = rcd.recibo and rcd.estado = 1 where rcd.notacreditoventa = nc.codigo and r.estado = 1) - (select ifnull(sum(opd.importe),0) from ordenpago_detalle opd inner join ordenpago op on op.codigo = opd.ordenpago and opd.estado = 1 where opd.notacreditoventa = nc.codigo and op.estado = 1)) as pagado , nc.autorizar, ifnull((select max(p.acopio) from pedidos p inner join pedido_detalle pd on pd.pedido = p.codigo where p.estado = 1 and pd.estado = 1 and pd.codigo = ncvi.pedidodetalle),0) as acopio , DATEDIFF(curdate(),nc.fechavto) as diasres, nc.fechavto as fechaord from notacredito_venta nc inner join comprobantes comp on comp.codigo = nc.comprobante inner join clientes c on c.codigo = nc.subcuenta left join vendedores v on v.codigo = c.vendedor left join notacreditoventa_item ncvi on ncvi.notacreditoventa = nc.codigo and ncvi.estado = 1 inner join sucursales suc on suc.codigo = nc.sucursal where "; if($fcliente>0)$fdevsql .= " nc.subcuenta = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; if($fsucursal>0)$fdevsql .= " suc.codigo = '$fsucursal' and "; $fdevsql .= " nc.pagada = 0 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and nc.estado = 1 having round(total-pagado,1)<0 and acopio = 0 union select distinct 3 as tipo, concat(v.nombre,' ',v.apellido) as nvendedor, c.contacto, c.telefono, c.email, c.direccion, c.razon_social, concat(comp.abreviatura,' ',nd.numero) as ncomp, nd.codigo, date_format(nd.fecha,'%d/%m/%Y') as fecha, date_format(nd.fechavto,'%d/%m/%Y') as fechavto, datediff(nd.fechavto,curdate()) as dias, nd.total, (select ifnull(sum(rcd.importe),0) from recibo_detalle rcd inner join recibos r on r.codigo = rcd.recibo and rcd.estado = 1 where rcd.notadebitoventa = nd.codigo and r.estado = 1) as pagado , 1 as autorizar, 0 as acopio, DATEDIFF(curdate(),nd.fechavto) as diasres, nd.fechavto as fechaord from notadebito_venta nd inner join comprobantes comp on comp.codigo = nd.comprobante inner join clientes c on c.codigo = nd.subcuenta left join vendedores v on v.codigo = c.vendedor inner join sucursales suc on suc.codigo = nd.sucursal where "; if($fcliente>0)$fdevsql .= " nd.subcuenta = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; if($fsucursal>0)$fdevsql .= " suc.codigo = '$fsucursal' and "; $fdevsql .= " nd.pagada = 0 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and nd.estado = 1 having round(total-pagado,1)>0 "; } if($fsql=="FVAC"){ $fdevsql = "select distinct 1 as tipo, concat(comp.abreviatura,' ',fv.numero) as ncomp, fv.codigo, date_format(fv.fecha,'%d/%m/%Y') as fecha, fv.total, (select ifnull(sum(rd.importe),0) from recibo_detalle rd inner join recibos r on r.codigo = rd.recibo and rd.estado = 1 where rd.facturaventa = fv.codigo and r.estado = 1) as pagado , 1 as autorizar, fvi.acopio from facturasventa fv inner join facturaventa_item fvi on fvi.facturaventa = fv.codigo and fvi.estado = 1 inner join comprobantes comp on comp.codigo = fv.comprobante inner join sucursales suc on suc.codigo = fv.sucursal where "; if($fcliente>0)$fdevsql .= " fv.subcuenta = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; $fdevsql .= " fv.pagada = 0 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and fv.estado = 1 and fv.anulada = 0 "; if($fsucursal>0)$fdevsql .= " and suc.codigo = '$fsucursal' "; $fdevsql .= " and fv.acopio = 1 having round(total-pagado,1)>0 union select distinct 2 as tipo, concat(comp.abreviatura,' ',nc.numero) as ncomp, nc.codigo, date_format(nc.fecha,'%d/%m/%Y') as fecha, (-1*nc.total) as total, ((select ifnull(sum(rcd.importe),0) from recibo_detalle rcd inner join recibos r on r.codigo = rcd.recibo and rcd.estado = 1 where rcd.notacreditoventa = nc.codigo and r.estado = 1) - (select ifnull(sum(opd.importe),0) from ordenpago_detalle opd inner join ordenpago op on op.codigo = opd.ordenpago and opd.estado = 1 where opd.notacreditoventa = nc.codigo and op.estado = 1)) as pagado , nc.autorizar, (select max(p.acopio) from pedidos p inner join pedido_detalle pd on pd.pedido = p.codigo where p.estado = 1 and pd.estado = 1 and pd.codigo = ncvi.pedidodetalle) as acopio from notacredito_venta nc inner join comprobantes comp on comp.codigo = nc.comprobante inner join clientes c on c.codigo = nc.subcuenta left join vendedores v on v.codigo = c.vendedor left join notacreditoventa_item ncvi on ncvi.notacreditoventa = nc.codigo and ncvi.estado = 1 inner join sucursales suc on suc.codigo = nc.sucursal where "; if($fcliente>0)$fdevsql .= " nc.subcuenta = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; if($fsucursal>0)$fdevsql .= " suc.codigo = '$fsucursal' and "; $fdevsql .= " nc.pagada = 0 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and nc.estado = 1 having round(total-pagado,1)<0 and acopio > 0 "; } if($fsql=="AD"){ $fdevsql = "select distinct concat(comp.abreviatura,' ',a.numero) as ncomp, a.codigo, date_format(a.fecha,'%d/%m/%Y') as fecha, (ad.haber+ad.debe) as total, (select sum(ar.importe) from asientodetalle_x_recibo ar inner join recibos r on r.codigo = ar.recibo where ar.asientodetalle = ad.codigo and ar.estado = 1 ) as utilizado, (case when ad.debe > 0 then 1 else 2 end) as dh from asientos a inner join asiento_detalle ad on a.codigo = ad.asiento and ad.estado = 1 inner join comprobantes comp on comp.codigo = a.comprobante inner join sucursales suc on suc.codigo = a.sucursal where "; if($fcliente>0)$fdevsql .= " ad.subcuenta = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; $fdevsql .= " ad.cuenta = '".$_SESSION["sistema_zomatikresp"]["plandecuenta_fv"]."' and a.comprobante in (35,36,47,48,33,34) and ad.utilizado = 0 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and a.estado = 1 "; if($fsucursal>0)$fdevsql .= " and suc.codigo = '$fsucursal' "; $fdevsql .= " having round((total-ifnull(utilizado,0)),1) <> 0 "; $fdevsql .= " union select concat(comp.abreviatura,' ',r.numero) as ncomp, a.codigo, date_format(r.fecha,'%d/%m/%Y') as fecha, a.monto, (select sum(ar.importe) from acuenta_x_recibo ar inner join recibos r on r.codigo = ar.recibo where ar.acuenta = a.codigo and r.estado = 1 and ar.estado = 1 ) as utilizado, 2 as dh from acuenta a inner join recibos r on r.codigo = a.recibo inner join comprobantes comp on comp.codigo = r.comprobante inner join sucursales suc on suc.codigo = r.sucursal where "; if($fcliente>0)$fdevsql .= " a.subcuenta = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; $fdevsql .= " a.estado = 1 and r.estado = 1 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' "; if($fsucursal>0)$fdevsql .= " and suc.codigo = '$fsucursal' "; $fdevsql .= " having round((monto-ifnull(utilizado,0)),1) <> 0 "; } if($fsql=="AC"){ $fdevsql = " select distinct concat(comp.abreviatura,' ',a.numero) as ncomp, a.codigo as codigo, date_format(a.fecha,'%d/%m/%Y') as fecha, (a.monto- ifnull((select sum(fv.total) from facturasventa fv where fv.codigo in (select fvi.facturaventa from facturaventa_item fvi inner join pedido_detalle pd on pd.codigo = fvi.pedidodetalle inner join pedidos p on p.codigo = pd.pedido where p.acopio = a.codigo and p.estado = 1 and pd.estado = 1 and fvi.estado = 1 and fv.estado = 1)),0) + ifnull((select sum(nc.total) from notacredito_venta nc where nc.codigo in (select ncvi.notacreditoventa from notacreditoventa_item ncvi inner join pedido_detalle pd on pd.codigo = ncvi.pedidodetalle inner join pedidos p on p.codigo = pd.pedido where p.acopio = a.codigo and p.estado = 1 and pd.estado = 1 and ncvi.estado = 1 and nc.estado = 1)),0) - ifnull((select sum(fv.total) from facturasventa fv inner join facturaventa_item fvi on fvi.facturaventa = fv.codigo where fv.estado = 1 and fvi.estado = 1 and fvi.acopio = a.codigo),0) ) as total, a.autorizar, a.autorizado from acopios a inner join comprobantes comp on comp.codigo = a.comprobante inner join sucursales suc on suc.codigo = a.sucursal where "; if($fcliente>0)$fdevsql .= " a.cliente = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; $fdevsql .= " a.facturado = 0 and suc.sociedad = '".$_SESSION["zomatikresp_sociedad"]."' and a.estado = 1 "; if($fsucursal>0)$fdevsql .= " and suc.codigo = '$fsucursal' "; $fdevsql .= " order by a.fecha "; } if($fsql=="CH"){ //Cheques que no paso 1 mes de la fecha deposito $fdevsql = "select ifnull(sum(ch.monto),0) as cheques from cheques ch inner join recibos r on r.codigo = ch.recibo where "; if($fcliente>0)$fdevsql .= " r.subcuenta = '$fcliente' and "; if($fbn>0)$fdevsql .= " comp.bn = '$fbn' and "; $fdevsql .= " ch.estado = 1 and r.estado = 1 and ch.fecha_deposito >= date_add(CURDATE(),INTERVAL -1 MONTH) "; } return($fdevsql); }