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;
================