SE CAMBIO EL CALULO DE LOS COSTOS QUE SE GENERAN EN  IP6 LIMS, LOS CUALES QUYEDARON DE LA SIGUIENTE MANERA:


Mano de obra = ( Tiempo de analista real* tasa de analista

Equipos = tiemp ode equipo * tasa de equipo

Costos indirectos= Tiempo de equipo por tasa de indirectos

Insumos cantidad de insumo X tasa de insumo


si los insumos son del cliente el valor es 0 [ en este caso -falta esta validación por el momento esta solo contemplado los costos por insumos ]



EXISTEN 3 PANTALLAS EN DONDE SE TIENE INFORMACION DE COSTOS:


PANTALLA MANTENIMIENTO DE ORDENES

=> ESTE ES EL SCRIP UTILIZADO:

#*****************************************************************

#Módulo:  IPLPETCOSTE.PAN

#Funcionalidad :  Coste de la orden

#Autor:   JRR      

#Fecha:   14-01-2020

#* Copyright @2020 Labware, S.A.                                 *

#*****************************************************************

#* Histórico de cambios

#* ====================

#(1)

#08-02-2023 MLEAL

# SE INGRESO SCRIPT EN EL CAMPO CANTREAL QUE SE INGRESO PARA LA VALIDACION DE TIEMPOS DE MANO DE OBRA DESDE QUE SE INICIA EL ENSAYO HASTA SU FINALIZACION

# SE TIENE EN CUENTA HORAS LABORALES, NO SE TIENE EN CUENTA FINES DE SEMANA.

#(2)17.02.2023

#SE CAMBIO LA LINEA 41 DE CANTIDAD REAL: CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST)  POR: RET.CANTREAL 

#(3)17.02.2023

#SE CAMBIO LA LINEA 32 DE CANTIDAD ESTIMADA: RET.CANTIDAD  POR: (SELECT CANTIP62HOST( RET.CANTIDAD, UNIDADES, UNIDADESHOST )FROM IPARTIC WHERE CODART =ART.CODART)

#(4)17.02.2023

#SE CAMBIO LA LINEA 44 DE COSTO ESTIMADO: RET.CANTIDAD  POR: (SELECT CANTIP62HOST( RET.CANTIDAD, UNIDADES, UNIDADESHOST )FROM IPARTIC WHERE CODART =ART.CODART)

#(5) 21-12-2023 se retira el else del case cuando el codart es anlista= ELSE CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) 

#*****************************************************************

R E C U R S O S   D E L   E N S A Y O

  Ensayo         Descripcion      Recurso       Recurso desc.       Cant. estim.  Cant. real     Un.   Precio unidad    Coste estim.     Coste real

  _20__________  _80____________  _20_________  _40______________   #L#####.####  #L##,###.###   _10_  #L##,###,###.##  #L##,###,###.##  #L##,###,###.##

|

SOLOQUERY

SELECT=SELECT RET.CODENSAYO,

       ENS.DESCENSAYO,

       ENS.DESENSESP,

       ENS.AREA,

       RET.CODART, 

       ART.DESART,

       

       (SELECT CANTIP62HOST( RET.CANTIDAD, UNIDADES, UNIDADESHOST )FROM IPARTIC WHERE CODART =ART.CODART) CANTIDAD,       

      

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN CANTIP62HOST((( SELECT  CASE WHEN CMV.FECINIENS = CMV.FECFINENS THEN  

      TRUNC((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAFINENS,'YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAINIENS,'YYYY-MM-DD hh24:mi:ss')))))/60,2)

      END CANTREAL FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) ) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE (CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST)) END CANTREAL,       

       

       ART.UNIDADESHOST,

       

       ART.PRECIOUNI,

       

       ART.PRECIOUNI * (SELECT CANTIP62HOST( RET.CANTIDAD, UNIDADES, UNIDADESHOST )FROM IPARTIC WHERE CODART =ART.CODART) COSTESTIM,      

      

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN ART.PRECIOUNI * CANTIP62HOST((( SELECT  CASE WHEN CMV.FECINIENS = CMV.FECFINENS THEN  

      TRUNC((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAFINENS,'YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAINIENS,'YYYY-MM-DD hh24:mi:ss')))))/60,2)

      END CANTREAL FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) ) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE ART.PRECIOUNI * CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) END COSTEREAL

  FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

 WHERE RET.CODPETICION = :CODPETICION

   AND RET.CODART = ART.CODART

   AND ENS.CODPETICION = RET.CODPETICION

   AND ENS.CODENSAYO = RET.CODENSAYO

   AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

   UNION

   SELECT 

'' CODENSAYO,

'' DESCENSAYO,

'' DESENSESP, 

'' AREA, 

ARTI.CODART, 

ARTI.DESART, 1 CANTIDAD, 

(

SELECT SUM(CANTREAL) TREAL FROM(SELECT RET.CODART,

       CASE WHEN ART.CODART LIKE '%CPK%' THEN CANTIP62HOST((CASE WHEN RET.CANTREAL IS NULL THEN 0 ELSE RET.CANTREAL END) , ART.UNIDADES, ART.UNIDADESHOST)

       END CANTREAL       

  FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

 WHERE RET.CODPETICION = :CODPETICION

   AND RET.CODART = ART.CODART

   AND ENS.CODPETICION = RET.CODPETICION

   AND ENS.CODENSAYO = RET.CODENSAYO

   AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

   AND ART.UNIDADESHOST='min')

   ) CANTREAL,    

ARTI.UNIDADESHOST, 

ARTI.PRECIOUNI, 

0 COSTESTIM, 

(

SELECT SUM(CANTREAL) TREAL FROM(SELECT RET.CODART,

       CASE WHEN ART.CODART LIKE '%CPK%' THEN CANTIP62HOST((CASE WHEN RET.CANTREAL IS NULL THEN 0 ELSE RET.CANTREAL END) , ART.UNIDADES, ART.UNIDADESHOST)

       END CANTREAL     

  FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

 WHERE RET.CODPETICION = :CODPETICION

   AND RET.CODART = ART.CODART

   AND ENS.CODPETICION = RET.CODPETICION

   AND ENS.CODENSAYO = RET.CODENSAYO

   AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

   AND ART.UNIDADESHOST='min')

 )*ARTI.PRECIOUNI COSTEREAL

   FROM IPARTIC ARTI

   inner join IPCLASEARTIC CLASART on ARTI.codart=CLASART.CODART

   WHERE CODCLASIF='TIPO' AND CODCLASE='IND' AND ARTI.CODART='0000004';


ORDERBY=CODENSAYO;


CAMPO=CODPETICION,AUXILIAR,VIRTUAL,OCULTO,"_20_" 

CAMPO=CODENSAYO,OCULTO,"_20_"

CAMPO=DESCENSAYO,TOOLTIP(":DESCENSAYO")

CAMPO=DESENSESP,TOOLTIP(":DESENSESP")

CAMPO=AREA,OCULTO,"_80_"

CAMPO=CODART

CAMPO=DESART

CAMPO=CANTIDAD

CAMPO=CANTREAL

CAMPO=UNIDADESHOST

CAMPO=PRECIOUNI

CAMPO=COSTESTIM

CAMPO=COSTEREAL



=======================


PANTALLA COSTOS DE ENSAYOS  POR ORDEN

=>ESTE ES EL SCRIP UTIULIZADO

#Módulo: XIPMONFACT1.PAN

#Función: Listar Pedidos  de agencia LANDFAST P003

#         

#

#Autor: ACRQ

#Fecha creación: 09-03-2022

#

#Histórico de cambios

#(1)

#08-02-2023 MLEAL

# SE INGRESO SCRIPT EN EL CAMPO CANTREAL QUE SE INGRESO PARA LA VALIDACION DE TIEMPOS DE MANO DE OBRA DESDE QUE SE INICIA EL ENSAYO HASTA SU FINALIZACION

# SE TIENE EN CUENTA HORAS LABORALES, NO SE TIENE EN CUENTA FINES DE SEMANA.

#(2)

###################################################################################################

COSTOS  ENSAYO POR ORDEN

ORDEN     LOTE                      QC           COD ENSAYO       DESC ENSAYO            TIPO ENSAYO            TIEMPO EJECUTADO  UNIDAD  COSTO ESTM       COSTO REAL

_10_____  _30_____________________  _10________  _20____________  _30___________________ _30___________________ _10_________      _8___   #L##,###,###.##  #L##,###,###.##

|



SOLOQUERY




SELECT=SELECT ENS.CODPETICION ORDEN,ORD.CODLOTFAB LOTE, BUL.BULTO QC,ENS.DESCENSAYO CODART, ENS.DESENSESP DESCART,ENSA.TIPOENS TIPOENSA, 0 COSTO_ESTM, 0  COSTO_REAL     

         FROM IPLPETMUEENSAYO ENS

         INNER JOIN IPLPETBULTOSMUE BUL ON BUL.CODPETICION=ENS.CODPETICION

         INNER JOIN IPLPETICION ORD ON ORD.CODPETICION=ENS.CODPETICION

         inner join IPLENSAYO ensa on ENS.CODENSAYO=ensa.CODENSAYO

         WHERE (:ORD IS NULL OR ORD.CODPETICION=:ORD)

         AND (:QC IS NULL OR BUL.BULTO LIKE:QC )

         AND (:LTE IS NULL OR ORD.CODLOTFAB LIKE:LTE)

         AND (:COART IS NULL OR ENS.DESCENSAYO LIKE:COART)

         AND (:DEART IS NULL OR ENS.DESENSESP LIKE:DEART)

         AND ENS.FECINIENS IS NOT NULL

         AND ENS.FECFINENS IS NOT NULL

         AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL); 



NOINSERT

NODELETE




POSX=1

REGPAG=31

#CAMPO=FECDESDE,AUXILIAR,VIRTUAL,OCULTO

#CAMPO=FECHASTA,AUXILIAR,VIRTUAL,OCULTO

#CAMPO=CODCLI,AUXILIAR,VIRTUAL,OCULTO

#CAMPO=DESCLI,AUXILIAR,VIRTUAL,OCULTO

CAMPO=ORD,AUXILIAR,VIRTUAL,OCULTO

CAMPO=QC,AUXILIAR,VIRTUAL,OCULTO

CAMPO=LTE,AUXILIAR,VIRTUAL,OCULTO

CAMPO=COART,AUXILIAR, VIRTUAL,OCULTO

CAMPO=DEART,AUXILIAR,VIRTUAL,OCULTO





CAMPO=ORDEN,AUXILIAR,NOENTER

CAMPO=LOTE,AUXILIAR,NOENTER

CAMPO=QC,AUXILIAR,NOENTER

CAMPO=CODART,AUXILIAR,NOENTER 

CAMPO=DESCART,AUXILIAR,NOENTER

CAMPO=TIPOENSA,AUXILIAR,NOENTER

CAMPO=TREAL,AUXILIAR,NOENTER,POSTCHANGE=FEJECUTA("CTIEMPOREAL","")

CAMPO=UNIDAD,AUXILIAR,NOENTER,POSTCHANGE=FEJECUTA("CUNIDAD","")

CAMPO=COSTO_ESTM,AUXILIAR,NOENTER,POSTCHANGE=FEJECUTA("CCOSTOESTIM","")

CAMPO=COSTO_TOTAL_IND,AUXILIAR,OCULTO,"_20_",POSTCHANGE=FEJECUTA("CCOSTOTOTALINDI","ERROR4")

CAMPO=COSTO_REAL,AUXILIAR,NOENTER,POSTCHANGE=FEJECUTA("CCOSTOREALRECURSOS",""),TOOLTIP("")


## FUNCION PARA MEDIR EL TIEMPO EMPLEADO POR CADA ENSAYO SACADO DE PANTALLA LOGBOOK DEL ANALISTA

#TRUNC(( SELECT MAX(CMV.FECFINENS*86400 + SUBSTR(CMV.HORAFINENS,1,2)*3600+ SUBSTR(CMV.HORAFINENS,4,2)*60+ SUBSTR(CMV.HORAFINENS,7,2)) - MIN(CMV.FECINIENS*86400 + SUBSTR(CMV.HORAINIENS,1,2)*3600+ SUBSTR(CMV.HORAINIENS,4,2)*60+ SUBSTR(CMV.HORAINIENS,7,2))  FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) /60,2)



#CURSOR FECHA

#CURSOR=CFECHA SELECT TO_CHAR(TO_DATE(:FECHA_PEDIDO, 'J'), 'DD-MM-YY') FROM DUAL;


#CURSOR COSTOS REAL RECURSOS POR ENSAYOS  

CURSOR=CCOSTOREALRECURSOS SELECT CASE WHEN SUM(COSTEREAL) IS NULL THEN 0 ELSE SUM(COSTEREAL)  END   COSTO_REAL  FROM(SELECT RET.CODENSAYO,

       ENS.DESCENSAYO,

       ENS.DESENSESP,

       ENS.AREA,

       RET.CODART, 

       ART.DESART,

       RET.CANTIDAD,

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN CANTIP62HOST((TRUNC(( SELECT MAX(CMV.FECFINENS*86400 + SUBSTR(CMV.HORAFINENS,1,2)*3600+ SUBSTR(CMV.HORAFINENS,4,2)*60+ SUBSTR(CMV.HORAFINENS,7,2)) - MIN(CMV.FECINIENS*86400 + SUBSTR(CMV.HORAINIENS,1,2)*3600+ SUBSTR(CMV.HORAINIENS,4,2)*60+ SUBSTR(CMV.HORAINIENS,7,2)) FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) /60,2)) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) END CANTREAL,

       ART.UNIDADESHOST,

       ART.PRECIOUNI,

       ART.PRECIOUNI * RET.CANTIDAD COSTESTIM,

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN ART.PRECIOUNI * CANTIP62HOST((( SELECT  CASE WHEN CMV.FECINIENS = CMV.FECFINENS THEN  

      TRUNC((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAFINENS,'YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAINIENS,'YYYY-MM-DD hh24:mi:ss')))))/60,2)

      WHEN XIPDAMETIEMPO(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD'),TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')) = 2

      THEN trunc((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||'17:00:00','YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAINIENS,'YYYY-MM-DD hh24:mi:ss')))))/60,2) + trunc((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAFINENS,'YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||'07:00:00','YYYY-MM-DD hh24:mi:ss')))))/60,2)

      WHEN XIPDAMETIEMPO(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD'),TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')) > 2

      THEN (XIPDAMETIEMPO(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD'),TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD'))-2) * 600 +(trunc((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||'17:00:00','YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAINIENS,'YYYY-MM-DD hh24:mi:ss')))))/60,2) + trunc((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAFINENS,'YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||'07:00:00','YYYY-MM-DD hh24:mi:ss')))))/60,2))

      ELSE 0

      END CANTREAL FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) ) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE ART.PRECIOUNI * CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) END COSTEREAL

      FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

     WHERE RET.CODPETICION = :ORDEN

       AND RET.CODART = ART.CODART

       AND ENS.CODPETICION =:ORDEN

       AND ENS.CODENSAYO = RET.CODENSAYO

       AND ENS.DESCENSAYO = :CODART

       AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL)    UNION

       SELECT 

        '' CODENSAYO,

        '' DESCENSAYO,

        '' DESENSESP, 

        '' AREA, 

        ARTI.CODART, 

        ARTI.DESART, 1 CANTIDAD, 

        (

        SELECT SUM(CANTREAL) TREAL FROM(SELECT RET.CODART,

               CASE WHEN ART.CODART LIKE '%CPK%' THEN CANTIP62HOST((CASE WHEN RET.CANTREAL IS NULL THEN 0 ELSE RET.CANTREAL END) , ART.UNIDADES, ART.UNIDADESHOST)

               END CANTREAL       

          FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

         WHERE RET.CODPETICION = :ORDEN

           AND RET.CODART = ART.CODART

           AND ENS.CODPETICION = RET.CODPETICION

           AND ENS.CODENSAYO = RET.CODENSAYO

           AND ENS.DESCENSAYO = :CODART

           AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

           AND ART.UNIDADESHOST='min')

           ) CANTREAL,    

        ARTI.UNIDADESHOST, 

        ARTI.PRECIOUNI, 

        0 COSTESTIM, 

        (

        SELECT SUM(CANTREAL) TREAL FROM(SELECT RET.CODART,

               CASE WHEN ART.CODART LIKE '%CPK%' THEN CANTIP62HOST((CASE WHEN RET.CANTREAL IS NULL THEN 0 ELSE RET.CANTREAL END) , ART.UNIDADES, ART.UNIDADESHOST)

               END CANTREAL     

          FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

         WHERE RET.CODPETICION = :ORDEN

           AND RET.CODART = ART.CODART

           AND ENS.CODPETICION = RET.CODPETICION

           AND ENS.CODENSAYO = RET.CODENSAYO

           AND ENS.DESCENSAYO = :CODART

           AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

           AND ART.UNIDADESHOST='min')

         )*ARTI.PRECIOUNI COSTEREAL

           FROM IPARTIC ARTI

           inner join IPCLASEARTIC CLASART on ARTI.codart=CLASART.CODART

           WHERE CODCLASIF='TIPO' AND CODCLASE='IND' AND ARTI.CODART='0000004');

   

