diff --git a/Data/BulkLoad/BULK_LOAD.xls b/Data/BulkLoad/BULK_LOAD.xls index 9aa7e8c..d1347c2 100644 Binary files a/Data/BulkLoad/BULK_LOAD.xls and b/Data/BulkLoad/BULK_LOAD.xls differ diff --git a/Data/BulkLoad/MATERIAL_COSTS.csv b/Data/BulkLoad/MATERIAL_COSTS.csv index 7a66dd9..8600b3d 100644 --- a/Data/BulkLoad/MATERIAL_COSTS.csv +++ b/Data/BulkLoad/MATERIAL_COSTS.csv @@ -1,195 +1,195 @@ -,,,,,,,,, -"SELLING_PRICE","COST_PRICE","DELIVERY_COST","VALID_FROM","VALID_TO","COST_TYPE","MODU_CODE","HOU_CODE","BAS_CODE","ADIT_CODE" -48.63,,0,,,"MOCO","AD016S",,, -48.63,,0,,,"MOCO","AD016SW",,, -101.37,,0,,,"MOCO","AD025S",,, -101.37,,0,,,"MOCO","AD025SW",,, -101.38,,0,,,"MOCO","AD040S",,, -481.53,,0,,,"MOCO","AD065S",,, -493.92,,0,,,"MOCO","AD100S",,, -719.38,,0,,,"MOCO","AD160S",,, -228.734,,27.5,,,"MOCO","ARCMVV0025A",,, -228.734,,27.5,,,"MOCO","ARCMVV0025AW",,, -302.973,,27.5,,,"MOCO","ARCMVV0040AW",,, -302.973,,27.5,,,"MOCO","ARCMVV0040A",,, -692.89,,60.5,,,"MOCO","ARCMHH0065A",,, -692.89,,60.5,,,"MOCO","ARCMVV0065A",,, -692.89,,60.5,,,"MOCO","ARCMVH0065A",,, -692.89,,60.5,,,"MOCO","ARCMHV0065A",,, -692.89,,60.5,,,"MOCO","ARCMHH0100A",,, -692.89,,60.5,,,"MOCO","ARCMVV0100A",,, -692.89,,60.5,,,"MOCO","ARCMVH0100A",,, -692.89,,60.5,,,"MOCO","ARCMHV0100A",,, -955.614,,60.5,,,"MOCO","ARCMVV0160A",,, -955.614,,60.5,,,"MOCO","ARCMHH0160A",,, -955.614,,60.5,,,"MOCO","ARCMVH0160A",,, -955.614,,60.5,,,"MOCO","ARCMHV0160A",,, -955.614,,60.5,,,"MOCO","ARCMVV0200A",,, -955.614,,60.5,,,"MOCO","ARCMHH0200A",,, -955.614,,60.5,,,"MOCO","ARCMVH0200A",,, -955.614,,60.5,,,"MOCO","ARCMHV0200A",,, -955.614,,60.5,,,"MOCO","ARCMVV0250A",,, -955.614,,60.5,,,"MOCO","ARCMHH0250A",,, -955.614,,60.5,,,"MOCO","ARCMVH0250A",,, -955.614,,60.5,,,"MOCO","ARCMHV0250A",,, -1878.272,,60.5,,,"MOCO","ARVV0250AP",,, -1878.272,,60.5,,,"MOCO","ARHH0250AP",,, -1878.272,,60.5,,,"MOCO","ARVH0250AP",,, -1878.272,,60.5,,,"MOCO","ARHV0250AP",,, -1232.869,,60.5,,,"MOCO","ARVV0300A",,, -1232.869,,60.5,,,"MOCO","ARHH0300A",,, -1232.869,,60.5,,,"MOCO","ARVH0300A",,, -1232.869,,60.5,,,"MOCO","ARHV0300A",,, -2848.373,,99,,,"MOCO","ARVV0300AP",,, -2848.373,,99,,,"MOCO","ARHH0300AP",,, -2848.373,,99,,,"MOCO","ARVH0300AP",,, -2848.373,,99,,,"MOCO","ARHV0300AP",,, -1663.486,,60.5,,,"MOCO","ARVV0400A",,, -1663.486,,60.5,,,"MOCO","ARHH0400A",,, -1663.486,,60.5,,,"MOCO","ARVH0400A",,, -1663.486,,60.5,,,"MOCO","ARHV0400A",,, -1911.855,,99,,,"MOCO","ARVV0650A",,, -1911.855,,99,,,"MOCO","ARHH0650A",,, -1911.855,,99,,,"MOCO","ARVH0650A",,, -1911.855,,99,,,"MOCO","ARHV0650A",,, -4233.68,,550,,,"MOCO","ARVV0650AP",,, -4233.68,,550,,,"MOCO","ARHH0650AP",,, -4233.68,,550,,,"MOCO","ARVH0650AP",,, -4233.68,,550,,,"MOCO","ARHV0650AP",,, -1935.879,,99,,,"MOCO","ARVV1000A",,, -1935.879,,99,,,"MOCO","ARHH1000A",,, -1935.879,,99,,,"MOCO","ARVH1000A",,, -1935.879,,99,,,"MOCO","ARHV1000A",,, -4793.349,,550,,,"MOCO","ARVV1000AP",,, -4793.349,,550,,,"MOCO","ARHH1000AP",,, -4793.349,,550,,,"MOCO","ARVH1000AP",,, -4793.349,,550,,,"MOCO","ARHV1000AP",,, -402.754,,92.4,,,"MOCO","ASD016A",,, -401.654,,92.4,,,"MOCO","ASD016AW",,, -461.604,,92.4,,,"MOCO","ASD025A",,, -632.082,,92.4,,,"MOCO","ASD040A",,, -1157.211,,92.4,,,"MOCO","ASD065A",,, -1628.979,,92.4,,,"MOCO","ASD100A",,, -1652.915,,92.4,,,"MOCO","ASD160A",,, -606.375,,92.4,,,"MOCO","ASR0025A",,, -618.376,,92.4,,,"MOCO","ASR0040A",,, -1648.768,,92.4,,,"MOCO","ASR0100A",,, -1842.225,,92.4,,,"MOCO","ASR0160A",,, -2107.446,,92.4,,,"MOCO","ASR0200A",,, -3041.896,,92.4,,,"MOCO","ASR0250A",,, -3302.156,,92.4,,,"MOCO","ASR0300A",,, -3667.752,,92.4,,,"MOCO","ASR0400A",,, -3902.514,,550,,,"MOCO","ASR0650A",,, -4569.862,,550,,,"MOCO","ASR1000A",,, -1377.2,,330,,,"MOCO","ASR0025D",,, -1377.2,,330,,,"MOCO","ASR0040D",,, -1377.2,,330,,,"MOCO","ASR0065D",,, -2376,,330,,,"MOCO","ASR0100D",,, -3131.7,,330,,,"MOCO","ASR0160D",,, -3663,,605,,,"MOCO","ASR0250D",,, -3771.9,,605,,,"MOCO","ASR0310D",,, -6092.9,,605,,,"MOCO","ASR0450D",,, -6092.9,,605,,,"MOCO","ASR0450DP",,, -6938.8,,605,,,"MOCO","ASR0650D",,, -7616.4,,605,,,"MOCO","ASR1075D",,, -8800,,605,,,"MOCO","ASR1600D",,, -12862.3,,605,,,"MOCO","ASR2885D",,, -437.44,,,,,"AICO",,,,"EMS" -400,,,,,"AICO",,,,"LIFTING GEAR" -,,,,,"AICO",,,,"PURGING" -,,,,,"AICO",,,,"AMR" -245.91,,,,,"AICO",,,,"CONVERTER INSTALL" -311.7,,,,,"AICO",,,,"CONVERTER REMOVE" -996.93,,,,,"BACO",,,"RA0025LPB", -996.93,,,,,"BACO",,,"RA0025MPB", -996.93,,,,,"BACO",,,"RA0040LPB", -996.93,,,,,"BACO",,,"RA0040MPB", -1620.02,,,,,"BACO",,,"RA0065LPB", -1620.02,,,,,"BACO",,,"RA0100LPB", -996.93,,,,,"BACO",,,"RA0100MPB", -1620.02,,,,,"BACO",,,"RA0160LPB", -996.93,,,,,"BACO",,,"RA0160MPB", -1620.02,,,,,"BACO",,,"RA0200LPB", -996.93,,,,,"BACO",,,"RA0200MPB", -1620.02,,,,,"BACO",,,"RA0250+LPB", -1620.02,,,,,"BACO",,,"RA0250LPB", -1620.02,,,,,"BACO",,,"RA0250MPB", -1931.56,,,,,"BACO",,,"RA0300+LPB", -1620.02,,,,,"BACO",,,"RA0300LPB", -1620.02,,,,,"BACO",,,"RA0300MPB", -1931.56,,,,,"BACO",,,"RA0400LPB", -1620.02,,,,,"BACO",,,"RA0400MPB", -2118.49,,,,,"BACO",,,"RA0650+LPB", -1931.56,,,,,"BACO",,,"RA0650LPB", -1931.56,,,,,"BACO",,,"RA0650MPB", -2118.49,,,,,"BACO",,,"RA1000+LPB", -1931.56,,,,,"BACO",,,"RA1000LPB", -1931.56,,,,,"BACO",,,"RA1000MPB", -996.93,,,,,"BACO",,,"RD0025MPB", -996.93,,,,,"BACO",,,"RD0040MPB", -996.93,,,,,"BACO",,,"RD0065MPB", -996.93,,,,,"BACO",,,"RD0100MPB", -1620.02,,,,,"BACO",,,"RD0160MPB", -1620.02,,,,,"BACO",,,"RD0250MPB", -1620.02,,,,,"BACO",,,"RD0310MPB", -1620.02,,,,,"BACO",,,"RD0450+MPB", -1620.02,,,,,"BACO",,,"RD0450MPB", -1931.56,,,,,"BACO",,,"RD0650MPB", -1931.56,,,,,"BACO",,,"RD1075MPB", -1931.56,,,,,"BACO",,,"RD1600MPB", -2430.03,,,,,"BACO",,,"RD2885MPB", -996.93,,,,,"BACO",,,"U016LPB", -996.93,,,,,"BACO",,,"U016MPB", -996.93,,,,,"BACO",,,"U025LPB", -996.93,,,,,"BACO",,,"U025MPB", -996.93,,,,,"BACO",,,"U040LPB", -996.93,,,,,"BACO",,,"U040MPB", -996.93,,,,,"BACO",,,"U065LPB", -1620.02,,,,,"BACO",,,"U065MPB", -1620.02,,,,,"BACO",,,"U100LPB", -1620.02,,,,,"BACO",,,"U100MPB", -1620.02,,,,,"BACO",,,"U160LPB", -1620.02,,,,,"BACO",,,"U160MPB", -248.61,,,,,"HOCO",,"GC2",, -293.47,,,,,"HOCO",,"GC2FS",, -310.92,,,,,"HOCO",,"GC2MP",, -354.53,,,,,"HOCO",,"GC3",, -394.41,,,,,"HOCO",,"GC4",, -662.96,,,,,"HOCO",,"GC4+",, -781.35,,,,,"HOCO",,"GC5",, -869.83,,,,,"HOCO",,"GC6LP",, -981.98,,,,,"HOCO",,"GC6MP",, -1094.14,,,,,"HOCO",,"GC7LP",, -1206.29,,,,,"HOCO",,"GC7MP",, -1265.48,,,,,"HOCO",,"GC7+LP",, -1377.64,,,,,"HOCO",,"GC7+MP",, -2722.88,,,,,"HOCO",,"GC8LP/MP",, -316.53,,,,,"HOCO",,"Gas Cab No 2 (Multi)",, -392.54,,,,,"HOCO",,"Gas Cab No 4",, -891.01,,,,,"HOCO",,"Gas Cab No 6",, -3673.7,,,,,"HOCO",,"Custom1",, -4055.03,,,,,"HOCO",,"Custom2",, -4204.57,,,,,"HOCO",,"Custom3",, -3916.71,,,,,"HOCO",,"Custom4",, -4326.7,,,,,"HOCO",,"Custom5",, -4978.44,,,,,"HOCO",,"Custom6",, -3303.59,,,,,"HOCO",,"KP1",, -3535.38,,,,,"HOCO",,"KP2",, -3770.9,,,,,"HOCO",,"KP3",, -4431.37,,,,,"HOCO",,"KP4",, -4574.68,,,,,"HOCO",,"KP5",, -280.39,,,,,"HOCO",,"Gas Cab No 2BB",, -392.54,,,,,"HOCO",,"Gas Cab No 4BB25",, -392.54,,,,,"HOCO",,"Gas Cab No 4BB40",, -956.39,,,,,"HOCO",,"Gas Cab No 6BB100",, -1170.88,,,,,"HOCO",,"Gas Cab No 6BB160",, -293.47,,,,,"HOCO",,"GC2FSBB",, -354.53,,,,,"HOCO",,"GC3BB",, -394.41,,,,,"HOCO",,"GC4BB25",, -394.41,,,,,"HOCO",,"GC4BB40",, -781.35,,,,,"HOCO",,"GC5BB",, -956.39,,,,,"HOCO",,"GC6BB100",, -1170.88,,,,,"HOCO",,"GC6BB160",, -248.61,,,,,"HOCO",,"GC2BB",, -316.53,,,,,"HOCO",,"Gas Cab No 2MP",, -5625.2,,,,,"HOCO",,"Custom7",, +,,,,,,,,,,,,,,,,,,,,,,,,, +"SELLING_PRICE","COST_PRICE","DELIVERY_COST","VALID_FROM","VALID_TO","COST_TYPE","MODU_CODE","HOU_CODE","BAS_CODE","ADIT_CODE","METY_CODE","MESC_CODE",,,,,,,,,,,,,, +48.63,,0.00,,,"MOCO","AD016S",,,,,,,,,,,,,,,,,,, +48.63,,0.00,,,"MOCO","AD016SW",,,,,,,,,,,,,,,,,,, +101.37,,0.00,,,"MOCO","AD025S",,,,,,,,,,,,,,,,,,, +101.37,,0.00,,,"MOCO","AD025SW",,,,,,,,,,,,,,,,,,, +101.38,,0.00,,,"MOCO","AD040S",,,,,,,,,,,,,,,,,,, +481.53,,0.00,,,"MOCO","AD065S",,,,,,,,,,,,,,,,,,, +493.92,,0.00,,,"MOCO","AD100S",,,,,,,,,,,,,,,,,,, +719.38,,0.00,,,"MOCO","AD160S",,,,,,,,,,,,,,,,,,, +228.73,,27.50,,,"MOCO","ARCMVV0025A",,,,,,,,,,,,,,,,,,, +228.73,,27.50,,,"MOCO","ARCMVV0025AW",,,,,,,,,,,,,,,,,,, +302.97,,27.50,,,"MOCO","ARCMVV0040AW",,,,,,,,,,,,,,,,,,, +302.97,,27.50,,,"MOCO","ARCMVV0040A",,,,,,,,,,,,,,,,,,, +692.89,,60.50,,,"MOCO","ARCMHH0065A",,,,,,,,,,,,,,,,,,, +692.89,,60.50,,,"MOCO","ARCMVV0065A",,,,,,,,,,,,,,,,,,, +692.89,,60.50,,,"MOCO","ARCMVH0065A",,,,,,,,,,,,,,,,,,, +692.89,,60.50,,,"MOCO","ARCMHV0065A",,,,,,,,,,,,,,,,,,, +692.89,,60.50,,,"MOCO","ARCMHH0100A",,,,,,,,,,,,,,,,,,, +692.89,,60.50,,,"MOCO","ARCMVV0100A",,,,,,,,,,,,,,,,,,, +692.89,,60.50,,,"MOCO","ARCMVH0100A",,,,,,,,,,,,,,,,,,, +692.89,,60.50,,,"MOCO","ARCMHV0100A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMVV0160A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMHH0160A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMVH0160A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMHV0160A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMVV0200A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMHH0200A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMVH0200A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMHV0200A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMVV0250A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMHH0250A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMVH0250A",,,,,,,,,,,,,,,,,,, +955.61,,60.50,,,"MOCO","ARCMHV0250A",,,,,,,,,,,,,,,,,,, +1878.27,,60.50,,,"MOCO","ARVV0250AP",,,,,,,,,,,,,,,,,,, +1878.27,,60.50,,,"MOCO","ARHH0250AP",,,,,,,,,,,,,,,,,,, +1878.27,,60.50,,,"MOCO","ARVH0250AP",,,,,,,,,,,,,,,,,,, +1878.27,,60.50,,,"MOCO","ARHV0250AP",,,,,,,,,,,,,,,,,,, +1232.87,,60.50,,,"MOCO","ARVV0300A",,,,,,,,,,,,,,,,,,, +1232.87,,60.50,,,"MOCO","ARHH0300A",,,,,,,,,,,,,,,,,,, +1232.87,,60.50,,,"MOCO","ARVH0300A",,,,,,,,,,,,,,,,,,, +1232.87,,60.50,,,"MOCO","ARHV0300A",,,,,,,,,,,,,,,,,,, +2848.37,,99.00,,,"MOCO","ARVV0300AP",,,,,,,,,,,,,,,,,,, +2848.37,,99.00,,,"MOCO","ARHH0300AP",,,,,,,,,,,,,,,,,,, +2848.37,,99.00,,,"MOCO","ARVH0300AP",,,,,,,,,,,,,,,,,,, +2848.37,,99.00,,,"MOCO","ARHV0300AP",,,,,,,,,,,,,,,,,,, +1663.49,,60.50,,,"MOCO","ARVV0400A",,,,,,,,,,,,,,,,,,, +1663.49,,60.50,,,"MOCO","ARHH0400A",,,,,,,,,,,,,,,,,,, +1663.49,,60.50,,,"MOCO","ARVH0400A",,,,,,,,,,,,,,,,,,, +1663.49,,60.50,,,"MOCO","ARHV0400A",,,,,,,,,,,,,,,,,,, +1911.86,,99.00,,,"MOCO","ARVV0650A",,,,,,,,,,,,,,,,,,, +1911.86,,99.00,,,"MOCO","ARHH0650A",,,,,,,,,,,,,,,,,,, +1911.86,,99.00,,,"MOCO","ARVH0650A",,,,,,,,,,,,,,,,,,, +1911.86,,99.00,,,"MOCO","ARHV0650A",,,,,,,,,,,,,,,,,,, +4233.68,,550.00,,,"MOCO","ARVV0650AP",,,,,,,,,,,,,,,,,,, +4233.68,,550.00,,,"MOCO","ARHH0650AP",,,,,,,,,,,,,,,,,,, +4233.68,,550.00,,,"MOCO","ARVH0650AP",,,,,,,,,,,,,,,,,,, +4233.68,,550.00,,,"MOCO","ARHV0650AP",,,,,,,,,,,,,,,,,,, +1935.88,,99.00,,,"MOCO","ARVV1000A",,,,,,,,,,,,,,,,,,, +1935.88,,99.00,,,"MOCO","ARHH1000A",,,,,,,,,,,,,,,,,,, +1935.88,,99.00,,,"MOCO","ARVH1000A",,,,,,,,,,,,,,,,,,, +1935.88,,99.00,,,"MOCO","ARHV1000A",,,,,,,,,,,,,,,,,,, +4793.35,,550.00,,,"MOCO","ARVV1000AP",,,,,,,,,,,,,,,,,,, +4793.35,,550.00,,,"MOCO","ARHH1000AP",,,,,,,,,,,,,,,,,,, +4793.35,,550.00,,,"MOCO","ARVH1000AP",,,,,,,,,,,,,,,,,,, +4793.35,,550.00,,,"MOCO","ARHV1000AP",,,,,,,,,,,,,,,,,,, +402.75,,92.40,,,"MOCO","ASD016A",,,,,,,,,,,,,,,,,,, +401.65,,92.40,,,"MOCO","ASD016AW",,,,,,,,,,,,,,,,,,, +461.60,,92.40,,,"MOCO","ASD025A",,,,,,,,,,,,,,,,,,, +632.08,,92.40,,,"MOCO","ASD040A",,,,,,,,,,,,,,,,,,, +1157.21,,92.40,,,"MOCO","ASD065A",,,,,,,,,,,,,,,,,,, +1628.98,,92.40,,,"MOCO","ASD100A",,,,,,,,,,,,,,,,,,, +1652.92,,92.40,,,"MOCO","ASD160A",,,,,,,,,,,,,,,,,,, +606.38,,92.40,,,"MOCO","ASR0025A",,,,,,,,,,,,,,,,,,, +618.38,,92.40,,,"MOCO","ASR0040A",,,,,,,,,,,,,,,,,,, +1648.77,,92.40,,,"MOCO","ASR0100A",,,,,,,,,,,,,,,,,,, +1842.23,,92.40,,,"MOCO","ASR0160A",,,,,,,,,,,,,,,,,,, +2107.45,,92.40,,,"MOCO","ASR0200A",,,,,,,,,,,,,,,,,,, +3041.90,,92.40,,,"MOCO","ASR0250A",,,,,,,,,,,,,,,,,,, +3302.16,,92.40,,,"MOCO","ASR0300A",,,,,,,,,,,,,,,,,,, +3667.75,,92.40,,,"MOCO","ASR0400A",,,,,,,,,,,,,,,,,,, +3902.51,,550.00,,,"MOCO","ASR0650A",,,,,,,,,,,,,,,,,,, +4569.86,,550.00,,,"MOCO","ASR1000A",,,,,,,,,,,,,,,,,,, +1377.20,,330.00,,,"MOCO","ASR0025D",,,,,,,,,,,,,,,,,,, +1377.20,,330.00,,,"MOCO","ASR0040D",,,,,,,,,,,,,,,,,,, +1377.20,,330.00,,,"MOCO","ASR0065D",,,,,,,,,,,,,,,,,,, +2376.00,,330.00,,,"MOCO","ASR0100D",,,,,,,,,,,,,,,,,,, +3131.70,,330.00,,,"MOCO","ASR0160D",,,,,,,,,,,,,,,,,,, +3663.00,,605.00,,,"MOCO","ASR0250D",,,,,,,,,,,,,,,,,,, +3771.90,,605.00,,,"MOCO","ASR0310D",,,,,,,,,,,,,,,,,,, +6092.90,,605.00,,,"MOCO","ASR0450D",,,,,,,,,,,,,,,,,,, +6092.90,,605.00,,,"MOCO","ASR0450DP",,,,,,,,,,,,,,,,,,, +6938.80,,605.00,,,"MOCO","ASR0650D",,,,,,,,,,,,,,,,,,, +7616.40,,605.00,,,"MOCO","ASR1075D",,,,,,,,,,,,,,,,,,, +8800.00,,605.00,,,"MOCO","ASR1600D",,,,,,,,,,,,,,,,,,, +12862.30,,605.00,,,"MOCO","ASR2885D",,,,,,,,,,,,,,,,,,, +437.44,,,,,"AICO",,,,"EMS",,,,,,,,,,,,,,,, +400.00,,,,,"AICO",,,,"LIFTING GEAR",,,,,,,,,,,,,,,, +123.56,,,,,"AICO",,,,"PURGING","Diaphragm",,,,,,,,,,,,,,, +,,,,,"AICO",,,,"AMR",,,,,,,,,,,,,,,,"Diaphragm" +245.91,,,,,"AICO",,,,"CONVERTER INSTALL",,,,,,,,,,,,,,,, +311.70,,,,,"AICO",,,,"CONVERTER REMOVE",,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RA0025LPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RA0025MPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RA0040LPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RA0040MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0065LPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0100LPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RA0100MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0160LPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RA0160MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0200LPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RA0200MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0250+LPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0250LPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0250MPB",,,,,,,,,,,,,,,,, +1931.56,,,,,"BACO",,,"RA0300+LPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0300LPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0300MPB",,,,,,,,,,,,,,,,, +1931.56,,,,,"BACO",,,"RA0400LPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RA0400MPB",,,,,,,,,,,,,,,,, +2118.49,,,,,"BACO",,,"RA0650+LPB",,,,,,,,,,,,,,,,, +1931.56,,,,,"BACO",,,"RA0650LPB",,,,,,,,,,,,,,,,, +1931.56,,,,,"BACO",,,"RA0650MPB",,,,,,,,,,,,,,,,, +2118.49,,,,,"BACO",,,"RA1000+LPB",,,,,,,,,,,,,,,,, +1931.56,,,,,"BACO",,,"RA1000LPB",,,,,,,,,,,,,,,,, +1931.56,,,,,"BACO",,,"RA1000MPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RD0025MPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RD0040MPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RD0065MPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"RD0100MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RD0160MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RD0250MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RD0310MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RD0450+MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"RD0450MPB",,,,,,,,,,,,,,,,, +1931.56,,,,,"BACO",,,"RD0650MPB",,,,,,,,,,,,,,,,, +1931.56,,,,,"BACO",,,"RD1075MPB",,,,,,,,,,,,,,,,, +1931.56,,,,,"BACO",,,"RD1600MPB",,,,,,,,,,,,,,,,, +2430.03,,,,,"BACO",,,"RD2885MPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"U016LPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"U016MPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"U025LPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"U025MPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"U040LPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"U040MPB",,,,,,,,,,,,,,,,, +996.93,,,,,"BACO",,,"U065LPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"U065MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"U100LPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"U100MPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"U160LPB",,,,,,,,,,,,,,,,, +1620.02,,,,,"BACO",,,"U160MPB",,,,,,,,,,,,,,,,, +248.61,,,,,"HOCO",,"GC2",,,,,,,,,,,,,,,,,, +293.47,,,,,"HOCO",,"GC2FS",,,,,,,,,,,,,,,,,, +310.92,,,,,"HOCO",,"GC2MP",,,,,,,,,,,,,,,,,, +354.53,,,,,"HOCO",,"GC3",,,,,,,,,,,,,,,,,, +394.41,,,,,"HOCO",,"GC4",,,,,,,,,,,,,,,,,, +662.96,,,,,"HOCO",,"GC4+",,,,,,,,,,,,,,,,,, +781.35,,,,,"HOCO",,"GC5",,,,,,,,,,,,,,,,,, +869.83,,,,,"HOCO",,"GC6LP",,,,,,,,,,,,,,,,,, +981.98,,,,,"HOCO",,"GC6MP",,,,,,,,,,,,,,,,,, +1094.14,,,,,"HOCO",,"GC7LP",,,,,,,,,,,,,,,,,, +1206.29,,,,,"HOCO",,"GC7MP",,,,,,,,,,,,,,,,,, +1265.48,,,,,"HOCO",,"GC7+LP",,,,,,,,,,,,,,,,,, +1377.64,,,,,"HOCO",,"GC7+MP",,,,,,,,,,,,,,,,,, +2722.88,,,,,"HOCO",,"GC8LP/MP",,,,,,,,,,,,,,,,,, +316.53,,,,,"HOCO",,"Gas Cab No 2 (Multi)",,,,,,,,,,,,,,,,,, +392.54,,,,,"HOCO",,"Gas Cab No 4",,,,,,,,,,,,,,,,,, +891.01,,,,,"HOCO",,"Gas Cab No 6",,,,,,,,,,,,,,,,,, +3673.70,,,,,"HOCO",,"Custom1",,,,,,,,,,,,,,,,,, +4055.03,,,,,"HOCO",,"Custom2",,,,,,,,,,,,,,,,,, +4204.57,,,,,"HOCO",,"Custom3",,,,,,,,,,,,,,,,,, +3916.71,,,,,"HOCO",,"Custom4",,,,,,,,,,,,,,,,,, +4326.70,,,,,"HOCO",,"Custom5",,,,,,,,,,,,,,,,,, +4978.44,,,,,"HOCO",,"Custom6",,,,,,,,,,,,,,,,,, +3303.59,,,,,"HOCO",,"KP1",,,,,,,,,,,,,,,,,, +3535.38,,,,,"HOCO",,"KP2",,,,,,,,,,,,,,,,,, +3770.90,,,,,"HOCO",,"KP3",,,,,,,,,,,,,,,,,, +4431.37,,,,,"HOCO",,"KP4",,,,,,,,,,,,,,,,,, +4574.68,,,,,"HOCO",,"KP5",,,,,,,,,,,,,,,,,, +280.39,,,,,"HOCO",,"Gas Cab No 2BB",,,,,,,,,,,,,,,,,, +392.54,,,,,"HOCO",,"Gas Cab No 4BB25",,,,,,,,,,,,,,,,,, +392.54,,,,,"HOCO",,"Gas Cab No 4BB40",,,,,,,,,,,,,,,,,, +956.39,,,,,"HOCO",,"Gas Cab No 6BB100",,,,,,,,,,,,,,,,,, +1170.88,,,,,"HOCO",,"Gas Cab No 6BB160",,,,,,,,,,,,,,,,,, +293.47,,,,,"HOCO",,"GC2FSBB",,,,,,,,,,,,,,,,,, +354.53,,,,,"HOCO",,"GC3BB",,,,,,,,,,,,,,,,,, +394.41,,,,,"HOCO",,"GC4BB25",,,,,,,,,,,,,,,,,, +394.41,,,,,"HOCO",,"GC4BB40",,,,,,,,,,,,,,,,,, +781.35,,,,,"HOCO",,"GC5BB",,,,,,,,,,,,,,,,,, +956.39,,,,,"HOCO",,"GC6BB100",,,,,,,,,,,,,,,,,, +1170.88,,,,,"HOCO",,"GC6BB160",,,,,,,,,,,,,,,,,, +248.61,,,,,"HOCO",,"GC2BB",,,,,,,,,,,,,,,,,, +316.53,,,,,"HOCO",,"Gas Cab No 2MP",,,,,,,,,,,,,,,,,, +5625.20,,,,,"HOCO",,"Custom7",,,,,,,,,,,,,,,,,, diff --git a/Modules/mip_bulk_load.pck b/Modules/mip_bulk_load.pck index ad1fd61..b0df9b2 100644 --- a/Modules/mip_bulk_load.pck +++ b/Modules/mip_bulk_load.pck @@ -61,10 +61,10 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS BEGIN SELECT id - INTO g_other_manufacturer_id - FROM parties - WHERE NAME = '- OTHER -' - AND prty_type = 'MANU'; + INTO g_other_manufacturer_id + FROM parties + WHERE NAME = '- OTHER -' + AND prty_type = 'MANU'; EXCEPTION WHEN no_data_found THEN INSERT INTO parties @@ -258,14 +258,14 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (code ,description) (SELECT code - ,initcap(code) - FROM (SELECT DISTINCT upper(TRIM(mety_code)) AS code - FROM ext_meters) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM meter_types)); + ,INITCAP(code) + FROM (SELECT DISTINCT upper(TRIM(mety_code)) AS code + FROM ext_meters) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM meter_types)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': meter_types'); -- Meter Sizes INSERT INTO meter_size_codes @@ -275,19 +275,19 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,valid_for_existing_meter ,valid_for_new_meter) (SELECT code - ,initcap(code) + ,INITCAP(code) ,0 ,'YES' ,'NO' - FROM (SELECT DISTINCT upper(REPLACE(TRIM(mesc_code) + FROM (SELECT DISTINCT upper(REPLACE(TRIM(mesc_code) ,'"' ,'inch')) AS code - FROM ext_meters) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM meter_size_codes)); + FROM ext_meters) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM meter_size_codes)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': meter_size_codes'); -- Manufacturers @@ -302,18 +302,18 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (SELECT prty_seq.NEXTVAL ,manu_ref ,manu_ref - ,initcap(manu_ref) + ,INITCAP(manu_ref) ,'MANU' ,SYSDATE ,USER - FROM (SELECT DISTINCT upper(TRIM(manu_ref)) AS manu_ref - FROM ext_meters) - WHERE manu_ref IS NOT NULL - AND manu_ref NOT IN (SELECT manu_ref - FROM parties - WHERE prty_type = 'MANU')); + FROM (SELECT DISTINCT upper(TRIM(manu_ref)) AS manu_ref + FROM ext_meters) + WHERE manu_ref IS NOT NULL + AND manu_ref NOT IN (SELECT manu_ref + FROM parties + WHERE prty_type = 'MANU')); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': manufacturers'); -- Drawings @@ -322,13 +322,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,description) (SELECT code ,code - FROM (SELECT DISTINCT upper(TRIM(drwg_code)) AS code - FROM ext_meters) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM drawings)); + FROM (SELECT DISTINCT upper(TRIM(drwg_code)) AS code + FROM ext_meters) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM drawings)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': drawings'); MERGE INTO meters metr @@ -348,14 +348,14 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS WHEN valid_from IS NULL THEN trunc(SYSDATE) ELSE - to_date(valid_from + TO_DATE(valid_from ,'dd/mm/yyyy') END AS valid_from ,CASE WHEN valid_to IS NULL THEN NULL ELSE - to_date(valid_to + TO_DATE(valid_to ,'dd/mm/yyyy') END AS valid_to ,qmin @@ -363,14 +363,14 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,upper(REPLACE(TRIM(mesc_code) ,'"' ,'inch')) AS mesc_code - FROM ext_meters + FROM ext_meters ,parties p - WHERE p.manu_ref = upper(TRIM(ext_meters.manu_ref)) - AND p.prty_type = 'MANU') e + WHERE p.manu_ref = upper(TRIM(ext_meters.manu_ref)) + AND p.prty_type = 'MANU') e ON (e.code = metr.code) WHEN MATCHED THEN UPDATE - SET drwg_code = e.drwg_code + SET drwg_code = e.drwg_code ,mety_code = e.mety_code ,prty_id = e.prty_id ,dim_a = e.dim_a @@ -418,7 +418,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,e.qmin ,e.mesc_code) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': meters'); END load_meters; @@ -439,22 +439,22 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (code ,description) (SELECT code - ,initcap(code) - FROM (SELECT DISTINCT code - FROM (SELECT upper(REPLACE(TRIM(inlet_cnty_code) + ,INITCAP(code) + FROM (SELECT DISTINCT code + FROM (SELECT upper(REPLACE(TRIM(inlet_cnty_code) ,'"' ,'inch')) AS code - FROM ext_modules + FROM ext_modules UNION SELECT upper(REPLACE(TRIM(outlet_cnty_code) ,'"' ,'inch')) - FROM ext_modules)) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM connection_types)); + FROM ext_modules)) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM connection_types)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': connection_types'); -- Drawings INSERT INTO drawings @@ -462,14 +462,14 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,description) (SELECT code ,code - FROM (SELECT DISTINCT upper(TRIM(drwg_code)) AS code - FROM ext_modules - WHERE TRIM(drwg_code) IS NOT NULL) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM drawings)); + FROM (SELECT DISTINCT upper(TRIM(drwg_code)) AS code + FROM ext_modules + WHERE TRIM(drwg_code) IS NOT NULL) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM drawings)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': drawings'); -- Manufacturers @@ -484,18 +484,18 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (SELECT prty_seq.NEXTVAL ,manu_ref ,manu_ref - ,initcap(manu_ref) + ,INITCAP(manu_ref) ,'MANU' ,SYSDATE ,USER - FROM (SELECT DISTINCT upper(TRIM(manu_ref)) AS manu_ref - FROM ext_modules) - WHERE manu_ref IS NOT NULL - AND manu_ref NOT IN (SELECT manu_ref - FROM parties - WHERE prty_type = 'MANU')); + FROM (SELECT DISTINCT upper(TRIM(manu_ref)) AS manu_ref + FROM ext_modules) + WHERE manu_ref IS NOT NULL + AND manu_ref NOT IN (SELECT manu_ref + FROM parties + WHERE prty_type = 'MANU')); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': manufacturers'); -- Relief valves @@ -508,13 +508,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,'OTHER' ,999 ,999 - FROM (SELECT DISTINCT upper(TRIM(reva_code)) AS code - FROM ext_modules - WHERE TRIM(reva_code) IS NOT NULL) - WHERE code NOT IN (SELECT code - FROM relief_valves)); + FROM (SELECT DISTINCT upper(TRIM(reva_code)) AS code + FROM ext_modules + WHERE TRIM(reva_code) IS NOT NULL) + WHERE code NOT IN (SELECT code + FROM relief_valves)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': relief_valves'); -- Slamshut valves INSERT INTO slamshut_valves @@ -526,13 +526,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,'OTHER' ,999 ,999 - FROM (SELECT DISTINCT upper(TRIM(slva_code)) AS code - FROM ext_modules - WHERE TRIM(slva_code) IS NOT NULL) - WHERE code NOT IN (SELECT code - FROM slamshut_valves)); + FROM (SELECT DISTINCT upper(TRIM(slva_code)) AS code + FROM ext_modules + WHERE TRIM(slva_code) IS NOT NULL) + WHERE code NOT IN (SELECT code + FROM slamshut_valves)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': slamshut_valves'); -- Service pressures @@ -543,13 +543,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (SELECT code ,'OTHER' ,code - FROM (SELECT DISTINCT upper(TRIM(svcp_code)) AS code - FROM ext_modules) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM service_pressures)); + FROM (SELECT DISTINCT upper(TRIM(svcp_code)) AS code + FROM ext_modules) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM service_pressures)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': service_pressures'); -- Bases @@ -580,13 +580,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,999 ,999 ,999 - FROM (SELECT DISTINCT upper(TRIM(bas_code)) AS code - FROM ext_modules) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM bases)); + FROM (SELECT DISTINCT upper(TRIM(bas_code)) AS code + FROM ext_modules) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM bases)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': bases'); -- Housings @@ -609,13 +609,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,999 ,999 ,999 - FROM (SELECT DISTINCT upper(TRIM(hou_code)) AS code - FROM ext_modules) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM housings)); + FROM (SELECT DISTINCT upper(TRIM(hou_code)) AS code + FROM ext_modules) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM housings)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': housings'); -- Regulators @@ -630,13 +630,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,code ,999 ,999 - FROM (SELECT DISTINCT upper(TRIM(regu_code)) AS code - FROM ext_modules) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM regulators)); + FROM (SELECT DISTINCT upper(TRIM(regu_code)) AS code + FROM ext_modules) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM regulators)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': regulators'); -- Filters @@ -647,13 +647,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (SELECT code ,'OTHER' ,999 - FROM (SELECT DISTINCT upper(TRIM(fltr_code)) AS code - FROM ext_modules) - WHERE code IS NOT NULL - AND code NOT IN (SELECT code - FROM filters)); + FROM (SELECT DISTINCT upper(TRIM(fltr_code)) AS code + FROM ext_modules) + WHERE code IS NOT NULL + AND code NOT IN (SELECT code + FROM filters)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': filters'); -- Connection orientations @@ -661,18 +661,18 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (code ,description) (SELECT code - ,initcap(code) - FROM (SELECT DISTINCT code - FROM (SELECT upper(TRIM(inlet_cnor_code)) AS code - FROM ext_modules + ,INITCAP(code) + FROM (SELECT DISTINCT code + FROM (SELECT upper(TRIM(inlet_cnor_code)) AS code + FROM ext_modules UNION SELECT upper(TRIM(outlet_cnor_code)) - FROM ext_modules) - WHERE code IS NOT NULL) - WHERE code NOT IN (SELECT code - FROM connection_orientations)); + FROM ext_modules) + WHERE code IS NOT NULL) + WHERE code NOT IN (SELECT code + FROM connection_orientations)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': connection_orientations'); MERGE INTO modules modu @@ -707,14 +707,14 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS WHEN valid_from IS NULL THEN trunc(SYSDATE) ELSE - to_date(valid_from + TO_DATE(valid_from ,'dd/mm/yyyy') END AS valid_from ,CASE WHEN valid_to IS NULL THEN NULL ELSE - to_date(valid_to + TO_DATE(valid_to ,'dd/mm/yyyy') END AS valid_to ,upper(TRIM(regu_code)) AS regu_code @@ -724,14 +724,14 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,lead_time ,p.id AS prty_id ,qmax - FROM ext_modules e + FROM ext_modules e ,parties p - WHERE p.manu_ref = upper(TRIM(e.manu_ref)) - AND p.prty_type = 'MANU') e + WHERE p.manu_ref = upper(TRIM(e.manu_ref)) + AND p.prty_type = 'MANU') e ON (upper(e.code) = modu.code) WHEN MATCHED THEN UPDATE - SET outlet_cnty_code = e.outlet_cnty_code + SET outlet_cnty_code = e.outlet_cnty_code ,inlet_cnty_code = e.inlet_cnty_code ,drwg_code = e.drwg_code ,metr_code = e.metr_code @@ -829,7 +829,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,e.prty_id ,e.qmax) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': modules'); END load_modules; @@ -852,14 +852,14 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,open_mode => dbms_lob.lob_readwrite); SELECT directory_path - INTO l_directory_path - FROM all_directories - WHERE directory_name = 'WEBMIP_BULK_LOAD'; + INTO l_directory_path + FROM all_directories + WHERE directory_name = 'WEBMIP_BULK_LOAD'; get_dir_list(l_directory_path); FOR l_rec IN (SELECT filename AS filename - ,upper(substr(filename + ,upper(SUBSTR(filename ,1 ,regexp_instr(filename ,'.(jpg)|.(jpeg)$' @@ -867,16 +867,16 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,1 ,0 ,'i') - 1)) AS drwg_code - ,substr(filename + ,SUBSTR(filename ,regexp_instr(filename ,'.(jpg)|.(jpeg)$' ,1 ,1 ,0 ,'i') + 1) AS filename_suffix - FROM gtt_dir_list g - WHERE g.filetype = 'F' - AND regexp_like(g.filename + FROM gtt_dir_list g + WHERE g.filetype = 'F' + AND regexp_like(g.filename ,'.(jpg)|.(jpeg)$' ,'i')) LOOP @@ -908,14 +908,14 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS END; --Shouldn't we add the flow id to this where clause to? DELETE FROM wwv_flow_files - WHERE NAME LIKE '%/' || l_rec.filename - and FLOW_ID = apex_application.g_flow_id; + WHERE NAME LIKE '%/' || l_rec.filename + AND flow_id = apex_application.g_flow_id; DELETE FROM document_roles doro - WHERE doro.drwg_code = l_rec.drwg_code; + WHERE doro.drwg_code = l_rec.drwg_code; DELETE FROM documents doco - WHERE doco.uri = '%/' || l_rec.filename; + WHERE doco.uri = '%/' || l_rec.filename; INSERT INTO wwv_flow_files (NAME @@ -932,7 +932,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,apex_application.g_flow_id ,l_source_file_length ,'Bulk Loaded on ' || - to_char(SYSDATE + TO_CHAR(SYSDATE ,'DD-MON-YYYY HH24:MI:SS') ,l_blob) RETURNING NAME INTO l_uri; @@ -972,12 +972,12 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,description) (SELECT code ,code - FROM (SELECT DISTINCT upper(TRIM(field_2)) AS code - FROM ext_bases - WHERE TRIM(field_2) IS NOT NULL) - WHERE code NOT IN (SELECT code - FROM drawings)); - pl(to_char(SQL%ROWCOUNT + FROM (SELECT DISTINCT upper(TRIM(field_2)) AS code + FROM ext_bases + WHERE TRIM(field_2) IS NOT NULL) + WHERE code NOT IN (SELECT code + FROM drawings)); + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': drawings'); MERGE INTO bases bas USING (SELECT upper(TRIM(field_1)) AS field_1 @@ -993,13 +993,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,field_11 ,field_12 ,field_13 - FROM ext_bases) e + FROM ext_bases) e ON (e.field_1 = bas.code) WHEN MATCHED THEN UPDATE - SET drwg_code = e.field_2 + SET drwg_code = e.field_2 ,description = nvl(e.field_3 - ,initcap(e.field_1)) + ,INITCAP(e.field_1)) ,dim_a = e.field_4 ,dim_b = e.field_5 ,dim_c = e.field_6 @@ -1029,7 +1029,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (e.field_1 ,e.field_2 ,nvl(e.field_3 - ,initcap(e.field_1)) + ,INITCAP(e.field_1)) ,e.field_4 ,e.field_5 ,e.field_6 @@ -1041,7 +1041,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,e.field_12 ,e.field_13) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': bases'); END load_bases; @@ -1067,17 +1067,17 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (SELECT prty_seq.NEXTVAL ,manu_ref ,manu_ref - ,initcap(manu_ref) + ,INITCAP(manu_ref) ,'MANU' ,SYSDATE ,USER - FROM (SELECT DISTINCT upper(TRIM(field_2)) AS manu_ref - FROM ext_housings - WHERE TRIM(field_2) IS NOT NULL) - WHERE manu_ref NOT IN (SELECT manu_ref - FROM parties - WHERE prty_type = 'MANU')); - pl(to_char(SQL%ROWCOUNT + FROM (SELECT DISTINCT upper(TRIM(field_2)) AS manu_ref + FROM ext_housings + WHERE TRIM(field_2) IS NOT NULL) + WHERE manu_ref NOT IN (SELECT manu_ref + FROM parties + WHERE prty_type = 'MANU')); + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': manufacturers'); -- Drawings @@ -1086,12 +1086,12 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,description) (SELECT code ,code - FROM (SELECT DISTINCT upper(TRIM(field_3)) AS code - FROM ext_housings - WHERE TRIM(field_3) IS NOT NULL) - WHERE code NOT IN (SELECT code - FROM drawings)); - pl(to_char(SQL%ROWCOUNT + FROM (SELECT DISTINCT upper(TRIM(field_3)) AS code + FROM ext_housings + WHERE TRIM(field_3) IS NOT NULL) + WHERE code NOT IN (SELECT code + FROM drawings)); + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': drawings'); -- Housing Types @@ -1099,13 +1099,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (code ,description) (SELECT code - ,initcap(code) - FROM (SELECT DISTINCT upper(TRIM(field_4)) AS code - FROM ext_housings - WHERE TRIM(field_4) IS NOT NULL) - WHERE code NOT IN (SELECT code - FROM housing_types)); - pl(to_char(SQL%ROWCOUNT + ,INITCAP(code) + FROM (SELECT DISTINCT upper(TRIM(field_4)) AS code + FROM ext_housings + WHERE TRIM(field_4) IS NOT NULL) + WHERE code NOT IN (SELECT code + FROM housing_types)); + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': housing_types'); MERGE INTO housings hou @@ -1118,18 +1118,18 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,field_7 ,field_8 ,field_9 - FROM ext_housings + FROM ext_housings ,parties p - WHERE p.manu_ref = upper(TRIM(field_2)) - AND p.prty_type = 'MANU') e + WHERE p.manu_ref = upper(TRIM(field_2)) + AND p.prty_type = 'MANU') e ON (e.field_1 = hou.code) WHEN MATCHED THEN UPDATE - SET prty_id = e.field_2 + SET prty_id = e.field_2 ,drwg_code = e.field_3 ,hoty_code = e.field_4 ,description = nvl(e.field_5 - ,initcap(e.field_1)) + ,INITCAP(e.field_1)) ,dim_w = e.field_6 ,dim_h = e.field_7 ,dim_l = e.field_8 @@ -1151,13 +1151,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,e.field_3 ,e.field_4 ,nvl(e.field_5 - ,initcap(e.field_1)) + ,INITCAP(e.field_1)) ,e.field_6 ,e.field_7 ,e.field_8 ,e.field_9) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': housings'); END load_housings; @@ -1185,29 +1185,39 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,cost_price ,delivery_cost ,CASE - WHEN valid_from IS NULL AND valid_to IS NULL THEN - trunc(SYSDATE) - WHEN valid_from IS NULL AND valid_to IS NOT NULL THEN - least(trunc(sysdate),to_date(valid_to,'dd/mm/yyyy')) - WHEN valid_from IS NOT NULL AND valid_to IS NULL THEN - to_date(valid_from - ,'dd/mm/yyyy') - ELSE - least(to_date(valid_from, 'dd/mm/yyyy'), to_date(valid_to, 'dd/mm/yyyy')) + WHEN valid_from IS NULL + AND valid_to IS NULL THEN + trunc(SYSDATE) + WHEN valid_from IS NULL + AND valid_to IS NOT NULL THEN + least(trunc(SYSDATE) + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) + WHEN valid_from IS NOT NULL + AND valid_to IS NULL THEN + TO_DATE(valid_from + ,'dd/mm/yyyy') + ELSE + least(TO_DATE(valid_from + ,'dd/mm/yyyy') + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) END AS valid_from ,CASE WHEN valid_to IS NULL THEN NULL ELSE - to_date(valid_to + TO_DATE(valid_to ,'dd/mm/yyyy') END AS valid_to - FROM ext_material_costs - WHERE upper(TRIM(cost_type)) = 'AICO') e - ON (e.adit_code = cos.adit_code AND e.valid_from = cos.valid_from AND cos.cost_type = 'AICO') + ,UPPER(trim(mety_code)) AS mety_code + ,UPPER(trim(mesc_code)) AS mesc_code + FROM ext_material_costs + WHERE upper(TRIM(cost_type)) = 'AICO') e + ON (e.adit_code = cos.adit_code AND e.valid_from = cos.valid_from AND cos.cost_type = 'AICO' AND ((e. mesc_code IS NULL AND cos.mesc_code IS NULL) OR (e.mesc_code = cos.mesc_code)) AND ((e.mety_code IS NULL AND cos.mety_code IS NULL) OR (e.mety_code = cos.mety_code))) WHEN MATCHED THEN UPDATE - SET selling_price = e.selling_price + SET selling_price = e.selling_price ,cost_price = e.cost_price ,delivery_cost = e.delivery_cost ,valid_to = e.valid_to @@ -1220,7 +1230,9 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,valid_from ,valid_to ,cost_type - ,adit_code) + ,adit_code + ,mety_code + ,mesc_code) VALUES (cost_seq.NEXTVAL ,e.selling_price @@ -1229,9 +1241,11 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,e.valid_from ,e.valid_to ,'AICO' - ,e.adit_code) log errors reject LIMIT unlimited; + ,e.adit_code + ,e.mety_code + ,e.mesc_code) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': additional_items'); -- -- Base costs @@ -1242,29 +1256,37 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,cost_price ,delivery_cost ,CASE - WHEN valid_from IS NULL AND valid_to IS NULL THEN - trunc(SYSDATE) - WHEN valid_from IS NULL AND valid_to IS NOT NULL THEN - least(trunc(sysdate),to_date(valid_to,'dd/mm/yyyy')) - WHEN valid_from IS NOT NULL AND valid_to IS NULL THEN - to_date(valid_from - ,'dd/mm/yyyy') - ELSE - least(to_date(valid_from, 'dd/mm/yyyy'), to_date(valid_to, 'dd/mm/yyyy')) + WHEN valid_from IS NULL + AND valid_to IS NULL THEN + trunc(SYSDATE) + WHEN valid_from IS NULL + AND valid_to IS NOT NULL THEN + least(trunc(SYSDATE) + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) + WHEN valid_from IS NOT NULL + AND valid_to IS NULL THEN + TO_DATE(valid_from + ,'dd/mm/yyyy') + ELSE + least(TO_DATE(valid_from + ,'dd/mm/yyyy') + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) END AS valid_from ,CASE WHEN valid_to IS NULL THEN NULL ELSE - to_date(valid_to + TO_DATE(valid_to ,'dd/mm/yyyy') END AS valid_to - FROM ext_material_costs - WHERE upper(TRIM(cost_type)) = 'BACO') e + FROM ext_material_costs + WHERE upper(TRIM(cost_type)) = 'BACO') e ON (e.bas_code = cos.bas_code AND e.valid_from = cos.valid_from AND cos.cost_type = 'BACO') WHEN MATCHED THEN UPDATE - SET selling_price = e.selling_price + SET selling_price = e.selling_price ,cost_price = e.cost_price ,delivery_cost = e.delivery_cost ,valid_to = e.valid_to @@ -1288,7 +1310,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,'BACO' ,e.bas_code) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': bases'); -- -- Housing costs @@ -1299,29 +1321,37 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,cost_price ,delivery_cost ,CASE - WHEN valid_from IS NULL AND valid_to IS NULL THEN - trunc(SYSDATE) - WHEN valid_from IS NULL AND valid_to IS NOT NULL THEN - least(trunc(sysdate),to_date(valid_to,'dd/mm/yyyy')) - WHEN valid_from IS NOT NULL AND valid_to IS NULL THEN - to_date(valid_from - ,'dd/mm/yyyy') - ELSE - least(to_date(valid_from, 'dd/mm/yyyy'), to_date(valid_to, 'dd/mm/yyyy')) + WHEN valid_from IS NULL + AND valid_to IS NULL THEN + trunc(SYSDATE) + WHEN valid_from IS NULL + AND valid_to IS NOT NULL THEN + least(trunc(SYSDATE) + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) + WHEN valid_from IS NOT NULL + AND valid_to IS NULL THEN + TO_DATE(valid_from + ,'dd/mm/yyyy') + ELSE + least(TO_DATE(valid_from + ,'dd/mm/yyyy') + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) END AS valid_from ,CASE WHEN valid_to IS NULL THEN NULL ELSE - to_date(valid_to + TO_DATE(valid_to ,'dd/mm/yyyy') END AS valid_to - FROM ext_material_costs - WHERE upper(TRIM(cost_type)) = 'HOCO') e + FROM ext_material_costs + WHERE upper(TRIM(cost_type)) = 'HOCO') e ON (e.hou_code = cos.hou_code AND e.valid_from = cos.valid_from AND cos.cost_type = 'HOCO') WHEN MATCHED THEN UPDATE - SET selling_price = e.selling_price + SET selling_price = e.selling_price ,cost_price = e.cost_price ,delivery_cost = e.delivery_cost ,valid_to = e.valid_to @@ -1345,7 +1375,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,'HOCO' ,e.hou_code) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': housings'); -- -- Module costs @@ -1356,29 +1386,37 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,cost_price ,delivery_cost ,CASE - WHEN valid_from IS NULL AND valid_to IS NULL THEN - trunc(SYSDATE) - WHEN valid_from IS NULL AND valid_to IS NOT NULL THEN - least(trunc(sysdate),to_date(valid_to,'dd/mm/yyyy')) - WHEN valid_from IS NOT NULL AND valid_to IS NULL THEN - to_date(valid_from - ,'dd/mm/yyyy') - ELSE - least(to_date(valid_from, 'dd/mm/yyyy'), to_date(valid_to, 'dd/mm/yyyy')) + WHEN valid_from IS NULL + AND valid_to IS NULL THEN + trunc(SYSDATE) + WHEN valid_from IS NULL + AND valid_to IS NOT NULL THEN + least(trunc(SYSDATE) + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) + WHEN valid_from IS NOT NULL + AND valid_to IS NULL THEN + TO_DATE(valid_from + ,'dd/mm/yyyy') + ELSE + least(TO_DATE(valid_from + ,'dd/mm/yyyy') + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) END AS valid_from ,CASE WHEN valid_to IS NULL THEN NULL ELSE - to_date(valid_to + TO_DATE(valid_to ,'dd/mm/yyyy') END AS valid_to - FROM ext_material_costs - WHERE upper(TRIM(cost_type)) = 'MOCO') e + FROM ext_material_costs + WHERE upper(TRIM(cost_type)) = 'MOCO') e ON (e.modu_code = cos.modu_code AND e.valid_from = cos.valid_from AND cos.cost_type = 'MOCO') WHEN MATCHED THEN UPDATE - SET selling_price = e.selling_price + SET selling_price = e.selling_price ,cost_price = e.cost_price ,delivery_cost = e.delivery_cost ,valid_to = e.valid_to @@ -1402,7 +1440,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,'MOCO' ,e.modu_code) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': modules'); -- -- Labour costs @@ -1444,11 +1482,11 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ELSE 'ERR:' || code END gen_enq_type - FROM enquiry_types) LOOP + FROM enquiry_types) LOOP FOR l_network IN 1 .. 8 LOOP MERGE INTO costs cos USING (SELECT * - FROM (SELECT CASE l_network + FROM (SELECT CASE l_network WHEN 1 THEN netw01_selling_price WHEN 2 THEN @@ -1468,21 +1506,29 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS END AS selling_price ,'NETW0' || l_network AS regi_code ,CASE - WHEN valid_from IS NULL AND valid_to IS NULL THEN - trunc(SYSDATE) - WHEN valid_from IS NULL AND valid_to IS NOT NULL THEN - least(trunc(sysdate),to_date(valid_to,'dd/mm/yyyy')) - WHEN valid_from IS NOT NULL AND valid_to IS NULL THEN - to_date(valid_from - ,'dd/mm/yyyy') - ELSE - least(to_date(valid_from, 'dd/mm/yyyy'), to_date(valid_to, 'dd/mm/yyyy')) + WHEN valid_from IS NULL + AND valid_to IS NULL THEN + trunc(SYSDATE) + WHEN valid_from IS NULL + AND valid_to IS NOT NULL THEN + least(trunc(SYSDATE) + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) + WHEN valid_from IS NOT NULL + AND valid_to IS NULL THEN + TO_DATE(valid_from + ,'dd/mm/yyyy') + ELSE + least(TO_DATE(valid_from + ,'dd/mm/yyyy') + ,TO_DATE(valid_to + ,'dd/mm/yyyy')) END AS valid_from ,CASE WHEN valid_to IS NULL THEN NULL ELSE - to_date(valid_to + TO_DATE(valid_to ,'dd/mm/yyyy') END AS valid_to ,l_enty.code AS enty_code /*,upper(TRIM(enty_code)) AS enty_code */ @@ -1491,13 +1537,13 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,'inch')) AS mesc_code ,upper(TRIM(svcpt_code)) AS svcpt_code ,upper(TRIM(mety_code)) AS mety_code - FROM ext_labour_costs - WHERE upper(TRIM(enty_code)) = l_enty.gen_enq_type) - WHERE selling_price IS NOT NULL) e + FROM ext_labour_costs + WHERE upper(TRIM(enty_code)) = l_enty.gen_enq_type) + WHERE selling_price IS NOT NULL) e ON (e.enty_code = cos.enty_code AND e.valid_from = cos.valid_from AND e.mety_code = cos.mety_code AND cos.cost_type = 'LACO' AND ((e.regi_code = cos.regi_code) OR (e.regi_code IS NULL AND cos.regi_code IS NULL)) AND ((e. mesc_code IS NULL AND cos.mesc_code IS NULL) OR (e.mesc_code = cos.mesc_code)) AND ((e.svcpt_code IS NULL AND cos.svcpt_code IS NULL) OR (e.svcpt_code = cos.svcpt_code))) WHEN MATCHED THEN UPDATE - SET selling_price = e.selling_price + SET selling_price = e.selling_price ,valid_to = e.valid_to WHEN NOT MATCHED THEN INSERT @@ -1523,7 +1569,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,e.svcpt_code ,e.mety_code) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': ' || l_enty.code || ':NETW0' || l_network || ': labour'); @@ -1550,11 +1596,11 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,upper(TRIM(field_4)) AS field_4 ,upper(TRIM(field_5)) AS field_5 ,TRIM(field_6) AS field_6 - FROM ext_caveats) e + FROM ext_caveats) e ON (field_1 = document_position AND field_2 = enty_code AND field_3 = mety_code AND field_4 = svcpt_code AND ((field_5 = sort_order) OR (field_5 IS NULL AND sort_order IS NULL))) WHEN MATCHED THEN UPDATE - SET text = field_6 + SET text = field_6 WHEN NOT MATCHED THEN INSERT (id @@ -1573,7 +1619,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,field_5 ,field_6) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': caveat_texts'); END load_caveats; @@ -1593,78 +1639,78 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS (code ,description) (SELECT code - ,initcap(code) - FROM (SELECT DISTINCT upper(TRIM(field_2)) AS code - FROM ext_postcodes) - WHERE code NOT IN (SELECT code - FROM regions)); + ,INITCAP(code) + FROM (SELECT DISTINCT upper(TRIM(field_2)) AS code + FROM ext_postcodes) + WHERE code NOT IN (SELECT code + FROM regions)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': regions'); DELETE FROM postcodes pd - WHERE (outcode, nvl(incode + WHERE (outcode, nvl(incode ,'#NULL#')) IN (SELECT outcode ,nvl(incode ,'#NULL#') - FROM (SELECT outcode + FROM (SELECT outcode ,incode - FROM postcodes p + FROM postcodes p MINUS - SELECT CASE instr(TRIM(field_1) + SELECT CASE INSTR(TRIM(field_1) ,' ') WHEN 0 THEN upper(TRIM(field_1)) ELSE - upper(substr(field_1 + upper(SUBSTR(field_1 ,1 - ,instr(field_1 + ,INSTR(field_1 ,' ') - 1)) END AS outcode - ,CASE instr(TRIM(field_1) + ,CASE INSTR(TRIM(field_1) ,' ') WHEN 0 THEN NULL ELSE - substr(TRIM(field_1) - ,instr(TRIM(field_1) + SUBSTR(TRIM(field_1) + ,INSTR(TRIM(field_1) ,' ') + 1) END AS incode - FROM ext_postcodes)); + FROM ext_postcodes)); - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': postcodes - delete'); -- -- Postcodes -- MERGE INTO postcodes p - USING (SELECT CASE instr(TRIM(field_1) + USING (SELECT CASE INSTR(TRIM(field_1) ,' ') WHEN 0 THEN upper(TRIM(field_1)) ELSE - upper(substr(TRIM(field_1) + upper(SUBSTR(TRIM(field_1) ,1 - ,instr(TRIM(field_1) + ,INSTR(TRIM(field_1) ,' ') - 1)) END AS outcode - ,CASE instr(TRIM(field_1) + ,CASE INSTR(TRIM(field_1) ,' ') WHEN 0 THEN NULL ELSE - substr(TRIM(field_1) - ,instr(TRIM(field_1) + SUBSTR(TRIM(field_1) + ,INSTR(TRIM(field_1) ,' ') + 1) END AS incode ,upper(TRIM(field_2)) AS regi_code - FROM ext_postcodes) e + FROM ext_postcodes) e ON (e.outcode = p.outcode AND ((e.incode = p.incode) OR (e.incode IS NULL AND p.incode IS NULL))) WHEN MATCHED THEN UPDATE - SET regi_code = regi_code + SET regi_code = regi_code WHEN NOT MATCHED THEN INSERT (id @@ -1677,7 +1723,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,e.incode ,e.regi_code) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': postcodes - merge'); END load_postcodes; @@ -1701,7 +1747,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,upper(TRIM(mesc_code)) AS mesc_code ,upper(TRIM(svcpt_code)) AS svcpt_code ,upper(TRIM(lead_time)) AS days - FROM ext_leadtimes el + FROM ext_leadtimes el ,(SELECT CASE code WHEN 'ADDON' THEN 'ADDON' @@ -1729,12 +1775,12 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS NULL END AS l_enty_code ,code - FROM enquiry_types) enty - WHERE upper(TRIM(enty_code)) = l_enty_code) e + FROM enquiry_types) enty + WHERE upper(TRIM(enty_code)) = l_enty_code) e ON (e.enty_code = leti.enty_code AND e.mety_code = leti.mety_code AND ((e.mesc_code = leti.mesc_code) OR (e.mesc_code IS NULL AND leti.mesc_code IS NULL)) AND ((e.svcpt_code = leti.svcpt_code) OR (e.svcpt_code IS NULL AND leti.svcpt_code IS NULL))) WHEN MATCHED THEN UPDATE - SET days = e.days + SET days = e.days WHEN NOT MATCHED THEN INSERT (id @@ -1751,7 +1797,7 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS ,e.svcpt_code ,e.days) log errors reject LIMIT unlimited; - pl(to_char(SQL%ROWCOUNT + pl(TO_CHAR(SQL%ROWCOUNT ,'FM099G999') || ': leadtimes - merge'); END load_leadtimes; @@ -1765,8 +1811,8 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS pl('Application id:' || g_flow_id); SELECT wwv_flow.get_current_flow_sgid(g_flow_id) - INTO l_sgid - FROM dual; + INTO l_sgid + FROM dual; pl('Security group id:' || l_sgid); @@ -1790,49 +1836,49 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS pl('report_err'); FOR l_rec IN (SELECT * - FROM err$_meters) LOOP + FROM err$_meters) LOOP pl('meters:' || l_rec.ora_err_mesg$ || ':' || l_rec.ora_err_rowid$ || ':' || l_rec.ora_err_optyp$); END LOOP; FOR l_rec IN (SELECT * - FROM err$_bases) LOOP + FROM err$_bases) LOOP pl('bases:' || l_rec.ora_err_mesg$ || ':' || l_rec.ora_err_rowid$ || ':' || l_rec.ora_err_optyp$); END LOOP; FOR l_rec IN (SELECT * - FROM err$_housings) LOOP + FROM err$_housings) LOOP pl('housings:' || l_rec.ora_err_mesg$ || ':' || l_rec.ora_err_rowid$ || ':' || l_rec.ora_err_optyp$); END LOOP; FOR l_rec IN (SELECT * - FROM err$_modules) LOOP + FROM err$_modules) LOOP pl('modules:' || l_rec.ora_err_mesg$ || ':' || l_rec.ora_err_rowid$ || ':' || l_rec.ora_err_optyp$); END LOOP; FOR l_rec IN (SELECT * - FROM err$_postcodes) LOOP + FROM err$_postcodes) LOOP pl('postcodes:' || l_rec.ora_err_mesg$ || ':' || l_rec.ora_err_rowid$ || ':' || l_rec.ora_err_optyp$); END LOOP; FOR l_rec IN (SELECT * - FROM err$_costs) LOOP + FROM err$_costs) LOOP pl('costs:' || l_rec.ora_err_mesg$ || ':' || l_rec.ora_err_rowid$ || ':' || l_rec.ora_err_optyp$); END LOOP; FOR l_rec IN (SELECT * - FROM err$_caveat_texts) LOOP + FROM err$_caveat_texts) LOOP pl('caveats:' || l_rec.ora_err_mesg$ || ':' || l_rec.ora_err_rowid$ || ':' || l_rec.ora_err_optyp$); END LOOP; FOR l_rec IN (SELECT * - FROM err$_lead_times) LOOP + FROM err$_lead_times) LOOP pl('lead_times:' || l_rec.ora_err_mesg$ || ':' || l_rec.ora_err_rowid$ || ':' || l_rec.ora_err_optyp$); END LOOP; diff --git a/Modules/mip_quotation.pck b/Modules/mip_quotation.pck index 5561ffa..85d60df 100644 --- a/Modules/mip_quotation.pck +++ b/Modules/mip_quotation.pck @@ -176,7 +176,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS g_email_plain_body CLOB; g_email_html_body CLOB; - gc_newline CONSTANT CHAR(2) DEFAULT chr(10) || chr(13); + gc_newline CONSTANT CHAR(2) DEFAULT CHR(10) || CHR(13); SUBTYPE t_enqu IS enquiries%ROWTYPE; @@ -233,7 +233,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,id) VALUES (p_enqu_id - ,substr(p_reason + ,SUBSTR(p_reason ,1 ,239) ,p_internal_or_external @@ -332,9 +332,9 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,p_start_date => p_event_date); SELECT enqu_id - INTO l_enqu_id - FROM quotes - WHERE id = p_qute_id; + INTO l_enqu_id + FROM quotes + WHERE id = p_qute_id; email_agent_quote_acceptance(p_enqu_id => l_enqu_id); email_iu_quote_acceptance(p_enqu_id => l_enqu_id); @@ -382,8 +382,8 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,p_event_date IN DATE DEFAULT SYSDATE) IS BEGIN FOR l_rec IN (SELECT id - FROM quotes - WHERE enqu_id = p_enqu_id) LOOP + FROM quotes + WHERE enqu_id = p_enqu_id) LOOP reject_quote(p_qute_id => l_rec.id ,p_prty_id => p_prty_id @@ -416,20 +416,20 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,p_start_date => p_event_date); FOR l_rec IN (SELECT id - FROM quotes - WHERE enqu_id = (SELECT enqu_id - FROM quotes - WHERE id = p_qute_id) - AND id <> p_qute_id) LOOP + FROM quotes + WHERE enqu_id = (SELECT enqu_id + FROM quotes + WHERE id = p_qute_id) + AND id <> p_qute_id) LOOP add_quote_event(p_qute_id => l_rec.id ,p_qust_code => 'SELREJ' ,p_event_date => p_event_date); END LOOP; SELECT enqu_id - INTO l_enqu_id - FROM quotes - WHERE id = p_qute_id; + INTO l_enqu_id + FROM quotes + WHERE id = p_qute_id; email_agent_q_sel(l_enqu_id); @@ -448,9 +448,9 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS BEGIN SELECT enqu_id - INTO l_enqu_id - FROM quotes - WHERE id = p_qute_id; + INTO l_enqu_id + FROM quotes + WHERE id = p_qute_id; EXCEPTION WHEN no_data_found THEN NULL; @@ -460,35 +460,35 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,p_message => 'Unable to find quote ' || p_qute_id); SELECT qust_code - INTO l_qust_code - FROM v_current_quote_status - WHERE qute_id = p_qute_id; + INTO l_qust_code + FROM v_current_quote_status + WHERE qute_id = p_qute_id; IF l_qust_code IN ('SELECTED', 'ACCEPTED') THEN l_quote_deleted := FALSE; p_message := 'Unable to delete quote ' || p_qute_id || - ' as it has a status of ' || initcap(l_qust_code); + ' as it has a status of ' || INITCAP(l_qust_code); ELSE -- -- delete all associations with this quote -- DELETE FROM quote_events - WHERE qute_id = p_qute_id; + WHERE qute_id = p_qute_id; DELETE FROM apex_application_files aaf - WHERE aaf.NAME IN (SELECT uri - FROM documents docu + WHERE aaf.NAME IN (SELECT uri + FROM documents docu ,document_roles doro - WHERE doro.qute_id = p_qute_id - AND doro.docu_id = docu.id - AND docu.docu_type = 'INDO'); + WHERE doro.qute_id = p_qute_id + AND doro.docu_id = docu.id + AND docu.docu_type = 'INDO'); DELETE FROM document_events doev - WHERE doev.docu_id IN + WHERE doev.docu_id IN (SELECT docu_id - FROM document_roles doro - WHERE doro.qute_id = p_qute_id); + FROM document_roles doro + WHERE doro.qute_id = p_qute_id); -- document roles knows which files should be deleted -- through a FK @@ -496,24 +496,24 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS -- 2. Remove the document role -- 3. Remove the associated document SELECT ROWID BULK COLLECT - INTO l_rowid - FROM documents - WHERE id IN (SELECT docu_id - FROM document_roles - WHERE qute_id = p_qute_id); + INTO l_rowid + FROM documents + WHERE id IN (SELECT docu_id + FROM document_roles + WHERE qute_id = p_qute_id); DELETE FROM document_roles doro - WHERE doro.qute_id = p_qute_id; + WHERE doro.qute_id = p_qute_id; FORALL l_idx IN INDICES OF l_rowid DELETE FROM documents - WHERE ROWID = l_rowid(l_idx); + WHERE ROWID = l_rowid(l_idx); DELETE FROM quote_items - WHERE qute_id = p_qute_id; + WHERE qute_id = p_qute_id; DELETE FROM quote_roles - WHERE qute_id = p_qute_id; + WHERE qute_id = p_qute_id; -- -- record that the quote was deleted @@ -527,7 +527,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS -- delete the quote itself -- DELETE FROM quotes - WHERE id = p_qute_id; + WHERE id = p_qute_id; l_quote_deleted := TRUE; END IF; @@ -563,8 +563,8 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,$$PLSQL_LINE); FOR l_quote IN (SELECT id - FROM quotes - WHERE enqu_id = p_enqu_id) LOOP + FROM quotes + WHERE enqu_id = p_enqu_id) LOOP IF NOT delete_quote(p_qute_id => l_quote.id ,p_message => p_message) THEN l_quotes_deleted := FALSE; @@ -583,11 +583,11 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS l_current_date DATE := trunc(SYSDATE); BEGIN FOR cur_quote IN (SELECT v.qute_id - FROM v_current_quote_status v + FROM v_current_quote_status v ,quotes q - WHERE v.qust_code IN ('AV', 'SELECTED') - AND v.qute_id = q.id - AND q.valid_until < l_current_date) LOOP + WHERE v.qust_code IN ('AV', 'SELECTED') + AND v.qute_id = q.id + AND q.valid_until < l_current_date) LOOP lapse_quote(p_qute_id => cur_quote.qute_id ,p_description => 'Quote lapsed automatically by system.'); @@ -600,11 +600,11 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS l_dummy NUMBER; BEGIN SELECT 1 - INTO l_dummy - FROM enquiry_events - WHERE enst_code = 'SUBMITTED' - AND enqu_id = p_enqu_id - AND rownum < 2; + INTO l_dummy + FROM enquiry_events + WHERE enst_code = 'SUBMITTED' + AND enqu_id = p_enqu_id + AND rownum < 2; RETURN FALSE; EXCEPTION WHEN no_data_found THEN @@ -634,8 +634,8 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,p_enqu_id ,trunc(SYSDATE) ,(SELECT VALUE + trunc(SYSDATE) - FROM system_configuration syco - WHERE syco.parameter = 'QUOTE_LAPSE_LIMIT') + FROM system_configuration syco + WHERE syco.parameter = 'QUOTE_LAPSE_LIMIT') ,SYSDATE ,USER) RETURNING id INTO l_qute_id; @@ -686,10 +686,10 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS SELECT qute_type ,enqu_id - INTO l_qute_type + INTO l_qute_type ,l_enqu_id - FROM quotes - WHERE id = p_qute_id; + FROM quotes + WHERE id = p_qute_id; IF l_qute_type = 'MQ' THEN email_agent_mq_available(l_enqu_id); @@ -734,9 +734,9 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS l_value system_configuration.VALUE%TYPE; BEGIN SELECT VALUE - INTO l_value - FROM system_configuration - WHERE parameter = p_parameter; + INTO l_value + FROM system_configuration + WHERE parameter = p_parameter; RETURN l_value; EXCEPTION @@ -789,11 +789,11 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS l_description enquiry_types.description%TYPE; BEGIN SELECT description - INTO l_description - FROM enquiry_types enty + INTO l_description + FROM enquiry_types enty ,enquiries enqu - WHERE enty.code = enqu.enty_code - AND enqu.id = p_enqu_id; + WHERE enty.code = enqu.enty_code + AND enqu.id = p_enqu_id; RETURN l_description; END get_enty_description; @@ -812,14 +812,14 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS IF l_docu_id IS NULL THEN -- find the 'selected' quote document SELECT doro.docu_id - INTO l_docu_id - FROM document_roles doro + INTO l_docu_id + FROM document_roles doro ,quote_events quev ,quotes qute - WHERE qute.enqu_id = p_enqu_id - AND quev.qute_id = qute.id - AND quev.qust_code = 'SELECTED' - AND doro.qute_id = quev.qute_id; + WHERE qute.enqu_id = p_enqu_id + AND quev.qute_id = qute.id + AND quev.qust_code = 'SELECTED' + AND doro.qute_id = quev.qute_id; END IF; pl('l_docu_id=' || l_docu_id @@ -829,13 +829,13 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS SELECT wff.filename ,wff.mime_type ,wff.blob_content - INTO l_doc_details.filename + INTO l_doc_details.filename ,l_doc_details.mime_type ,l_doc_details.content - FROM documents docu + FROM documents docu ,apex_application_files wff - WHERE docu.uri = wff.NAME - AND docu.id = l_docu_id; + WHERE docu.uri = wff.NAME + AND docu.id = l_docu_id; pl('l_doc_details.content.length=' || dbms_lob.getlength(l_doc_details.content) @@ -850,11 +850,11 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS PROCEDURE al(p_in IN VARCHAR2) IS BEGIN dbms_lob.writeappend(g_email_plain_body - ,length(p_in || gc_newline) + ,LENGTH(p_in || gc_newline) ,p_in || gc_newline); dbms_lob.writeappend(g_email_html_body - ,length(p_in || '
') + ,LENGTH(p_in || '
') ,p_in || '
'); END al; @@ -872,7 +872,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS dbms_lob.OPEN(lob_loc => g_email_html_body ,open_mode => dbms_lob.lob_readwrite); dbms_lob.writeappend(g_email_html_body - ,length('') + ,LENGTH('') ,''); al(' '); @@ -888,9 +888,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); BEGIN SELECT * - INTO l_row - FROM quotes - WHERE id = p_qute_id; + INTO l_row + FROM quotes + WHERE id = p_qute_id; RETURN l_row; END get_quote_row; @@ -905,15 +905,15 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); al('Quote summary for Quote Reference Number: ' || p_qute_id); al('This quote is valid from ' || - to_char(l_quote_row.valid_from + TO_CHAR(l_quote_row.valid_from ,'ddth Month YYYY') || ' to ' || - to_char(l_quote_row.valid_until + TO_CHAR(l_quote_row.valid_until ,'ddth Month YYYY')); IF l_quote_row.qute_type = 'AQ' THEN FOR l_sum IN (SELECT * - FROM v_quote_details - WHERE quote_id = p_qute_id) LOOP + FROM v_quote_details + WHERE quote_id = p_qute_id) LOOP IF l_sum.module_code IS NOT NULL THEN al('Module code: ' || l_sum.module_code); @@ -955,7 +955,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); PROCEDURE close_body IS BEGIN dbms_lob.writeappend(g_email_html_body - ,length('') + ,LENGTH('') ,''); END close_body; @@ -1002,17 +1002,17 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); BEGIN pl('produce_enquiry_entry_details' ,$$PLSQL_LINE); - + SELECT enty_code - INTO l_enty_code - FROM enquiries - WHERE id = p_enqu_id; + INTO l_enty_code + FROM enquiries + WHERE id = p_enqu_id; FOR l_rec IN (SELECT dir.field_name ,dir.description - FROM data_item_roles dir - WHERE dir.enty_code = l_enty_code - ORDER BY to_number(dir.display_sequence)) LOOP + FROM data_item_roles dir + WHERE dir.enty_code = l_enty_code + ORDER BY TO_NUMBER(dir.display_sequence)) LOOP al(l_rec.description || ': ' || return_value(p_enqu_id => p_enqu_id @@ -1030,9 +1030,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ' used the following reasoning in reaching this decision:'); FOR l_rec IN (SELECT reason ,internal_or_external - FROM quote_reasoning - WHERE enqu_id = p_enqu_id - ORDER BY id) LOOP + FROM quote_reasoning + WHERE enqu_id = p_enqu_id + ORDER BY id) LOOP al(l_rec.reason); END LOOP; @@ -1071,13 +1071,13 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); SELECT agent_comt_code ,comt.description ,agent_contact_value - INTO l_agent_comt_code + INTO l_agent_comt_code ,l_agent_comt_description ,l_agent_contact_value - FROM enquiries + FROM enquiries ,contact_mechanism_types comt - WHERE enquiries.id = p_enqu_id - AND comt.code = enquiries.agent_comt_code; + WHERE enquiries.id = p_enqu_id + AND comt.code = enquiries.agent_comt_code; EXCEPTION WHEN OTHERS THEN pl('email_to_agent:' || SQLERRM @@ -1093,10 +1093,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_email_recipient := get_automatic_quote_recipient; SELECT first_name ,last_name - INTO l_agent_first_name + INTO l_agent_first_name ,l_agent_last_name - FROM parties - WHERE id = l_agent_prty_id; + FROM parties + WHERE id = l_agent_prty_id; al('The Agent, ' || l_agent_first_name || ' ' || l_agent_last_name || ' has requested that they be contacted via ' || l_agent_comt_description || '(' || l_agent_contact_value || ')'); @@ -1242,15 +1242,16 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ', p_email_reason=' || p_email_reason ,$$PLSQL_LINE); SELECT p.shortcode - INTO l_shortcode - FROM v_latest_rt_code_for_enro v, parties p - WHERE rt_code='ENQ SUPP' - AND v.enqu_id = p_enqu_id - AND p.id = v.prty_id; - SELECT e.install_postcode - INTO l_postcode - FROM enquiries e - WHERE e.id = p_enqu_id; + INTO l_shortcode + FROM v_latest_rt_code_for_enro v + ,parties p + WHERE rt_code = 'ENQ SUPP' + AND v.enqu_id = p_enqu_id + AND p.id = v.prty_id; + SELECT e.install_postcode + INTO l_postcode + FROM enquiries e + WHERE e.id = p_enqu_id; open_body; IF p_email_reason = gc_int_q_acc_notification THEN -- Scenario five: Accepted quote + system data @@ -1261,18 +1262,18 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); al('Enquiry reference number: ' || p_enqu_id); al(' '); al('Please process this enquiry, as the quotation has been accepted.'); - al(' '); + al(' '); SELECT qute_id - INTO l_qute_id - FROM quote_events quev + INTO l_qute_id + FROM quote_events quev ,quotes qute - WHERE qute.enqu_id = p_enqu_id - AND quev.qute_id = qute.id - AND quev.qust_code = 'ACCEPTED'; + WHERE qute.enqu_id = p_enqu_id + AND quev.qute_id = qute.id + AND quev.qust_code = 'ACCEPTED'; --Insert Supplier Shortcode, Enquiry Ref and Network here new in purging update(09) - al('Supplier Shortcode: ' || l_shortcode); + al('Supplier Shortcode: ' || l_shortcode); al('Enquiry Reference: ' || p_enqu_id); - al('Network: ' || mip_regions.get_region_for_postcode(l_postcode)); + al('Network: ' || mip_regions.get_region_for_postcode(l_postcode)); --get all the other fields for the enquiry to display produce_enquiry_entry_details(p_enqu_id); produce_quote_summary(l_qute_id); @@ -1293,16 +1294,16 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); al(' '); SELECT qute_id - INTO l_qute_id - FROM quote_events quev + INTO l_qute_id + FROM quote_events quev ,quotes qute - WHERE qute.enqu_id = p_enqu_id - AND quev.qute_id = qute.id - AND quev.qust_code = 'INP'; + WHERE qute.enqu_id = p_enqu_id + AND quev.qute_id = qute.id + AND quev.qust_code = 'INP'; --Insert Supplier Shortcode, Enquiry Ref and Network here new in purging update(09) - al('Supplier Shortcode: ' || l_shortcode); + al('Supplier Shortcode: ' || l_shortcode); al('Enquiry Reference: ' || p_enqu_id); - al('Network: ' || mip_regions.get_region_for_postcode(l_postcode)); + al('Network: ' || mip_regions.get_region_for_postcode(l_postcode)); produce_enquiry_entry_details(p_enqu_id); produce_reasoning_summary(p_enqu_id); @@ -1393,9 +1394,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ' - processing error occurred'); FOR l_qure IN (SELECT reason - FROM quote_reasoning - WHERE enqu_id = p_enqu_id - ORDER BY id) LOOP + FROM quote_reasoning + WHERE enqu_id = p_enqu_id + ORDER BY id) LOOP al(l_qure.reason); END LOOP; @@ -1473,7 +1474,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); /*pl('validate enqu_id=' || p_rec.id || ', enty_code=' || p_rec.enty_code);*/ DELETE FROM validation_results - WHERE enqu_id = p_rec.id; + WHERE enqu_id = p_rec.id; IF NOT mip_enquiries_helper.check_mandatory(p_rec => p_rec ,p_mandatory_checks => l_mandatory_checks) THEN @@ -1507,10 +1508,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,$$PLSQL_LINE); SELECT error_message - INTO l_error_message - FROM validation_results - WHERE field_name = upper(p_field_name) - AND enqu_id = p_enqu_id; + INTO l_error_message + FROM validation_results + WHERE field_name = upper(p_field_name) + AND enqu_id = p_enqu_id; pl('validation_result:exit:' || l_error_message ,$$PLSQL_LINE); RETURN l_error_message; @@ -1561,13 +1562,13 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); -- get the smallest meter code that will support the given Qmax SELECT code - INTO l_meter_size_code - FROM (SELECT code - FROM meter_size_codes mesc - WHERE qmax >= p_qmax - AND mesc.valid_for_new_meter = 'YES' - ORDER BY qmax) - WHERE rownum < 2; + INTO l_meter_size_code + FROM (SELECT code + FROM meter_size_codes mesc + WHERE qmax >= p_qmax + AND mesc.valid_for_new_meter = 'YES' + ORDER BY qmax) + WHERE rownum < 2; pl('get_u_meter_size:exit:' || l_meter_size_code ,$$PLSQL_LINE); @@ -1586,9 +1587,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_qmax meter_size_codes.qmax%TYPE; BEGIN SELECT qmax - INTO l_qmax - FROM meter_size_codes - WHERE code = p_mesc_code; + INTO l_qmax + FROM meter_size_codes + WHERE code = p_mesc_code; RETURN l_qmax; EXCEPTION WHEN no_data_found THEN @@ -1599,7 +1600,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); FUNCTION get_seq_u_meter_size(p_existing_mesc_code IN meter_size_codes.code%TYPE ,p_n_or_p IN VARCHAR2 DEFAULT 'N') RETURN meter_size_codes.code%TYPE IS - l_next_required BOOLEAN := upper(substr(p_n_or_p + l_next_required BOOLEAN := upper(SUBSTR(p_n_or_p ,1 ,1)) = 'N'; l_prev_mesc_code meter_size_codes.code%TYPE; @@ -1609,10 +1610,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); p_n_or_p); SELECT lag(code) over(ORDER BY qmax) AS prev_mesc_code ,lead(code) over(ORDER BY qmax) AS next_mesc_code - INTO l_prev_mesc_code + INTO l_prev_mesc_code ,l_next_mesc_code - FROM meter_size_codes - WHERE code LIKE 'U%'; + FROM meter_size_codes + WHERE code LIKE 'U%'; IF l_next_required THEN pl('get_seq_u_meter_size:exit:' || l_next_mesc_code @@ -1658,12 +1659,12 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,mesc_code ,mety_code ,prty_id - INTO l_rec_metr_details.code + INTO l_rec_metr_details.code ,l_rec_metr_details.mesc_code ,l_rec_metr_details.mety_code ,l_rec_metr_details.prty_id - FROM meters - WHERE code = p_metr_code; + FROM meters + WHERE code = p_metr_code; pl('get_metr_details:exit:' || p_metr_code); @@ -1710,15 +1711,15 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); END IF; SELECT NULL - INTO l_dummy - FROM (SELECT code AS existing_mesc + INTO l_dummy + FROM (SELECT code AS existing_mesc ,lead(code) over(ORDER BY qmax) AS required_mesc - FROM meter_size_codes - WHERE code LIKE 'U%') - WHERE (existing_mesc = p_existing_meter_size_code AND + FROM meter_size_codes + WHERE code LIKE 'U%') + WHERE (existing_mesc = p_existing_meter_size_code AND required_mesc = p_required_meter_size_code) - OR (existing_mesc = p_required_meter_size_code AND - required_mesc = p_existing_meter_size_code); + OR (existing_mesc = p_required_meter_size_code AND + required_mesc = p_existing_meter_size_code); pl('valid_meter_size_change:exit:TRUE' ,$$PLSQL_LINE); @@ -1752,7 +1753,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_manual_or_automatic_quote := gc_manual_quote; add_quote_reason(p_enqu.id ,'Site Survey is required for OFMAT of an existing ' || - initcap(l_rec_metr_details.mety_code) || + INITCAP(l_rec_metr_details.mety_code) || ' meter.' ,gc_external_reason); END IF; -- ROTARY / TURBINE @@ -1855,10 +1856,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); IF p_enqu.bypass_required IS NOT NULL THEN BEGIN SELECT 1 - INTO l_dummy - FROM bypass_reasons - WHERE description = p_enqu.bypass_required - AND code <> '1'; + INTO l_dummy + FROM bypass_reasons + WHERE description = p_enqu.bypass_required + AND code <> '1'; p_manual_or_automatic_quote := gc_manual_quote; add_quote_reason(p_enqu.id ,'Bypass required.' @@ -1924,7 +1925,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); IF p_enqu.enty_code IN ('OFMAT') AND NOT (p_enqu.existing_mety_code = 'DIAPHRAGM') - AND (substr(nvl(p_enqu.required_mesc_code + AND (SUBSTR(nvl(p_enqu.required_mesc_code ,get_u_meter_size(p_enqu.qmax)) ,1) <> 'U') THEN p_manual_or_automatic_quote := gc_manual_quote; @@ -1976,13 +1977,13 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); SELECT selling_price ,cost_price ,delivery_cost - INTO l_rec_costs.selling_price + INTO l_rec_costs.selling_price ,l_rec_costs.cost_price ,l_rec_costs.delivery_cost - FROM (SELECT selling_price + FROM (SELECT selling_price ,cost_price ,delivery_cost - FROM (SELECT decode(regi_code + FROM (SELECT decode(regi_code ,p_regi_code ,1 ,999) AS accuracy @@ -1991,13 +1992,13 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,cost_price ,delivery_cost ,ROWID - FROM v_hoco cost - WHERE hou_code = p_hou_code - AND SYSDATE BETWEEN cost.effective_from AND + FROM v_hoco cost + WHERE hou_code = p_hou_code + AND SYSDATE BETWEEN cost.effective_from AND cost.effective_to - AND (regi_code = p_regi_code OR regi_code IS NULL) - ORDER BY 1) - WHERE rownum < 2); + AND (regi_code = p_regi_code OR regi_code IS NULL) + ORDER BY 1) + WHERE rownum < 2); RETURN l_rec_costs; EXCEPTION @@ -2015,13 +2016,13 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); SELECT selling_price ,cost_price ,delivery_cost - INTO l_rec_costs.selling_price + INTO l_rec_costs.selling_price ,l_rec_costs.cost_price ,l_rec_costs.delivery_cost - FROM (SELECT selling_price + FROM (SELECT selling_price ,cost_price ,delivery_cost - FROM (SELECT decode(regi_code + FROM (SELECT decode(regi_code ,p_regi_code ,1 ,999) AS accuracy @@ -2030,13 +2031,13 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,cost_price ,delivery_cost ,ROWID - FROM v_baco cost - WHERE bas_code = p_bas_code - AND SYSDATE BETWEEN cost.effective_from AND + FROM v_baco cost + WHERE bas_code = p_bas_code + AND SYSDATE BETWEEN cost.effective_from AND cost.effective_to - AND (regi_code = p_regi_code OR regi_code IS NULL) - ORDER BY 1) - WHERE rownum < 2); + AND (regi_code = p_regi_code OR regi_code IS NULL) + ORDER BY 1) + WHERE rownum < 2); RETURN l_rec_costs; @@ -2046,7 +2047,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); END get_base; FUNCTION get_aico(p_adit_code IN costs.adit_code%TYPE - ,p_regi_code IN regions.code%TYPE) + ,p_regi_code IN regions.code%TYPE + ,p_enty_code IN enquiry_types.code%TYPE + ,p_mety_code IN meter_types.code%TYPE + ,p_mesc_code IN meter_size_codes.code%TYPE) RETURN t_rec_additional_costs IS l_rec_costs t_rec_additional_costs; BEGIN @@ -2057,34 +2061,53 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,cost_price ,delivery_cost ,adit_code - INTO l_rec_costs.lead_time + INTO l_rec_costs.lead_time ,l_rec_costs.selling_price ,l_rec_costs.cost_price ,l_rec_costs.delivery_cost ,l_rec_costs.adit_code - FROM additional_items adit + FROM additional_items adit ,(SELECT selling_price ,cost_price ,delivery_cost ,adit_code - FROM (SELECT decode(regi_code - ,p_regi_code - ,1 - ,999) AS accuracy + FROM (SELECT CASE + WHEN cost.regi_code IS NULL THEN + 0 + ELSE + 100 + END + CASE + WHEN cost.mety_code IS NULL THEN + 0 + ELSE + 10 + END + CASE + WHEN cost.mesc_code IS NULL THEN + 0 + ELSE + 1 + END AS accuracy ,adit_code ,selling_price ,cost_price ,delivery_cost ,ROWID - FROM v_aico cost - WHERE adit_code = p_adit_code - AND SYSDATE BETWEEN cost.effective_from AND + FROM v_aico cost + WHERE adit_code = p_adit_code + AND SYSDATE BETWEEN cost.effective_from AND cost.effective_to - AND (regi_code = p_regi_code OR regi_code IS NULL) - ORDER BY 1) - WHERE rownum < 2) cost - WHERE adit.code = cost.adit_code - AND adit.code = p_adit_code; + AND ((regi_code = p_regi_code) OR + (regi_code IS NULL)) + AND ((cost.enty_code = p_enty_code) OR + (enty_code IS NULL)) + AND ((cost.mety_code = p_mety_code) OR + (mety_code IS NULL)) + AND ((cost.mesc_code = p_mesc_code) OR + (mesc_code IS NULL)) + ORDER BY 1 DESC) + WHERE rownum < 2) cost + WHERE adit.code = cost.adit_code + AND adit.code = p_adit_code; pl('get_aico:exit' ,$$PLSQL_LINE); @@ -2117,11 +2140,11 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,cost_price ,delivery_cost ,svcpt_code - INTO l_rec_costs.selling_price + INTO l_rec_costs.selling_price ,l_rec_costs.cost_price ,l_rec_costs.delivery_cost ,l_rec_costs.svcpt_code - FROM (SELECT decode(regi_code + FROM (SELECT decode(regi_code ,p_regi_code ,0 ,1) * 100 + decode(cost.svcpt_code @@ -2141,17 +2164,17 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,delivery_cost ,cost.ROWID ,svcp.code AS svcp_code - FROM v_laco cost + FROM v_laco cost ,service_pressures svcp - WHERE SYSDATE BETWEEN cost.effective_from AND cost.effective_to - AND (regi_code = p_regi_code OR regi_code IS NULL) - AND cost.svcpt_code(+) = svcp.svcpt_code - AND enty_code = p_enty_code - AND mety_code = p_mety_code - AND svcp.code = p_svcp_code - AND ((cost.mesc_code = p_mesc_code) OR (mesc_code IS NULL)) - ORDER BY 1) - WHERE rownum < 2; + WHERE SYSDATE BETWEEN cost.effective_from AND cost.effective_to + AND (regi_code = p_regi_code OR regi_code IS NULL) + AND cost.svcpt_code(+) = svcp.svcpt_code + AND enty_code = p_enty_code + AND mety_code = p_mety_code + AND svcp.code = p_svcp_code + AND ((cost.mesc_code = p_mesc_code) OR (mesc_code IS NULL)) + ORDER BY 1 DESC) + WHERE rownum < 2; pl('get_laco:exit:' || l_rec_costs.selling_price); @@ -2171,9 +2194,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); BEGIN SELECT svcpt_code - INTO l_svcpt_code - FROM service_pressures - WHERE code = p_svcp_code; + INTO l_svcpt_code + FROM service_pressures + WHERE code = p_svcp_code; EXCEPTION WHEN no_data_found THEN l_svcpt_code := NULL; @@ -2203,22 +2226,22 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,1); SELECT days - INTO l_days - FROM (SELECT enty_code + INTO l_days + FROM (SELECT enty_code ,mety_code ,svcp.code AS svcp_code ,from_qmax ,to_qmax ,days - FROM v_lead_times v + FROM v_lead_times v ,service_pressures svcp - WHERE v.svcpt_code = svcp.svcpt_code(+)) v - WHERE l_qmax > v.from_qmax - AND l_qmax <= v.to_qmax - AND v.enty_code = p_enty_code - AND v.mety_code = p_mety_code - AND ((v.svcp_code = p_svcp_code) OR - (v.svcp_code IS NULL AND p_svcp_code IS NULL)); + WHERE v.svcpt_code = svcp.svcpt_code(+)) v + WHERE l_qmax > v.from_qmax + AND l_qmax <= v.to_qmax + AND v.enty_code = p_enty_code + AND v.mety_code = p_mety_code + AND ((v.svcp_code = p_svcp_code) OR + (v.svcp_code IS NULL AND p_svcp_code IS NULL)); pl('get_lead_time:exit:' || l_days ,$$PLSQL_LINE); @@ -2242,34 +2265,34 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_desc VARCHAR2(400); BEGIN FOR l_rec IN (SELECT description - FROM (SELECT 1 + FROM (SELECT 1 ,'Enquiry Type is ' || description AS description - FROM enquiry_types - WHERE code = p_enty_code + FROM enquiry_types + WHERE code = p_enty_code UNION SELECT 2 ,'Meter Type is ' || description - FROM meter_types - WHERE code = p_mety_code + FROM meter_types + WHERE code = p_mety_code UNION SELECT 3 ,'Service Pressure is ' || svcpt.description - FROM service_pressure_types svcpt + FROM service_pressure_types svcpt ,service_pressures svcp - WHERE svcp.svcpt_code = svcpt.code - AND svcp.code = p_svcp_code + WHERE svcp.svcpt_code = svcpt.code + AND svcp.code = p_svcp_code UNION SELECT 4 ,'Qmax is ' || p_qmax - FROM dual - WHERE p_qmax IS NOT NULL) - ORDER BY 1) LOOP + FROM dual + WHERE p_qmax IS NOT NULL) + ORDER BY 1) LOOP l_desc := l_desc || l_rec.description || ', '; END LOOP; - l_desc := substr(l_desc + l_desc := SUBSTR(l_desc ,1 - ,length(l_desc) - 2) || '.'; + ,LENGTH(l_desc) - 2) || '.'; RETURN l_desc; @@ -2398,7 +2421,12 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,NULL AS lifting_gear_cost_price ,NULL AS lifting_gear_delivery_cost ,NULL AS lifting_gear_lead_time - FROM (SELECT modu.code + ,NULL AS purging_cost_id + ,NULL AS purging_selling_price + ,NULL AS purging_cost_price + ,NULL AS purging_delivery_cost + ,NULL AS purging_lead_time + FROM (SELECT modu.code ,modu.metr_code ,modu.hou_code ,modu.bas_code @@ -2410,31 +2438,31 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,selling_price ,cost_price ,delivery_cost - FROM modules modu + FROM modules modu ,connection_orientations cnor_i ,connection_orientations cnor_o ,(SELECT modu_code ,selling_price ,cost_price ,delivery_cost - FROM (SELECT row_number() over(PARTITION BY modu_code ORDER BY(decode(regi_code, l_regi_code, 1, 999))) AS accuracy + FROM (SELECT row_number() over(PARTITION BY modu_code ORDER BY(decode(regi_code, l_regi_code, 1, 999))) AS accuracy ,modu_code ,selling_price ,cost_price ,delivery_cost ,ROWID - FROM v_moco cost - WHERE SYSDATE BETWEEN + FROM v_moco cost + WHERE SYSDATE BETWEEN cost.effective_from AND cost.effective_to - AND (regi_code = - l_regi_code OR - regi_code IS NULL)) - WHERE accuracy <= 1) cost - WHERE modu.code = cost.modu_code(+) - AND modu.inlet_cnor_code = cnor_i.code - AND modu.outlet_cnor_code = cnor_o.code - AND SYSDATE BETWEEN modu.valid_from AND + AND (regi_code = + l_regi_code OR + regi_code IS NULL)) + WHERE accuracy <= 1) cost + WHERE modu.code = cost.modu_code(+) + AND modu.inlet_cnor_code = cnor_i.code + AND modu.outlet_cnor_code = cnor_o.code + AND SYSDATE BETWEEN modu.valid_from AND nvl(modu.valid_to ,SYSDATE)) modu ,(SELECT metr.code @@ -2443,20 +2471,20 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,metr.qnom ,metr.mety_code ,metr.mesc_code - FROM meters metr - WHERE SYSDATE BETWEEN metr.valid_from AND + FROM meters metr + WHERE SYSDATE BETWEEN metr.valid_from AND nvl(metr.valid_to ,SYSDATE)) metr - WHERE modu.svcp_code = p_enqu.required_svcp_code - AND modu.outlet_pressure = + WHERE modu.svcp_code = p_enqu.required_svcp_code + AND modu.outlet_pressure = p_enqu.required_metering_pressure - AND metr.code = modu.metr_code + AND metr.code = modu.metr_code -- -- either been given a meter size code to match -- or a module qmax value to exceed -- - AND ((metr.mesc_code = l_required_mesc_code) OR - (modu.qmax >= l_required_qmax))) LOOP + AND ((metr.mesc_code = l_required_mesc_code) OR + (modu.qmax >= l_required_qmax))) LOOP l_this_is_automatic_quote := TRUE; add_quote_reason(p_enqu.id ,p_reason => 'Considering module : ' || @@ -2563,7 +2591,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); IF p_enqu.amr_required = 'YES' THEN l_additional_costs := get_aico(p_adit_code => 'AMR' - ,p_regi_code => l_regi_code); + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_rec_module.mety_code + ,p_mesc_code => l_rec_module.mesc_code); l_rec_module.amr_selling_price := l_additional_costs.selling_price; l_rec_module.amr_cost_price := l_additional_costs.cost_price; l_rec_module.amr_delivery_cost := l_additional_costs.delivery_cost; @@ -2583,7 +2614,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); END IF; IF p_enqu.ems_required = 'YES' THEN l_additional_costs := get_aico(p_adit_code => 'EMS' - ,p_regi_code => l_regi_code); + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_rec_module.mety_code + ,p_mesc_code => l_rec_module.mesc_code); l_rec_module.ems_selling_price := l_additional_costs.selling_price; l_rec_module.ems_cost_price := l_additional_costs.cost_price; l_rec_module.ems_delivery_cost := l_additional_costs.delivery_cost; @@ -2601,9 +2635,13 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,p_internal_or_external => gc_internal_reason); END IF; END IF; + IF p_enqu.bypass_required = 'YES' THEN l_additional_costs := get_aico(p_adit_code => 'BYPASS' - ,p_regi_code => l_regi_code); + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_rec_module.mety_code + ,p_mesc_code => l_rec_module.mesc_code); l_rec_module.bypass_selling_price := l_additional_costs.selling_price; l_rec_module.bypass_cost_price := l_additional_costs.cost_price; l_rec_module.bypass_delivery_cost := l_additional_costs.delivery_cost; @@ -2623,12 +2661,46 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); END IF; + -- + -- Purging required on Fixed Costs basis + -- + IF p_enqu.purging_required = 'FC' THEN + l_additional_costs := get_aico(p_adit_code => 'PURGING' + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_rec_module.mety_code + ,p_mesc_code => l_rec_module.mesc_code); + l_rec_module.purging_selling_price := l_additional_costs.selling_price; + l_rec_module.purging_cost_price := l_additional_costs.cost_price; + l_rec_module.purging_delivery_cost := l_additional_costs.delivery_cost; + l_rec_module.purging_lead_time := l_additional_costs.lead_time; + IF l_rec_module.purging_selling_price IS NULL THEN + l_this_is_automatic_quote := FALSE; + add_quote_reason(p_enqu.id + ,p_reason => 'Unable to find selling price for PURGING.' + ,p_internal_or_external => gc_internal_reason); + END IF; + END IF; + + -- + -- Purging required on Time and Materials basis + -- + IF p_enqu.purging_required = 'TM' THEN + l_rec_module.purging_selling_price := NULL; + l_rec_module.purging_cost_price := NULL; + l_rec_module.purging_delivery_cost := NULL; + l_rec_module.purging_lead_time := NULL; + END IF; + /* Lifting gear required UNLESS LP Diaphragm */ IF NOT (l_rec_module.mety_code = 'DIAPHRAGM' AND l_rec_module.laco_svcpt_code = 'LP') THEN l_additional_costs := get_aico(p_adit_code => 'LIFTING GEAR' - ,p_regi_code => l_regi_code); + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_rec_module.mety_code + ,p_mesc_code => l_rec_module.mesc_code); l_rec_module.lifting_gear_selling_price := l_additional_costs.selling_price; l_rec_module.lifting_gear_cost_price := l_additional_costs.cost_price; l_rec_module.lifting_gear_delivery_cost := l_additional_costs.delivery_cost; @@ -2810,6 +2882,27 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,'AQI'); END IF; + IF p_enqu.purging_required IN ('TM', 'FC') THEN + INSERT INTO quote_items + (id + ,qute_id + ,adit_code + ,cost_price + ,selling_price + ,delivery_price + ,lead_time + ,quit_type) + VALUES + (quit_seq.NEXTVAL + ,l_qute_id + ,'PURGING' + ,l_rec_module.purging_cost_price + ,l_rec_module.purging_selling_price + ,l_rec_module.purging_delivery_cost + ,l_rec_module.purging_lead_time + ,'AQI'); + END IF; + IF l_rec_module.lifting_gear_selling_price IS NOT NULL THEN INSERT INTO quote_items @@ -2960,7 +3053,8 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_qute_id quotes.id%TYPE; l_labour_costs t_rec_additional_costs; l_quote_document VARCHAR2(240); - l_additional_costs t_rec_additional_costs; + l_lifting_gear_costs t_rec_additional_costs; + l_purging_costs t_rec_additional_costs; l_required_qmax NUMBER; l_existing_rec_metr_details t_rec_metr_details; BEGIN @@ -3019,7 +3113,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ELSE l_required_qmax := p_enqu.qmax; END IF; - + l_lead_time := get_lead_time(p_enty_code => p_enqu.enty_code ,p_mety_code => l_existing_rec_metr_details.mety_code ,p_svcp_code => p_enqu.required_svcp_code @@ -3035,20 +3129,50 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,p_internal_or_external => gc_internal_reason); END IF; + -- + -- Purging required on Fixed Costs basis + -- + IF p_enqu.purging_required = 'FC' THEN + l_purging_costs := get_aico(p_adit_code => 'PURGING' + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_existing_rec_metr_details.mety_code + ,p_mesc_code => l_existing_rec_metr_details.mesc_code); + IF l_purging_costs.selling_price IS NULL THEN + l_this_is_automatic_quote := FALSE; + add_quote_reason(p_enqu.id + ,p_reason => 'Unable to find selling price for PURGING.' + ,p_internal_or_external => gc_internal_reason); + END IF; + END IF; + + -- + -- Purging required on Time and Materials basis + -- + IF p_enqu.purging_required = 'TM' THEN + l_purging_costs.selling_price := NULL; + l_purging_costs.cost_price := NULL; + l_purging_costs.delivery_cost := NULL; + l_purging_costs.lead_time := NULL; + END IF; + /* Lifting gear required UNLESS LP Diaphragm */ IF NOT (l_existing_rec_metr_details.mety_code = 'DIAPHRAGM' AND l_labour_costs.svcpt_code = 'LP') THEN - l_additional_costs := get_aico(p_adit_code => 'LIFTING GEAR' - ,p_regi_code => l_regi_code); - IF l_additional_costs.selling_price IS NULL THEN + l_lifting_gear_costs := get_aico(p_adit_code => 'LIFTING GEAR' + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_existing_rec_metr_details.mety_code + ,p_mesc_code => l_existing_rec_metr_details.mesc_code); + IF l_lifting_gear_costs.selling_price IS NULL THEN l_this_is_automatic_quote := FALSE; add_quote_reason(p_enqu.id ,p_reason => 'Unable to find selling price for LIFTING GEAR.' ,p_internal_or_external => gc_internal_reason); END IF; - IF l_additional_costs.lead_time IS NULL THEN + IF l_lifting_gear_costs.lead_time IS NULL THEN l_this_is_automatic_quote := FALSE; add_quote_reason(p_enqu.id ,p_reason => 'Unable to find lead time for LIFTING GEAR.' @@ -3093,7 +3217,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,l_lead_time ,'LQI'); - IF l_additional_costs.selling_price IS NOT NULL THEN + IF l_lifting_gear_costs.selling_price IS NOT NULL THEN INSERT INTO quote_items (id ,qute_id @@ -3107,10 +3231,31 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); (quit_seq.NEXTVAL ,l_qute_id ,'LIFTING GEAR' - ,l_additional_costs.cost_price - ,l_additional_costs.selling_price - ,l_additional_costs.delivery_cost - ,l_additional_costs.lead_time + ,l_lifting_gear_costs.cost_price + ,l_lifting_gear_costs.selling_price + ,l_lifting_gear_costs.delivery_cost + ,l_lifting_gear_costs.lead_time + ,'AQI'); + END IF; + + IF p_enqu.purging_required IN ('TM', 'FC') THEN + INSERT INTO quote_items + (id + ,qute_id + ,adit_code + ,cost_price + ,selling_price + ,delivery_price + ,lead_time + ,quit_type) + VALUES + (quit_seq.NEXTVAL + ,l_qute_id + ,'PURGING' + ,l_purging_costs.cost_price + ,l_purging_costs.selling_price + ,l_purging_costs.delivery_cost + ,l_purging_costs.lead_time ,'AQI'); END IF; @@ -3207,16 +3352,19 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,p_rfq_prty_id IN parties.id%TYPE ,p_owner_prty_id IN parties.id%TYPE DEFAULT NULL ,p_manual_or_automatic_quote IN OUT t_manual_or_automatic_quote) IS - l_produced_automatic_quote BOOLEAN; - l_this_is_automatic_quote BOOLEAN; - l_regi_code regions.code%TYPE := mip_regions.get_region_for_postcode(p_enqu.install_postcode); - l_qute_id quotes.id%TYPE; - l_svcpt_code service_pressure_types.code%TYPE; - l_lifting_gear_costs t_rec_additional_costs; - l_amr_costs t_rec_additional_costs; - l_ems_costs t_rec_additional_costs; - l_bypass_costs t_rec_additional_costs; - l_quote_document VARCHAR2(240); + l_produced_automatic_quote BOOLEAN; + l_this_is_automatic_quote BOOLEAN; + l_regi_code regions.code%TYPE := mip_regions.get_region_for_postcode(p_enqu.install_postcode); + l_qute_id quotes.id%TYPE; + l_svcpt_code service_pressure_types.code%TYPE; + l_lifting_gear_costs t_rec_additional_costs; + l_amr_costs t_rec_additional_costs; + l_ems_costs t_rec_additional_costs; + l_bypass_costs t_rec_additional_costs; + l_purging_costs t_rec_additional_costs; + l_quote_document VARCHAR2(240); + l_existing_rec_metr_details t_rec_metr_details; + BEGIN pl('produce_addon_quotes:entry' ,$$PLSQL_LINE); @@ -3237,13 +3385,18 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_this_is_automatic_quote := TRUE; + l_existing_rec_metr_details := get_existing_metr_details(p_enqu); + -- -- check whether we have the required prices -- if we do not, then we may need to produce a manual quote -- IF p_enqu.amr_required = 'YES' THEN l_amr_costs := get_aico(p_adit_code => 'AMR' - ,p_regi_code => l_regi_code); + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_existing_rec_metr_details.mety_code + ,p_mesc_code => l_existing_rec_metr_details.mesc_code); IF l_amr_costs.selling_price IS NULL THEN l_this_is_automatic_quote := FALSE; add_quote_reason(p_enqu.id @@ -3259,7 +3412,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); END IF; IF p_enqu.ems_required = 'YES' THEN l_ems_costs := get_aico(p_adit_code => 'EMS' - ,p_regi_code => l_regi_code); + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_existing_rec_metr_details.mety_code + ,p_mesc_code => l_existing_rec_metr_details.mesc_code); IF l_ems_costs.selling_price IS NULL THEN l_this_is_automatic_quote := FALSE; add_quote_reason(p_enqu.id @@ -3275,7 +3431,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); END IF; IF p_enqu.bypass_required = 'YES' THEN l_bypass_costs := get_aico(p_adit_code => 'BYPASS' - ,p_regi_code => l_regi_code); + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_existing_rec_metr_details.mety_code + ,p_mesc_code => l_existing_rec_metr_details.mesc_code); IF l_bypass_costs.selling_price IS NULL THEN l_this_is_automatic_quote := FALSE; add_quote_reason(p_enqu.id @@ -3290,13 +3449,42 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); END IF; END IF; + -- + -- Purging required on Fixed Costs basis + -- + IF p_enqu.purging_required = 'FC' THEN + l_purging_costs := get_aico(p_adit_code => 'PURGING' + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_existing_rec_metr_details.mety_code + ,p_mesc_code => l_existing_rec_metr_details.mesc_code); + IF l_purging_costs.selling_price IS NULL THEN + l_this_is_automatic_quote := FALSE; + add_quote_reason(p_enqu.id + ,p_reason => 'Unable to find selling price for PURGING.' + ,p_internal_or_external => gc_internal_reason); + END IF; + END IF; + + -- + -- Purging required on Time and Materials basis + -- + IF p_enqu.purging_required = 'TM' THEN + l_purging_costs.selling_price := NULL; + l_purging_costs.cost_price := NULL; + l_purging_costs.delivery_cost := NULL; + l_purging_costs.lead_time := NULL; + END IF; l_svcpt_code := get_svcpt_for_svcp(p_enqu.required_svcp_code); /* Lifting gear required UNLESS LP Diaphragm */ IF NOT (p_enqu.existing_mety_code = 'DIAPHRAGM' AND l_svcpt_code = 'LP') THEN l_lifting_gear_costs := get_aico(p_adit_code => 'LIFTING GEAR' - ,p_regi_code => l_regi_code); + ,p_regi_code => l_regi_code + ,p_enty_code => p_enqu.enty_code + ,p_mety_code => l_existing_rec_metr_details.mety_code + ,p_mesc_code => l_existing_rec_metr_details.mesc_code); IF l_lifting_gear_costs.selling_price IS NULL THEN l_this_is_automatic_quote := FALSE; add_quote_reason(p_enqu.id @@ -3396,6 +3584,27 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,'AQI'); END IF; + IF p_enqu.purging_required IN ('TM', 'FC') THEN + INSERT INTO quote_items + (id + ,qute_id + ,adit_code + ,cost_price + ,selling_price + ,delivery_price + ,lead_time + ,quit_type) + VALUES + (quit_seq.NEXTVAL + ,l_qute_id + ,'PURGING' + ,l_purging_costs.cost_price + ,l_purging_costs.selling_price + ,l_purging_costs.delivery_cost + ,l_purging_costs.lead_time + ,'AQI'); + END IF; + IF l_lifting_gear_costs.selling_price IS NOT NULL THEN INSERT INTO quote_items (id @@ -3518,9 +3727,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); mark_enquiry_submitted(p_enqu_id); SELECT * - INTO l_enqu - FROM enquiries - WHERE id = p_enqu_id; + INTO l_enqu + FROM enquiries + WHERE id = p_enqu_id; IF tripartite_agreement_satisfied(p_enqu_id) THEN @@ -3554,7 +3763,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); WHEN OTHERS THEN pl(SQLERRM ,$$PLSQL_LINE); - RAISE; + cout_err.report_and_stop; END produce_quotes; END mip_quotation; diff --git a/Modules/mip_quotation_document.pck b/Modules/mip_quotation_document.pck index 103c55c..dfe3017 100644 --- a/Modules/mip_quotation_document.pck +++ b/Modules/mip_quotation_document.pck @@ -11,7 +11,7 @@ CREATE OR REPLACE PACKAGE mip_quotation_document IS width NUMBER ,height NUMBER); TYPE cost_line IS RECORD( - cost_description VARCHAR2(80) + cost_description VARCHAR2(160) ,cost_price NUMBER); TYPE address IS VARRAY(7) OF VARCHAR2(160); @@ -230,6 +230,11 @@ END mip_quotation_document; / CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS + TYPE t_rec_font_details IS RECORD( + fontname VARCHAR2(80) + ,fontsize NUMBER + ,fontstyle VARCHAR2(80)); + PROCEDURE pl(p_in IN VARCHAR2 ,p_line IN NUMBER DEFAULT NULL) IS BEGIN @@ -240,6 +245,113 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS $END NULL; END pl; + FUNCTION get_current_font_details RETURN t_rec_font_details IS + l_rec_font_details t_rec_font_details; + BEGIN + l_rec_font_details.fontname := plpdf.getprintfontname; + l_rec_font_details.fontsize := plpdf.getprintfontsize; + l_rec_font_details.fontstyle := plpdf.getprintfontstyle; + END get_current_font_details; + + PROCEDURE print_costs(p_description IN VARCHAR2 + ,p_description_width IN NUMBER DEFAULT 80 + ,p_cost IN NUMBER DEFAULT NULL + ,p_border IN VARCHAR2 DEFAULT '0') IS + l_row_data plpdf_type.t_row_datas; + l_row_width plpdf_type.t_row_widths; + l_row_align plpdf_type.t_row_aligns; + l_row_border plpdf_type.t_row_borders; + l_row_maxline plpdf_type.t_row_maxlines; + l_row_style plpdf_type.t_row_styles; + BEGIN + l_row_data(1) := p_description; + IF p_cost IS NOT NULL THEN + l_row_data(2) := '£'; + l_row_data(3) := TO_CHAR(p_cost + ,'FM999G990D00'); + END IF; + l_row_width(1) := p_description_width; + l_row_width(2) := 12; + l_row_width(3) := 30; + + l_row_align(1) := 'L'; + l_row_align(2) := 'R'; + l_row_align(3) := 'R'; + + l_row_border(1) := p_border; + l_row_border(2) := p_border; + l_row_border(3) := p_border; + + plpdf.row_print2(p_data => l_row_data -- plpdf_type.t_row_datas: Data shown in the cells + ,p_width => l_row_width -- plpdf_type.t_row_widths: Width of the cells + ,p_align => l_row_align -- plpdf_type.t_row_aligns: Alignment of the cells + ,p_border => l_row_border + ,p_style => l_row_style + ,p_maxline => l_row_maxline + ,p_h => 4 --number default 5: Height of the cells + ,p_fill => 0 --number default 0: Fill + --o 0: no fill + --o 1: fill with current fill color + ,p_min_height => 0 --number default 0: Minimal height of row, 0 means not USE this parameter + -- ,p_clipping => 0 --number default 1: Clipping text + --o 0: no clipping + --o 1: clipping + ); + END print_costs; + + PROCEDURE print_works(p_description IN VARCHAR2 + ,p_description_width IN NUMBER DEFAULT 80 + ,p_work IN VARCHAR2 DEFAULT NULL + ,p_border IN VARCHAR2 DEFAULT '0') IS + l_row_data plpdf_type.t_row_datas; + l_row_width plpdf_type.t_row_widths; + l_row_align plpdf_type.t_row_aligns; + l_row_border plpdf_type.t_row_borders; + l_row_maxline plpdf_type.t_row_maxlines; + l_row_style plpdf_type.t_row_styles; + + l_rec_font_details t_rec_font_details; + BEGIN + + l_rec_font_details := get_current_font_details; + + plpdf.setprintfont(p_family => l_rec_font_details.fontname + ,p_style => 'B' + ,p_size => l_rec_font_details.fontsize); + + l_row_data(1) := p_description; + IF p_work IS NOT NULL THEN + l_row_data(2) := p_work; + END IF; + l_row_width(1) := p_description_width; + l_row_width(2) := 0; + + l_row_align(1) := 'L'; + l_row_align(2) := 'L'; + + l_row_border(1) := p_border; + l_row_border(2) := p_border; + l_row_border(3) := p_border; + + plpdf.row_print2(p_data => l_row_data -- plpdf_type.t_row_datas: Data shown in the cells + ,p_width => l_row_width -- plpdf_type.t_row_widths: Width of the cells + ,p_align => l_row_align -- plpdf_type.t_row_aligns: Alignment of the cells + ,p_border => l_row_border + ,p_style => l_row_style + ,p_maxline => l_row_maxline + ,p_h => 4 --number default 5: Height of the cells + ,p_fill => 0 --number default 0: Fill + --o 0: no fill + --o 1: fill with current fill color + ,p_min_height => 0 --number default 0: Minimal height of row, 0 means not USE this parameter + -- ,p_clipping => 0 --number default 1: Clipping text + --o 0: no clipping + --o 1: clipping + ); + plpdf.setprintfont(p_family => l_rec_font_details.fontname + ,p_style => l_rec_font_details.fontstyle + ,p_size => l_rec_font_details.fontsize); + END print_works; /* function get_meter_type_code_desc --recives a meter code and returns the corresponding meter type description @@ -620,13 +732,13 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS BEGIN - SELECT SUM(selling_price + nvl(delivery_price - ,0)) + SELECT SUM(nvl(selling_price + ,0) + nvl(delivery_price + ,0)) INTO l_quote_total_cost FROM quote_items WHERE qute_id = p_quoteid - AND NOT - (quit_type = 'AQI' AND adit_code IN ('LIFTING GEAR', 'PURGING')); + AND NOT (quit_type = 'AQI' AND adit_code IN ('LIFTING GEAR')); RETURN l_quote_total_cost; END get_total_cost; @@ -794,21 +906,28 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS --Get costs l_add_item_row := get_additional_item(quote_item_rec.adit_code); --only show the lifting gear/purging description, not the materials bit - IF quote_item_rec.adit_code = 'LIFTING GEAR' or quote_item_rec.adit_code ='PURGING' THEN - --If AH's build quote items has left the cost as null then the additional item - --must be costed on time and materials (as part of purging changes '09) + IF quote_item_rec.adit_code = 'LIFTING GEAR' THEN IF quote_item_rec.selling_price IS NULL THEN - p_quote_data.quote_costs(l_counter).cost_description := l_add_item_row.description||' (if required)(On Time and Materials Basis)'; + p_quote_data.quote_costs(l_counter).cost_description := l_add_item_row.description || + ' (if required)(On Time and Materials Basis)'; ELSE p_quote_data.quote_costs(l_counter).cost_description := l_add_item_row.description; p_quote_data.quote_costs(l_counter).cost_price := quote_item_rec.selling_price; END IF; - ELSE - IF quote_item_rec.adit_code <> 'AMR' THEN + ELSIF quote_item_rec.adit_code = 'PURGING' THEN + --If AH's build quote items has left the cost as null then the additional item + --must be costed on time and materials (as part of purging changes '09) + IF quote_item_rec.selling_price IS NULL THEN p_quote_data.quote_costs(l_counter).cost_description := l_add_item_row.description || - ' Materials cost'; + ' (On Time and Materials Basis)'; + ELSE + p_quote_data.quote_costs(l_counter).cost_description := l_add_item_row.description; p_quote_data.quote_costs(l_counter).cost_price := quote_item_rec.selling_price; END IF; + ELSIF quote_item_rec.adit_code <> 'AMR' THEN + p_quote_data.quote_costs(l_counter).cost_description := l_add_item_row.description || + ' Materials cost'; + p_quote_data.quote_costs(l_counter).cost_price := quote_item_rec.selling_price; END IF; IF NOT (quote_item_rec.delivery_price IS NULL) THEN l_counter := l_counter + 1; @@ -1003,30 +1122,35 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS --The caveats CURSOR c_get_caveats(cp_enty_code VARCHAR2, cp_mety_code VARCHAR2, cp_svcpt_code VARCHAR2, cp_quoteid NUMBER) IS SELECT t.* - FROM caveat_texts t, quote_items qi + FROM caveat_texts t + ,quote_items qi WHERE t.enty_code = cp_enty_code AND t.mety_code = cp_mety_code AND t.svcpt_code = cp_svcpt_code AND qi.qute_id = cp_quoteid - and qi.adit_code is null - and t.adit_code is null - union + AND qi.adit_code IS NULL + AND t.adit_code IS NULL + UNION SELECT t.* - FROM caveat_texts t, quote_items qi + FROM caveat_texts t + ,quote_items qi WHERE t.enty_code = cp_enty_code AND t.mety_code = cp_mety_code AND t.svcpt_code = cp_svcpt_code AND qi.qute_id = cp_quoteid - and qi.adit_code is not null - and t.adit_code is not null + AND qi.adit_code IS NOT NULL + AND t.adit_code IS NOT NULL AND t.adit_code = qi.adit_code - AND REGEXP_LIKE(DECODE(qi.selling_price, NULL, 'NULL', qi.selling_price),t.condition) + AND regexp_like(decode(qi.selling_price + ,NULL + ,'NULL' + ,qi.selling_price) + ,t.condition) ORDER BY 1 ,2 ,3 ,4 - ,5 -; + ,5; --Agent Name l_agent_first_name VARCHAR2(80); l_agent_last_name VARCHAR2(80); @@ -1142,11 +1266,11 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS --description of works caveat point l_quote_data.caveat_cont_sum_qa(l_csqa_counter) := rec.text; l_csqa_counter := l_csqa_counter + 1; - END CASE; - --need to add in the condition to determine if the additional item should be - --displayed or not here(ish) - - END LOOP; + END CASE; + --need to add in the condition to determine if the additional item should be + --displayed or not here(ish) + + END LOOP; --phew, lets return all that lovely data we captured then... RETURN l_quote_data; END get_detailed_quote_data; @@ -1460,6 +1584,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS plpdf.printtext(p_indent ,p_vertical_offset + 48 ,'Full Description of Works to be carried out by National Grid Metering:'); + plpdf.setprintfont(p_font ,'B' ,10); --set bold @@ -1476,6 +1601,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS END IF; l_works_counter := p_quote_data.quote_works.NEXT(l_works_counter); END LOOP; + -- DESC_WORK caveat here IF p_quote_data.caveat_desc_works IS NOT NULL THEN print_caveats(p_quote_data.caveat_desc_works @@ -1490,22 +1616,24 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS plpdf.setprintfont(p_font ,'B' ,10); --set bold + plpdf.printtext(140 ,p_vertical_offset + 106 ,p_quote_data.lead_time || ' working days'); plpdf.setprintfont(p_font ,NULL ,10); --unset bold - plpdf.printtext(p_indent - ,p_vertical_offset + 114 - ,'Contract sum (excluding V.A.T): '); - plpdf.setprintfont(p_font - ,'B' - ,10); --set bold - plpdf.printtext(85 - ,p_vertical_offset + 114 - ,'#' || TO_CHAR(p_quote_data.total_cost - ,'FM999999D90')); + + /* + plpdf.printtext(p_indent + ,p_vertical_offset + 114 + ,'Contract sum (excluding V.A.T): '); + plpdf.printtext(85 + ,p_vertical_offset + 114 + ,print_cost_aligned(p_quote_data.total_cost)); + -- ,'£' || TO_CHAR(p_quote_data.total_cost + -- ,'FM999999D90')); + */ l_ybefore := plpdf.getcurrenty; -- CONT_SUM caveat here @@ -1520,13 +1648,25 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS plpdf.setprintfont(p_font ,NULL ,10); --unset bold - plpdf.printtext(p_indent - ,plpdf.getcurrenty + 4 - ,'Analysis of Costs (all costs exclude V.A.T)'); + plpdf.setcurrenty(p_vertical_offset + 114); + print_costs(p_description => 'Contract sum (excluding V.A.T):' + ,p_cost => p_quote_data.total_cost); + + plpdf.linebreak(20); -- line break, height is 20 + print_costs(p_description => 'Analysis of Costs (all costs exclude V.A.T)'); + + /* plpdf.printtext(p_indent + ,plpdf.getcurrenty + 4 + ,'Analysis of Costs (all costs exclude V.A.T)'); + */ plpdf.setprintfont(p_font ,'B' ,10); --set bold + plpdf.linebreak(20); -- line break, height is 20 + + --plpdf.setcurrenty( l_vertical_offset_for_costs + 4); + /* l_cost_line_counter := 1; WHILE p_quote_data.quote_costs(l_cost_line_counter) .cost_description IS NOT NULL LOOP @@ -1535,27 +1675,58 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS l_cost_line_counter * 4 , p_quote_data.quote_costs(l_cost_line_counter) .cost_description); - plpdf.printtext(120 - ,l_vertical_offset_for_costs + - l_cost_line_counter * 4 - ,'#' || TO_CHAR(p_quote_data.quote_costs(l_cost_line_counter) - .cost_price - ,'FM999999D90')); + -- some items do not show a cost value + IF p_quote_data.quote_costs(l_cost_line_counter) + .cost_price IS NOT NULL THEN + plpdf.printtext(120 + ,l_vertical_offset_for_costs + + l_cost_line_counter * 4 + ,print_cost_aligned(p_quote_data.quote_costs(l_cost_line_counter) + .cost_price)); + -- '£' || TO_CHAR(p_quote_data.quote_costs(l_cost_line_counter) + -- .cost_price + -- ,'FM999,999D90')); + plpdf.setprintfont(p_font + ,'B' + ,10); + END IF; l_cost_line_counter := l_cost_line_counter + 1; END LOOP; - l_cost_totals_offset := l_vertical_offset_for_costs + - l_cost_line_counter * 4; - plpdf.drawline(p_indent - ,l_cost_totals_offset + 2 - ,185 - ,l_cost_totals_offset + 2); + */ + + l_cost_line_counter := 1; + WHILE p_quote_data.quote_costs(l_cost_line_counter) + .cost_description IS NOT NULL LOOP + + print_costs(p_description => p_quote_data.quote_costs(l_cost_line_counter) + .cost_description + ,p_cost => p_quote_data.quote_costs(l_cost_line_counter) + .cost_price); + + l_cost_line_counter := l_cost_line_counter + 1; + + END LOOP; + + /* l_cost_totals_offset := l_vertical_offset_for_costs + + l_cost_line_counter * 4; + plpdf.drawline(p_indent + ,l_cost_totals_offset + 2 + ,185 + ,l_cost_totals_offset + 2); + */ + print_costs(p_description => 'Total costs:' + ,p_cost => p_quote_data.total_cost + ,p_border => 'T'); + /* plpdf.printtext(p_indent ,l_cost_totals_offset + 6 ,'Total costs:'); plpdf.printtext(120 ,l_cost_totals_offset + 6 - ,'#' || TO_CHAR(p_quote_data.total_cost - ,'FM999999D90')); + ,print_cost_aligned(p_quote_data.total_cost)); + -- ,'£' || TO_CHAR(p_quote_data.total_cost + -- ,'FM999999D90')); + */ -- CONT_SUM caveat here IF p_quote_data.caveat_cont_sum IS NOT NULL THEN print_one_line_caveats(p_quote_data.caveat_cont_sum @@ -1655,21 +1826,30 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS plpdf.setprintfont(p_font ,NULL ,10); --unset bold - plpdf.printtext(p_indent - ,p_vertical_offset + 230 - ,'Liquidated Damages (sum per day)(excluding V.A.T):'); - plpdf.printtext(130 - ,p_vertical_offset + 230 - ,'#' || TO_CHAR(p_quote_data.liquid_damage_day - ,'FM999999D90')); - plpdf.printtext(p_indent - ,p_vertical_offset + 238 - ,'Liquidated Damages (monetary cap)(excluding V.A.T):'); - plpdf.printtext(130 - ,p_vertical_offset + 238 - ,'#' || TO_CHAR(p_quote_data.liquid_damage_cap - ,'FM999999D90')); - + plpdf.linebreak; + print_costs(p_description => 'Liquidated Damages (sum per day)(excluding V.A.T):' + ,p_description_width => 100 + ,p_cost => p_quote_data.liquid_damage_day); + print_costs(p_description => 'Liquidated Damages (monetary cap)(excluding V.A.T):' + ,p_description_width => 100 + ,p_cost => p_quote_data.liquid_damage_cap); + /* plpdf.printtext(p_indent + ,p_vertical_offset + 230 + ,'Liquidated Damages (sum per day)(excluding V.A.T):'); + plpdf.printtext(130 + ,p_vertical_offset + 230 + ,print_cost_aligned(p_quote_data.liquid_damage_day)); + -- ,'£' || TO_CHAR(p_quote_data.liquid_damage_day + -- ,'FM999999D90')); + plpdf.printtext(p_indent + ,p_vertical_offset + 238 + ,'Liquidated Damages (monetary cap)(excluding V.A.T):'); + plpdf.printtext(130 + ,p_vertical_offset + 238 + ,print_cost_aligned(p_quote_data.liquid_damage_cap)); + -- ,'£' || TO_CHAR(p_quote_data.liquid_damage_cap + -- ,'FM999999D90')); + */ END build_caveats_page; /* PROCEDURE build_drawings_page @@ -2754,7 +2934,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS ,10); --set bold plpdf.printtext(85 ,p_vertical_offset + 62 - ,'#' || TO_CHAR(p_quote_data.total_cost + ,'£' || TO_CHAR(p_quote_data.total_cost ,'FM999999D90')); plpdf.setcurrenty(66); l_ybefore := plpdf.getcurrenty; diff --git a/Schema/V_AICO.vw b/Schema/V_AICO.vw index f060ece..f170478 100644 --- a/Schema/V_AICO.vw +++ b/Schema/V_AICO.vw @@ -5,21 +5,27 @@ SELECT id ,cost_price ,delivery_cost ,regi_code + ,enty_code + ,mety_code + ,mesc_code ,valid_from AS effective_from ,least(nvl(valid_to - ,to_date('2099' + ,TO_DATE('2099' ,'yyyy')) ,nvl(next_valid_from - ,to_date('2099' + ,TO_DATE('2099' ,'yyyy'))) AS effective_to - FROM (SELECT id +FROM (SELECT id ,adit_code ,selling_price ,cost_price ,delivery_cost ,regi_code + ,enty_code + ,mety_code + ,mesc_code ,valid_from ,valid_to - ,lead(valid_from) over(PARTITION BY cost.adit_code, regi_code ORDER BY valid_from) AS next_valid_from - FROM costs cost - WHERE cost_type = 'AICO'); + ,lead(valid_from) over(PARTITION BY adit_code, regi_code, enty_code, mety_code, mesc_code ORDER BY valid_from) AS next_valid_from + FROM costs cost + WHERE cost_type = 'AICO'); diff --git a/Schema/V_QUOTE_DETAILS.vw b/Schema/V_QUOTE_DETAILS.vw index 208d31f..9c51ef9 100644 --- a/Schema/V_QUOTE_DETAILS.vw +++ b/Schema/V_QUOTE_DETAILS.vw @@ -39,7 +39,7 @@ SELECT enquiry_id ,quotes q WHERE t.qute_id = q.id AND NOT (quit_type = 'AQI' AND - adit_code IN ('LIFTING GEAR', 'PURGING')) + adit_code IN ('LIFTING GEAR')) ORDER BY enqu_id ,quote_id ,t.id) all_quote_items @@ -58,5 +58,5 @@ COMMENT ON COLUMN v_quote_details.qmax IS 'The meter module''s Q max.'; COMMENT ON COLUMN v_quote_details.qmin IS 'The meter module''s Q min.'; COMMENT ON COLUMN v_quote_details.inlet_orientation IS 'The orientation of the meter inlet.'; COMMENT ON COLUMN v_quote_details.outlet_orientation IS 'The orientatino of the meter outlet.'; -COMMENT ON COLUMN v_quote_details.total_cost IS 'The total cost of the quote. This figure excludes any lifting gear or purging.'; +COMMENT ON COLUMN v_quote_details.total_cost IS 'The total cost of the quote. This figure excludes any lifting gear.'; / diff --git a/Schema/ext_cost.pdc b/Schema/ext_cost.pdc index 58fa2fd..82f5678 100644 --- a/Schema/ext_cost.pdc +++ b/Schema/ext_cost.pdc @@ -64,7 +64,10 @@ create table ext_material_costs modu_code varchar2(240), hou_code varchar2(240), bas_code varchar2(240), - adit_code varchar2(240) + adit_code varchar2(240), + mety_code varchar2(240), + mesc_code varchar2(240), + enty_code varchar2(240) ) ORGANIZATION EXTERNAL ( type oracle_loader @@ -85,7 +88,10 @@ access parameters modu_code, hou_code, bas_code, - adit_code + adit_code, + mety_code, + mesc_code, + enty_code ) ) location ('MATERIAL_COSTS.csv')