Query Losas

 avatar
unknown
php
a month ago
5.7 kB
3
Indexable
$query = "Select PedCli.numPed,Articulo.numArt,Articulo.idArt,DetPedCli.cantidad,DetPedCli.saldo,Sucursal.nombre as SucursalArmadora,ZonasDistribucion.nombre as zonaDistribucion,TipoEntregaPedido.nombre as tipoEntrega,CASE WHEN PedCli.idEntrega=9 THEN 'SI' ELSE 'NO' END as esDropShipping, FORMAT (PedCli.Fecha, 'yy-MM-dd H:m') as Fecha,'' as armadorAsignado,
        Articulo.nombre AS nombre,
        Marcas.nombre as marca,
        Padron.nombre as padron,
        OrigenArt.nombre as origen,
        CONCAT(PedCli.numPed,'-',Articulo.idArt) as llave,
        PedCli.numCli as cliente, PedCli.observa, DetPedCli.obsLinea,
        FORMAT(DatosAutCobranzas.fechaAutorizacionCobranzas, 'yy-MM-dd H:m') as fechaAutorizacionCobranzas,
        FORMAT(DatosAutVentas.fechaAutorizacionVentas, 'yy-MM-dd H:m') as fechaAutorizacionVentas
        FROM PedCli
        
        INNER JOIN DetPedCli on PedCli.numPed=DetPedCli.numPed AND PedCli.idSucPed=DetPedCli.idSucPed
        
        INNER JOIN Articulo on DetPedCli.idArt=Articulo.idArt
        
        INNER JOIN TipoEntregaPedido on PedCli.idEntrega=TipoEntregaPedido.idEntrega
        
        INNER JOIN Clientes on PedCli.numCli=Clientes.numCli
        
        INNER JOIN ZonasDistribucion on Clientes.numZona=ZonasDistribucion.numZona
        
        INNER JOIN Sucursal on TipoEntregaPedido.idSucUbicacion=Sucursal.idSuc

        INNER JOIN Marcas ON Articulo.numMarca = Marcas.numMarca
        INNER JOIN Padron ON Articulo.numPad = Padron.numPad
        INNER JOIN OrigenArt ON Articulo.idOrigen=OrigenArt.idOrigen
        INNER JOIN UbicacionesArticulos ON Articulo.idArt = UbicacionesArticulos.idArt
        LEFT JOIN Vendedores on PedCli.numVendAsignacion<>0 and PedCli.numVendAsignacion=Vendedores.numVend
        OUTER APPLY (Select top 1 fecha AS fechaAutorizacionCobranzas From AutorizacionPedidos Where numPed=PedCli.numPed And idSucPed=PedCli.idSucPed AND idEstado=2 AND TipoAutoriza=1 order by fecha Desc) DatosAutCobranzas
        OUTER APPLY (Select top 1 fecha AS fechaAutorizacionVentas From AutorizacionPedidos Where numPed=PedCli.numPed And idSucPed=PedCli.idSucPed AND idEstado=2 AND TipoAutoriza=2 order by fecha Desc) DatosAutVentas";
        if($cancelados){
            
           $sql .= ' OUTER APPLY (
                        Select isnull(sum(cantidad),0) as cantFacturada 
                        from DetFacPedCli 
                        where DetFacPedCli.numPed=DetPedCli.numPed 
                            and DetFacPedCli.idSucPed=DetPedCli.idSucPed 
                            and DetFacPedCli.renglonPed=DetPedCli.renglonPed
                        ) DetFacturacion                    
                     WHERE DetPedCli.cantidad-DetPedCli.saldo-DetFacturacion.cantFacturada>0 ';
        }else {
            $sql .= " WHERE DetPedCli.saldo>0";
        }
        
        $sql .= " AND TipoEntregaPedido.idSucUbicacion = ".$lnIdSucArmadora." AND UbicacionesArticulos.ubicacion1 = '".$usuario_where."'
         
        AND (PedCli.fecha>= '".$ltFechaDesdeZona."' OR DatosAutCobranzas.fechaAutorizacionCobranzas >= '".$ltFechaDesdeZona."' OR DatosAutVentas.fechaAutorizacionVentas >= '".$ltFechaDesdeZona."') AND PedCli.idEstado1 in (0,2) AND PedCli.idEstado2 in (0,2) AND (
    DetPedCli.emboque = 0
    OR (select count(Det2.numped) from DetPedCli Det2 where Det2.numPed=DetPedCli.numPed AND Det2.idSucPed=DetPedCli.idSucPed and Det2.saldo>0 and Det2.emboque=0)>0)";

        if ($clientes_y_sucursales){
        
            $sql .=" UNION ALL (

                        Select PedSuc.numPedSuc,Articulo.numArt,Articulo.idArt,DetPedSuc.cantidad,DetPedSuc.saldo,Sucursal.nombre as SucursalArmadora,NULL as zonaDistribucion,NULL as tipoEntrega,NULL as esDropShipping,FORMAT (PedSuc.fecha, 'yy-MM-dd H:m') as Fecha,'' as armadorAsignado,
                        Articulo.nombre AS nombre,
            Marcas.nombre as marca,
            Padron.nombre as padron,
            OrigenArt.nombre as origen,
            CONCAT(PedSuc.numPedSuc,'-',Articulo.idArt) as llave,
            '-' as cliente, PedSuc.observa, DetPedSuc.obsLinea,
            null,null
                        FROM PedSuc

                        INNER JOIN DetPedSuc on PedSuc.numPedSuc=DetPedSuc.numPedSuc and PedSuc.idSuc=DetPedSuc.idSuc

                        INNER JOIN Articulo on DetPedSuc.idArt=Articulo.idArt

                        INNER JOIN Sucursal on PedSuc.idSuc=Sucursal.idSuc

                        INNER JOIN Marcas ON Articulo.numMarca = Marcas.numMarca
                        INNER JOIN Padron ON Articulo.numPad = Padron.numPad
                        INNER JOIN OrigenArt ON Articulo.idOrigen=OrigenArt.idOrigen
                        INNER JOIN UbicacionesArticulos ON Articulo.idArt = UbicacionesArticulos.idArt
                        LEFT JOIN Vendedores on PedSuc.numVendAsignacion<>0 and PedSuc.numVendAsignacion=Vendedores.numVend";

                        if($cancelados){
                            $sql .= ' OUTER APPLY (Select isnull(sum(cantidad),0) as cantRemitido from DetRemPedSuc where numpedsuc=DetPedSuc.numpedsuc and idSuc=DetPedSuc.idSuc and renglon=DetPedSuc.renglon) DetRemitos 
                                     WHERE  DetPedSuc.cantidad-DetPedSuc.saldo-DetRemitos.cantRemitido>0';
                         }else {
                             $sql .= ' WHERE DetPedSuc.saldo>0 ';
                         }

                        
                        $sql .= " and PedSuc.idSucPedido = ".$lnIdSucArmadora." 

                        AND UbicacionesArticulos.ubicacion1 = '".$usuario_where."'
                        AND PedSuc.fecha>= '".$ltFechaDesdeSuc."');"
Editor is loading...
Leave a Comment