#COSTO REAL INDIRECTOS

#CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST)

CURSOR=CCOSTOTOTALINDI SELECT SUM(CASE WHEN SUM(CANTREAL) IS NULL THEN 0  ELSE SUM(CANTREAL)* ((SELECT PRECIOUNI FROM IPARTIC WHERE CODART ='0000004')) END) COSTO_TOTAL_IND  FROM(SELECT RET.CODENSAYO,

       ENS.DESCENSAYO,

       ENS.DESENSESP,

       ENS.AREA,

       RET.CODART, 

       ART.DESART,

       RET.CANTIDAD,

       CASE WHEN ART.CODART LIKE '%CPK%' THEN CANTIP62HOST((CASE WHEN RET.CANTREAL IS NULL THEN 0 ELSE RET.CANTREAL END) , ART.UNIDADES, ART.UNIDADESHOST)

       END CANTREAL,

       ART.UNIDADESHOST,

       ART.PRECIOUNI,

       ART.PRECIOUNI * RET.CANTIDAD COSTESTIM,

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN ART.PRECIOUNI * CANTIP62HOST((TRUNC(( SELECT MAX(CMV.FECFINENS*86400 + SUBSTR(CMV.HORAFINENS,1,2)*3600+ SUBSTR(CMV.HORAFINENS,4,2)*60+ SUBSTR(CMV.HORAFINENS,7,2)) - MIN(CMV.FECINIENS*86400 + SUBSTR(CMV.HORAINIENS,1,2)*3600+ SUBSTR(CMV.HORAINIENS,4,2)*60+ SUBSTR(CMV.HORAINIENS,7,2)) FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) /60,2)) , ART.UNIDADES, ART.UNIDADESHOST)

        END COSTEREAL

  FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

 WHERE RET.CODPETICION = :ORDEN

   AND RET.CODART = ART.CODART

   AND ENS.CODPETICION = RET.CODPETICION

   AND ENS.CODENSAYO = RET.CODENSAYO

   AND ENS.DESCENSAYO = :CODART

   AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

   AND ART.UNIDADESHOST='min' ) GROUP BY CANTREAL;



