replicate-steps.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. # CONFIG
  3. if (empty($USER)) {
  4. $BA = "LOAN"; ## -- leave $BA as empty string to copy all BA. Otherwise enter 1 BA (no need to quote BA)
  5. $STAGES = ""; ## $STAGES = "STGCAT1,STGCAT2" -- leave $STAGES as empty string to run all stages. No need to quote stgcats.
  6. $HOST='192.168.0.2';
  7. $USER='JCOLLECT_BKRM';
  8. $PWD='natsoft';
  9. $DBASE='RAPTOR';
  10. }
  11. # =================================== INCLUDES
  12. include_once('../adodb.inc.php');
  13. include_once('adodb-replicate.inc.php');
  14. # ==================================== CONNECTION
  15. $DB = ADONewConnection('oci8');
  16. $ok = $DB->Connect($HOST,$USER,$PWD,$DBASE);
  17. if (!$ok) return;
  18. #$DB->debug=1;
  19. $bkup = 'tmp'.date('ymd_His');
  20. if ($BA) {
  21. $QTY_BA = " and qu_bacode='$BA'";
  22. if (1) $STP_BA = " and s_stagecat in (select stg_stagecat from kbstage where stg_bacode='$BA')"; # OLDER KBSTEP
  23. else $STP_BA = " and s_bacode='$BA'"; # LATEST KBSTEP format
  24. $STG_BA = " and stg_bacode='$BA'";
  25. } else {
  26. $QTY_BA = "";
  27. $STP_BA = "";
  28. $STG_BA = "";
  29. }
  30. if ($STAGES) {
  31. $STAGES = explode(',',$STAGES);
  32. $STAGES = "'".implode("','",$STAGES)."'";
  33. $QTY_STG = " and qu_stagecat in ($STAGES)";
  34. $STP_STG = " and s_stagecat in ($STAGES)";
  35. $STG_STG = " and stg_stagecat in ($STAGES)";
  36. } else {
  37. $QTY_STG = "";
  38. $STP_STG = "";
  39. $STG_STG = "";
  40. }
  41. echo "<pre>
  42. /******************************************************************************
  43. <font color=green>
  44. Migrate stages, steps and qtypes for the following
  45. business area: $BA
  46. and stages: $STAGES
  47. WARNING: DO NOT 'Ignore All Errors'.
  48. If any error occurs, make sure you stop and check the reason and fix it.
  49. Otherwise you could corrupt everything!!!
  50. Connected to $USER@$DBASE $HOST;
  51. </font>
  52. *******************************************************************************/
  53. -- BACKUP
  54. create table kbstage_$bkup as select * from kbstage;
  55. create table kbstep_$bkup as select * from kbstep;
  56. create table kbqtype_$bkup as select * from kbqtype;
  57. -- IF CODE FAILS, REMEMBER TO RENABLE ALL TRIGGERS and following CONSTRAINT
  58. ALTER TABLE kbstage DISABLE all triggers;
  59. ALTER TABLE kbstep DISABLE all triggers;
  60. ALTER TABLE kbqtype DISABLE all triggers;
  61. ALTER TABLE jqueue DISABLE CONSTRAINT QUEUE_MUST_HAVE_TYPE;
  62. -- NOW DELETE OLD STEPS/STAGES/QUEUES
  63. delete from kbqtype where qu_mode in ('STAGE','STEP') $QTY_BA $QTY_STG;
  64. delete from kbstep where (1=1) $STP_BA$STP_STG;
  65. delete from kbstage where (1=1)$STG_BA$STG_STG;
  66. SET DEFINE OFF; -- disable variable handling by sqlplus
  67. /
  68. /* Assume kbstrategy and business areas are compatible for steps and stages to be copied */
  69. </pre>
  70. ";
  71. $rep = new ADODB_Replicate($DB,$DB);
  72. $rep->execute = false;
  73. $rep->deleteFirst = false;
  74. // src table name, dst table name, primary key, where condition
  75. $rep->ReplicateData('KBSTAGE', 'KBSTAGE', array(), " where (1=1)$STG_BA$STG_STG");
  76. $rep->ReplicateData('KBSTEP', 'KBSTEP', array(), " where (1=1)$STP_BA$STP_STG");
  77. $rep->ReplicateData('KBQTYPE','KBQTYPE',array()," where qu_mode in ('STAGE','STEP')$QTY_BA$QTY_STG");
  78. echo "
  79. -- Check for QUEUES not in KBQTYPE and FIX by copying from kbqtype_$bkup
  80. begin
  81. for rec in (select distinct q_type from jqueue where q_type not in (select qu_code from kbqtype)) loop
  82. insert into kbqtype select * from kbqtype_$bkup where qu_code = rec.q_type;
  83. update kbqtype set qu_name=substr('MISSING.'||qu_name,1,64) where qu_code=rec.q_type;
  84. end loop;
  85. end;
  86. /
  87. commit;
  88. ALTER TABLE kbstage ENABLE all triggers;
  89. ALTER TABLE kbstep ENABLE all triggers;
  90. ALTER TABLE kbqtype ENABLE all triggers;
  91. ALTER TABLE jqueue ENABLE CONSTRAINT QUEUE_MUST_HAVE_TYPE;
  92. /*
  93. -- REMEMBER TO COMMIT
  94. commit;
  95. begin Juris.UpdateQCounts; end;
  96. -- To check for bad queues after conversion, run this
  97. select * from kbqtype where qu_name like 'MISSING%'
  98. */
  99. /
  100. ";