#COSTO ESTIMADO VERSION 2

#RET.CANTIDAD

CURSOR=CCOSTOESTIM SELECT 

       CASE WHEN SUM(ART.PRECIOUNI * RET.CANTIDAD) IS NULL THEN 0 ELSE SUM(ART.PRECIOUNI * ((SELECT CANTIP62HOST( RET.CANTIDAD, UNIDADES, UNIDADESHOST )FROM IPARTIC WHERE CODART =ART.CODART))) END +:COSTO_ESTM COSTO_ESTM

       FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

       WHERE RET.CODPETICION = :ORDEN

       AND RET.CODART = ART.CODART

       AND ENS.CODPETICION = RET.CODPETICION

       AND ENS.CODENSAYO = RET.CODENSAYO

       AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL)

       AND ENS.DESCENSAYO=:CODART;

       

       

#CURSOR TIEMPO REAL POR ENSAYO

CURSOR=CTIEMPOREAL  SELECT CASE WHEN SUM(CANTREAL) IS NULL THEN 0  ELSE SUM(CANTREAL) END TREAL FROM(SELECT RET.CODENSAYO,

       ENS.DESCENSAYO,

       ENS.DESENSESP,

       ENS.AREA,

       RET.CODART, 

       ART.DESART,

       RET.CANTIDAD,

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN CANTIP62HOST((( SELECT  CASE WHEN CMV.FECINIENS = CMV.FECFINENS THEN  

      TRUNC((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAFINENS,'YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAINIENS,'YYYY-MM-DD hh24:mi:ss')))))/60,2)

      END CANTREAL FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) ) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) END CANTREAL,

       ART.UNIDADESHOST,

       ART.PRECIOUNI,

       ART.PRECIOUNI * RET.CANTIDAD COSTESTIM,

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN ART.PRECIOUNI * CANTIP62HOST((TRUNC(( SELECT MAX(CMV.FECFINENS*86400 + SUBSTR(CMV.HORAFINENS,1,2)*3600+ SUBSTR(CMV.HORAFINENS,4,2)*60+ SUBSTR(CMV.HORAFINENS,7,2)) - MIN(CMV.FECINIENS*86400 + SUBSTR(CMV.HORAINIENS,1,2)*3600+ SUBSTR(CMV.HORAINIENS,4,2)*60+ SUBSTR(CMV.HORAINIENS,7,2)) FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) /60,2)) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE ART.PRECIOUNI * CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) END COSTEREAL

  FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

 WHERE RET.CODPETICION = :ORDEN

   AND RET.CODART = ART.CODART

   AND ENS.CODPETICION = RET.CODPETICION

   AND ENS.CODENSAYO = RET.CODENSAYO

   AND ENS.DESCENSAYO = :CODART

   AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

   AND ART.UNIDADESHOST='min');       


CURSOR=CUNIDAD SELECT 'min' UNIDAD FROM DUAL;


    





==================


PANTALLA DE COSTO TOTAL POR ORDEN

=> ESTE ES EL SCRIP UTILIZADO

#*****************************************************************

#Módulo:  IPLPETCOSTETOTAL.FRM

#Funcionalidad :  Coste de la orden

#Autor:   JRR      

#Fecha:   23-11-2022

#* Copyright @2020 Labware, S.A.                                 *

#*****************************************************************

#* Histórico de cambios

#* ====================

#(1)

#08-02-2023 MLEAL

# SE INGRESO SCRIPT EN EL CAMPO CANTREAL QUE SE INGRESO PARA LA VALIDACION DE TIEMPOS DE MANO DE OBRA DESDE QUE SE INICIA EL ENSAYO HASTA SU FINALIZACION

# SE TIENE EN CUENTA HORAS LABORALES, NO SE TIENE EN CUENTA FINES DE SEMANA.

#(2)

#*****************************************************************

C O S T O S    T O T A L E S    P O R    O R D E N

 Orden  Lote                        QC      Cliente                 Especificacion.                   Tiempo Ejecutado.  Unidad.  Coste estim.      Coste real.

 _10_   _20_______________________  _8____  _20___________________  _40______________________________ _10_________       _8____   #L##,###,###.##   #L##,###,###.##  

|

SOLOQUERY

SELECT=SELECT ENS.CODPETICION ORDEN,ORD.CODLOTFAB LOTE, IPSTK.BULTO QC,DIR.DESCLI CLIENTE,ESPE.DESESPECIFICACION ESPECIFICACION    ,0     COSTO_ESTM

         FROM IPLPETMUEENSAYO ENS

         INNER JOIN IPLPETBULTOSMUE BUL ON BUL.CODPETICION=ENS.CODPETICION

         INNER JOIN IPLPETICION ORD ON ORD.CODPETICION=ENS.CODPETICION

         inner join IPLENSAYO ensa on ENS.CODENSAYO=ensa.CODENSAYO

         inner join ipfuentestock ipstk on ipstk.bulto=bul.bulto

         INNER JOIN IPDIRECCIONES DIR ON DIR.CODCLI=IPSTK.INFOCLIEXTRA

         INNER JOIN IPLESPECIFICACION ESPE ON ESPE.CODESPECIFICACION=ENS.CODESPECIFICACION

         WHERE (:ORDEN IS NULL OR ORD.CODPETICION=:ORDEN)

         AND (:QC IS NULL OR IPSTK.BULTO LIKE:QC )

         AND (:LOTE IS NULL OR ORD.CODLOTFAB LIKE:LOTE)

         AND (:ESPECIFICACION IS NULL OR ESPE.DESESPECIFICACION LIKE:ESPECIFICACION)

         AND ENS.FECINIENS IS NOT NULL

         AND ENS.FECFINENS IS NOT NULL;


GROUPBY=ENS.CODPETICION ,ORD.CODLOTFAB,IPSTK.BULTO,DIR.DESCLI,ESPE.DESESPECIFICACION;


CAMPO=ORDEN,AUXILIAR 

CAMPO=LOTE,AUXILIAR

CAMPO=QC,AUXILIAR

CAMPO=CLIENTE,AUXILIAR

CAMPO=ESPECIFICACION,AUXILIAR

CAMPO=TREAL,AUXILIAR,NOENTER,POSTCHANGE=FEJECUTA("CTIEMPOREAL","ERROR1")

CAMPO=UNIDAD,AUXILIAR,NOENTER,POSTCHANGE=FEJECUTA("CUNIDAD","ERROR2")

CAMPO=COSTO_ESTM,AUXILIAR,POSTCHANGE=FEJECUTA("CCOSTEESTIMADO","ERROR3")

#CAMPO=COSTO_REALINDIRECTOS,AUXILIAR,OCULTO,"_20_",POSTCHANGE=FEJECUTA("+CCOSTOREAL","ERROR4")

CAMPO=COSTO_TOTAL_IND,AUXILIAR,OCULTO,"_20_",POSTCHANGE=FEJECUTA("CCOSTOTOTALINDI","ERROR4")

CAMPO=COSTO_REAL,AUXILIAR,NOENTER,POSTCHANGE=FEJECUTA("CCOSTOREALRECURSOS",""),TOOLTIP("")



#CURSOR COSTOS REAL RECURSOS TOTALES DE ENSAYOS  

CURSOR=CCOSTOREALRECURSOS SELECT CASE WHEN SUM(COSTEREAL) IS NULL THEN 0 ELSE SUM(COSTEREAL) END   COSTO_REAL  FROM(SELECT RET.CODENSAYO,

       ENS.DESCENSAYO,

       ENS.DESENSESP,

       ENS.AREA,

       RET.CODART, 

       ART.DESART,

       

       (SELECT CANTIP62HOST( RET.CANTIDAD, UNIDADES, UNIDADESHOST )FROM IPARTIC WHERE CODART =ART.CODART) CANTIDAD,       

      

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN CANTIP62HOST((( SELECT  CASE WHEN CMV.FECINIENS = CMV.FECFINENS THEN  

      TRUNC((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAFINENS,'YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAINIENS,'YYYY-MM-DD hh24:mi:ss')))))/60,2)

      END CANTREAL FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) ) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE (CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST)) END CANTREAL,       

       

       ART.UNIDADESHOST,

       

       ART.PRECIOUNI,

       

       ART.PRECIOUNI * (SELECT CANTIP62HOST( RET.CANTIDAD, UNIDADES, UNIDADESHOST )FROM IPARTIC WHERE CODART =ART.CODART) COSTESTIM,      

      

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN ART.PRECIOUNI * CANTIP62HOST((( SELECT  CASE WHEN CMV.FECINIENS = CMV.FECFINENS THEN  

      TRUNC((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAFINENS,'YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAINIENS,'YYYY-MM-DD hh24:mi:ss')))))/60,2)

      END CANTREAL FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) ) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE ART.PRECIOUNI * CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) END COSTEREAL

      FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

     WHERE RET.CODPETICION = :ORDEN

       AND RET.CODART = ART.CODART

       AND ENS.CODPETICION = RET.CODPETICION

       AND ENS.CODENSAYO = RET.CODENSAYO

       AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )    UNION

       SELECT 

        '' CODENSAYO,

        '' DESCENSAYO,

        '' DESENSESP, 

        '' AREA, 

        ARTI.CODART, 

        ARTI.DESART, 1 CANTIDAD, 

        (

        SELECT SUM(CANTREAL) TREAL FROM(SELECT RET.CODART,

               CASE WHEN ART.CODART LIKE '%CPK%' THEN CANTIP62HOST((CASE WHEN RET.CANTREAL IS NULL THEN 0 ELSE RET.CANTREAL END) , ART.UNIDADES, ART.UNIDADESHOST)

               END CANTREAL       

          FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

         WHERE RET.CODPETICION = :ORDEN

           AND RET.CODART = ART.CODART

           AND ENS.CODPETICION = RET.CODPETICION

           AND ENS.CODENSAYO = RET.CODENSAYO

           AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

           AND ART.UNIDADESHOST='min')

           ) CANTREAL,    

        ARTI.UNIDADESHOST, 

        ARTI.PRECIOUNI, 

        0 COSTESTIM, 

        (

        SELECT SUM(CANTREAL) TREAL FROM(SELECT RET.CODART,

               CASE WHEN ART.CODART LIKE '%CPK%' THEN CANTIP62HOST((CASE WHEN RET.CANTREAL IS NULL THEN 0 ELSE RET.CANTREAL END) , ART.UNIDADES, ART.UNIDADESHOST)

               END CANTREAL     

          FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

         WHERE RET.CODPETICION = :ORDEN

           AND RET.CODART = ART.CODART

           AND ENS.CODPETICION = RET.CODPETICION

           AND ENS.CODENSAYO = RET.CODENSAYO

           AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

           AND ART.UNIDADESHOST='min')

         )*ARTI.PRECIOUNI COSTEREAL

           FROM IPARTIC ARTI

           inner join IPCLASEARTIC CLASART on ARTI.codart=CLASART.CODART

           WHERE CODCLASIF='TIPO' AND CODCLASE='IND' AND ARTI.CODART='0000004');

   

#COSTO REAL INDIRECTOS

CURSOR=CCOSTOTOTALINDI SELECT SUM(CASE WHEN SUM(CANTREAL) IS NULL THEN 0  ELSE SUM(CANTREAL)* ((SELECT PRECIOUNI FROM IPARTIC WHERE CODART ='0000004')) END) COSTO_TOTAL_IND  FROM(SELECT RET.CODENSAYO,

       ENS.DESCENSAYO,

       ENS.DESENSESP,

       ENS.AREA,

       RET.CODART, 

       ART.DESART,

       RET.CANTIDAD,

       CASE WHEN ART.CODART LIKE '%CPK%' THEN CANTIP62HOST((CASE WHEN RET.CANTREAL IS NULL THEN 0 ELSE RET.CANTREAL END) , ART.UNIDADES, ART.UNIDADESHOST)

       END CANTREAL,

       ART.UNIDADESHOST,

       ART.PRECIOUNI,

       ART.PRECIOUNI * RET.CANTIDAD COSTESTIM,

       CASE WHEN ART.CODART LIKE '%CPK%' THEN ART.PRECIOUNI * CANTIP62HOST( (CASE WHEN RET.CANTREAL IS NULL THEN 0 ELSE RET.CANTREAL END) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE ART.PRECIOUNI * CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) END COSTEREAL

  FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

 WHERE RET.CODPETICION = :ORDEN

   AND RET.CODART = ART.CODART

   AND ENS.CODPETICION = RET.CODPETICION

   AND ENS.CODENSAYO = RET.CODENSAYO

   AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

   AND ART.UNIDADESHOST='min') GROUP BY CANTREAL;


       

   

CURSOR=CCCSUM SELECT (:COSTO_REALINDIRECTOS + :COSTO_RECURSOSTOTAL) COSTO FROM DUAL;


CURSOR=CCOSTEESTIMADO SELECT SUM(ART.PRECIOUNI * RET.CANTIDAD)COSTO_ESTM

  FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

 WHERE RET.CODPETICION =:ORDEN

   AND RET.CODART = ART.CODART

   AND ENS.CODPETICION = RET.CODPETICION

   AND ENS.CODENSAYO = RET.CODENSAYO

   AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL);


#CURSOR TIEMPO REAL TOTAL POR TODOS LOS ENSAYOS

CURSOR=CTIEMPOREAL  SELECT SUM(CANTREAL) TREAL FROM(SELECT RET.CODENSAYO,

       ENS.DESCENSAYO,

       ENS.DESENSESP,

       ENS.AREA,

       RET.CODART, 

       ART.DESART,

       RET.CANTIDAD,

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN CANTIP62HOST((( SELECT  CASE WHEN CMV.FECINIENS = CMV.FECFINENS THEN  

      TRUNC((60*(60*(24 * (to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECFINENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAFINENS,'YYYY-MM-DD hh24:mi:ss') - to_date(TO_DATE(TO_CHAR(TO_DATE(CMV.FECINIENS,'J'),'YYYY-MM-DD'),'YYYY-MM-DD')||' '||CMV.HORAINIENS,'YYYY-MM-DD hh24:mi:ss')))))/60,2)

      END CANTREAL FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) ) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) END CANTREAL,

       ART.UNIDADESHOST,

       ART.PRECIOUNI,

       ART.PRECIOUNI * RET.CANTIDAD COSTESTIM,

       CASE WHEN ART.DESART LIKE '%ANALISTA%' THEN ART.PRECIOUNI * CANTIP62HOST((TRUNC(( SELECT MAX(CMV.FECFINENS*86400 + SUBSTR(CMV.HORAFINENS,1,2)*3600+ SUBSTR(CMV.HORAFINENS,4,2)*60+ SUBSTR(CMV.HORAFINENS,7,2)) - MIN(CMV.FECINIENS*86400 + SUBSTR(CMV.HORAINIENS,1,2)*3600+ SUBSTR(CMV.HORAINIENS,4,2)*60+ SUBSTR(CMV.HORAINIENS,7,2)) FROM IPLPETMUEENSAYO CMV WHERE CMV.CODPETICION=ENS.CODPETICION AND CMV.CODENSAYO=ENS.CODENSAYO AND CMV.SEQENSAYO=ENS.SEQENSAYO) /60,2)) , ART.UNIDADES, ART.UNIDADESHOST)

       ELSE ART.PRECIOUNI * CANTIP62HOST(RET.CANTREAL, ART.UNIDADES, ART.UNIDADESHOST) END COSTEREAL

  FROM IPLPETMUEENSAYO ENS, IPLPETMUERECURSOTAEA RET, IPARTIC ART

 WHERE RET.CODPETICION = :ORDEN

   AND RET.CODART = ART.CODART

   AND ENS.CODPETICION = RET.CODPETICION

   AND ENS.CODENSAYO = RET.CODENSAYO

   AND (ENS.STATUS = 0 OR ENS.STATUS IS NULL )

   AND ART.UNIDADESHOST='min');


CURSOR=CUNIDAD SELECT 'min' UNIDAD FROM DUAL;



================