Advertisement
Guest User

Untitled

a guest
Nov 7th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 15.20 KB | None | 0 0
  1. #!/home/antrks/perl5/perlbrew/perls/perl-5.20.3/bin/perl -w
  2. # encoding: utf-8 (# coding: utf-8)
  3.  
  4. use warnings;
  5. use strict;
  6.  
  7. use English;
  8. use 5.014;
  9.  
  10. use DBI;
  11. use Data::Dumper;
  12. use utf8;
  13. use Encode;
  14. use Carp;
  15. use DBD::Oracle qw(SQLCS_NCHAR :ora_types);
  16. use Getopt::Long qw(GetOptions);
  17.  
  18. binmode STDOUT, ':utf8';
  19. $ENV{NLS_LANG}  = 'AMERICAN_RUSSIA.AL32UTF8';
  20. $ENV{NLS_NCHAR} = 'AL32UTF8';
  21.  
  22. my $oracle_dbh = DBI->connect(
  23.     'dbi:Oracle:host=x.x.x.x;sid=hydra3;port=1521',
  24.     'AIS_NET/ais_net',
  25.     '',
  26.     {   RaiseError          => 1,
  27.         PrintError          => 1,
  28.         ShowErrorStatement  => 0,
  29.         AutoCommit          => 0,
  30.         AutoInactiveDestroy => 1
  31.     }
  32. ) or croak "Can't connect to oracle: $DBI::errstr\n";
  33. $oracle_dbh->{ora_ph_csform} = SQLCS_NCHAR;
  34.  
  35. $oracle_dbh->do(
  36.     qq{
  37.     BEGIN
  38.     MAIN.INIT(
  39.         vch_VC_IP        => 'x.x.x.x',
  40.         vch_VC_USER      => 'migrator',
  41.         vch_VC_PASS      => 'a',
  42.         vch_VC_APP_CODE  => 'NETSERV_ARM_ISP',
  43.         vch_VC_CLN_APPID => 'import_pc_internet.pl');
  44.         MAIN.SET_ACTIVE_FIRM(
  45.         num_N_FIRM_ID => 100);
  46.     END;
  47. }
  48. ) or croak;
  49.  
  50. my $mysql_dbh  = DBI->connect( "DBI:mysql:database=traffstat:host=xxx", "xxx", "xxx" ) or die $DBI::errstr;
  51. my $mysql2_dbh = DBI->connect( "DBI:mysql:database=bill:host=xxx", "xxx", "xxx" ) or die $DBI::errstr;
  52.  
  53. $mysql_dbh->{'mysql_enable_utf8'} = 1;
  54. $mysql_dbh->do("SET NAMES utf8");
  55.  
  56. my $get_users_from_hd = $oracle_dbh->prepare(qq{SELECT N_DOC_ID,VC_REM  FROM SD_V_DOCUMENTS WHERE VC_REM LIKE 'client_contract.client_contract_id%'}) or die $oracle_dbh->errstr;
  57. my $get_buh_id = $mysql2_dbh->prepare(qq{SELECT buh_id FROM client_contract WHERE client_contract_id = ?})  or die $mysql2_dbh->errstr;
  58. my $get_tarif_info = $mysql_dbh->prepare(qq{SELECT tarifs.id, tarifs.name, tarifs.monthly as price, ceil(tarifs.speed/1000) as volume, ceil(tarifs.limitspeed/1000) as limitvolume, tarifs.daylimit
  59. FROM tarifs,firms
  60. WHERE firms.buh_id=? and tarifs.id=firms.tarif
  61. ORDER BY tarifs.id}) or die $mysql_dbh->errstr;
  62. $get_users_from_hd->execute() or die $DBI::errstr;
  63. while ( my $hd_data = $get_users_from_hd->fetchrow_hashref() ) {
  64.     if ($hd_data->{VC_REM} =~ /(\d+)/) {
  65.         my $client_contract_id = $1;
  66.         $get_buh_id->execute($client_contract_id);
  67.         my $buh_id = $get_buh_id->fetchrow_hashref();
  68.         $get_tarif_info->execute($buh_id->{buh_id});
  69.         my $ref = $get_tarif_info->fetchrow_hashref();
  70.         if ($ref->{id}) {
  71.             $ref->{title} = 'Импортированный ПЦ №' . $ref->{id};
  72.             my $sql;
  73.             eval {
  74.             #1. Формирование документа и родительской строки
  75.             my $q_step1 = $oracle_dbh->prepare(qq{
  76.                 DECLARE
  77.                 num_N_DOC_ID                        SD_DOCUMENTS.N_DOC_ID%TYPE:=NULL;
  78.                 num_N_GOOD_ID                       SD_PRICE_ORDERS_C.N_GOOD_ID%TYPE:=NULL;
  79.                 num_N_LINE_NO           NUMBER;
  80.                 num_N_PRICE_ORDER_LINE_ID       SD_PRICE_ORDERS_C.N_PRICE_LINE_ID%TYPE:=NULL;
  81.                 BEGIN
  82.                 BEGIN
  83.                     SELECT N_Doc_Id
  84.                     INTO num_N_DOC_ID
  85.                     FROM SD_DOCUMENTS
  86.                     WHERE (N_Doc_State_ID = SYS_CONTEXT('CONST', 'DOC_STATE_Actual') OR N_Doc_State_ID = SYS_CONTEXT('CONST', 'DOC_STATE_Draft'))
  87.                     AND VC_DOC_NO= :p_title_1;
  88.                     EXCEPTION WHEN no_data_found THEN
  89.                     num_N_DOC_ID := NULL;
  90.                     END;
  91.                 SD_PRICE_ORDERS_PKG.SD_PRICE_ORDERS_T_PUT(
  92.                 num_N_DOC_ID => num_N_DOC_ID,
  93.                 num_N_DOC_TYPE_ID => SS_CONSTANTS_PKG_S.DOC_TYPE_PriceOrder,
  94.                 num_N_PARENT_DOC_ID => :p_n_doc_id,
  95.                 dt_D_DOC => TO_DATE('2011-01-19','YYYY-MM-DD'),
  96.                 dt_D_TIME => TO_DATE('2011-01-19','YYYY-MM-DD'),
  97.                 dt_D_BEGIN => TO_DATE('2011-01-19','YYYY-MM-DD'),
  98.                 num_N_TAX_RATE_ID => SS_CONSTANTS_PKG_S.ANUM_DOC_String_Const,
  99.                 num_N_CURRENCY_ID => SS_CONSTANTS_PKG_S.CURR_Ruble,
  100.                 num_N_SUM_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Math2,
  101.                 num_N_CALC_DESIGN_PROC_ID => SS_CONSTANTS_PKG_S.CALC_PROC_PriceWithTAX,
  102.                 num_N_QUANT_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Ceil2,
  103.                 num_N_DEFER_TYPE_ID => SS_CONSTANTS_PKG_S.DEFER_TYPE_WO_Defer,
  104.                 num_N_SCHED_DEFER_TYPE_ID => SS_CONSTANTS_PKG_S.SCHED_DEFER_TYPE_From_Begin,
  105.                 num_N_WORKFLOW_ID => SS_CONSTANTS_PKG_S.WFLOW_PriceOrder,
  106.                 num_N_SCHED_DEFER_PAY_DAYS => 7,
  107.                 vch_VC_DOC_NO => :p_title_2,
  108.                 vch_VC_REM => :p_name,
  109.                 ch_C_FL_PURCHASING_PRICE => 'Y',
  110.                 num_N_FIRM_ID => 100
  111.                 );
  112.                 COMMIT;
  113.                 SELECT N_Doc_Id
  114.                 INTO num_N_DOC_ID
  115.                 FROM SD_DOCUMENTS
  116.                 WHERE (N_Doc_State_ID = SYS_CONTEXT('CONST', 'DOC_STATE_Actual') OR N_Doc_State_ID = SYS_CONTEXT('CONST', 'DOC_STATE_Draft'))
  117.                 AND VC_DOC_NO= :p_title_3;
  118.  
  119.                 SELECT N_Good_Id
  120.                 INTO num_N_GOOD_ID
  121.                 FROM Sr_Goods
  122.                 WHERE C_Active='Y' AND VC_REM = 'tarifs.id ' || :p_tarif_id;
  123.  
  124.                 BEGIN
  125.                     SELECT min(N_Price_Line_Id)
  126.                     INTO num_N_PRICE_ORDER_LINE_ID
  127.                     FROM Sd_Price_Orders_C
  128.                     WHERE N_GOOD_ID = num_N_GOOD_ID;
  129.                 EXCEPTION WHEN no_data_found THEN
  130.                     num_N_PRICE_ORDER_LINE_ID := NULL;
  131.                 END;
  132.  
  133.                 -- родитель
  134.                 num_N_LINE_NO := 1000000;
  135.                 SD_PRICE_ORDERS_PKG.SD_PRICE_ORDERS_C_PUT (
  136.                     num_N_PRICE_ORDER_LINE_ID => num_N_PRICE_ORDER_LINE_ID,
  137.                     num_N_PRICE_ORDER_DOC_ID => num_N_DOC_ID,
  138.                     num_N_GOOD_ID => num_N_GOOD_ID,
  139.                     num_N_TAX_RATE_ID => SS_CONSTANTS_PKG_S.ANUM_DOC_String_Const,
  140.                     num_N_CURRENCY_ID => SS_CONSTANTS_PKG_S.CURR_Ruble,
  141.                     num_N_PRICE => :p_price,
  142.                     num_N_SUM_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Math2,
  143.                     num_N_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_Unknown,
  144.                     num_N_RATING_UNIT_ID => '',
  145.                     num_N_QUANT_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Ceil2,
  146.                     num_N_LINE_NO   => num_N_LINE_NO,
  147.                     num_N_PRICE_LINE_TYPE_ID => SS_CONSTANTS_PKG_S.PRC_LINE_TYPE_Base
  148.                 );
  149.  
  150.                 END;
  151.             });
  152.  
  153.             $q_step1->bind_param(":p_title_1",$ref->{title});
  154.             $q_step1->bind_param(":p_n_doc_id",$hd_data->{N_DOC_ID});
  155.             $q_step1->bind_param(":p_title_2",$ref->{title});
  156.             $q_step1->bind_param(":p_name",$ref->{name});
  157.             $q_step1->bind_param(":p_title_3",$ref->{title});
  158.             $q_step1->bind_param(":p_tarif_id",$ref->{id});
  159.             $q_step1->bind_param(":p_price",$ref->{price});
  160.             $q_step1->execute();
  161.             $oracle_dbh->commit();
  162.  
  163. #           sleep(1);
  164.  
  165.             #2. Генерруем состав
  166.             my $q_step2 = $oracle_dbh->prepare(qq{
  167.                 DECLARE
  168.                     num_N_DOC_ID                        SD_DOCUMENTS.N_DOC_ID%TYPE:=NULL;
  169.                     num_N_GOOD_ID                       SD_PRICE_ORDERS_C.N_GOOD_ID%TYPE:=NULL;
  170.                     num_N_LINE_NO           NUMBER;
  171.                     num_N_PRICE_ORDER_LINE_ID       SD_PRICE_ORDERS_C.N_PRICE_LINE_ID%TYPE:=NULL;
  172.                     num_N_PRICE_ORDER_P_LINE_ID     SD_PRICE_ORDERS_C.N_PRICE_LINE_ID%TYPE:=NULL;
  173.                     BEGIN
  174.                         BEGIN
  175.                         SELECT N_Doc_Id
  176.                         INTO num_N_DOC_ID
  177.                         FROM Sd_Documents
  178.                         -- WHERE (N_Doc_State_ID <> SYS_CONTEXT('CONST', 'DOC_STATE_Canceled'))  AND VC_DOC_NO= :p_title_1;
  179.                         WHERE (N_Doc_State_ID <> SYS_CONTEXT('CONST', 'DOC_STATE_Canceled'))  AND VC_DOC_NO= :p_title_2;
  180.                     EXCEPTION WHEN no_data_found THEN
  181.                         num_N_DOC_ID := NULL;
  182.                     END;
  183.                     BEGIN
  184.                     SELECT N_Good_Id
  185.                     INTO num_N_GOOD_ID
  186.                     FROM Sr_Goods
  187.                     WHERE C_Active='Y' AND VC_REM = 'tarifs.id ' || :p_tarif_id;
  188.                     EXCEPTION WHEN no_data_found THEN
  189.                     num_N_GOOD_ID := NULL;
  190.                     END;
  191.                     IF num_N_GOOD_ID IS NOT NULL THEN
  192.                     BEGIN
  193.                         SELECT min(N_Price_Line_Id)
  194.                         INTO num_N_PRICE_ORDER_LINE_ID
  195.                         FROM Sd_V_Price_Orders_C
  196.                         WHERE N_GOOD_ID = num_N_GOOD_ID;
  197.                     EXCEPTION WHEN no_data_found THEN
  198.                         num_N_PRICE_ORDER_LINE_ID := NULL;
  199.                     END;
  200.                     END IF;
  201.  
  202.                 -- фиксируем родительскую услугу
  203.                 num_N_PRICE_ORDER_P_LINE_ID := num_N_PRICE_ORDER_LINE_ID;
  204.  
  205.                 -- родитель
  206.                 num_N_LINE_NO := 1000000;
  207.                 -- лимит трафика (daylimit > 0) Интернет-трафик вх.
  208.                 IF :p_daylimit_1 > 0 THEN
  209.                 IF num_N_PRICE_ORDER_LINE_ID IS NOT NULL THEN
  210.                     num_N_PRICE_ORDER_LINE_ID := num_N_PRICE_ORDER_LINE_ID + 100;
  211.                 END IF;
  212.                 num_N_LINE_NO := num_N_LINE_NO + 1;
  213.  
  214.                 SD_PRICE_ORDERS_PKG.SD_PRICE_ORDERS_C_PUT (
  215.                     num_N_PRICE_ORDER_LINE_ID => num_N_PRICE_ORDER_LINE_ID,
  216.                     num_N_PRICE_ORDER_DOC_ID => num_N_DOC_ID,
  217.                     num_N_GOOD_ID => 40213701,
  218.                     num_N_TAX_RATE_ID => SS_CONSTANTS_PKG_S.ANUM_DOC_String_Const,
  219.                     num_N_CURRENCY_ID => SS_CONSTANTS_PKG_S.CURR_Ruble,
  220.                     num_N_PRICE => 0,
  221.                     num_N_SUM_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Math2,
  222.                     num_N_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_MByte,
  223.                     num_N_QUANT_RATING => 1,
  224.                     num_N_QUANT_PRICE => 1,
  225.                     num_N_RATING_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_Byte,
  226.                     num_N_QUANT_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Ceil2,
  227.                     num_N_QUANT_LAST => :p_daylimit_2,
  228.                     num_N_LINE_NO   => num_N_LINE_NO,
  229.                     num_N_PAR_LINE_ID => num_N_PRICE_ORDER_P_LINE_ID,
  230.                     num_N_SPEED_VOLUME => :p_limitvolume,
  231.                     num_N_SPEED_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_MbitSec,
  232.                     num_N_PRICE_LINE_TYPE_ID => SS_CONSTANTS_PKG_S.PRC_LINE_TYPE_Period
  233.                 );
  234.                 END IF;
  235.  
  236.                 -- Интернет-трафик вх.
  237.                 IF num_N_PRICE_ORDER_LINE_ID IS NOT NULL THEN
  238.                     num_N_PRICE_ORDER_LINE_ID := num_N_PRICE_ORDER_LINE_ID + 100;
  239.                 END IF;
  240.                 num_N_LINE_NO := num_N_LINE_NO + 1;
  241.  
  242.                 SD_PRICE_ORDERS_PKG.SD_PRICE_ORDERS_C_PUT (
  243.                     num_N_PRICE_ORDER_LINE_ID => num_N_PRICE_ORDER_LINE_ID,
  244.                     num_N_PRICE_ORDER_DOC_ID => num_N_DOC_ID,
  245.                     num_N_GOOD_ID => 40213701,
  246.                     num_N_TAX_RATE_ID => SS_CONSTANTS_PKG_S.ANUM_DOC_String_Const,
  247.                     num_N_CURRENCY_ID => SS_CONSTANTS_PKG_S.CURR_Ruble,
  248.                     num_N_PRICE => 0,
  249.                     num_N_SUM_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Math2,
  250.                     num_N_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_MByte,
  251.                     num_N_QUANT_RATING => 1,
  252.                     num_N_QUANT_PRICE => 1,
  253.                     num_N_RATING_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_Byte,
  254.                     num_N_QUANT_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Ceil2,
  255.                     num_N_LINE_NO   => num_N_LINE_NO,
  256.                     num_N_PAR_LINE_ID => num_N_PRICE_ORDER_P_LINE_ID,
  257.                     num_N_SPEED_VOLUME => :p_volume_1,
  258.                     num_N_SPEED_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_MbitSec,
  259.                     num_N_PRICE_LINE_TYPE_ID => SS_CONSTANTS_PKG_S.PRC_LINE_TYPE_Period
  260.                 );
  261.  
  262.                 -- Интернет-трафик исх.
  263.                 IF num_N_PRICE_ORDER_LINE_ID IS NOT NULL THEN
  264.                     num_N_PRICE_ORDER_LINE_ID := num_N_PRICE_ORDER_LINE_ID + 100;
  265.                 END IF;
  266.                 num_N_LINE_NO := num_N_LINE_NO + 1;
  267.  
  268.                 SD_PRICE_ORDERS_PKG.SD_PRICE_ORDERS_C_PUT (
  269.                     num_N_PRICE_ORDER_LINE_ID => num_N_PRICE_ORDER_LINE_ID,
  270.                     num_N_PRICE_ORDER_DOC_ID => num_N_DOC_ID,
  271.                     num_N_GOOD_ID => 40213501,
  272.                     num_N_TAX_RATE_ID => SS_CONSTANTS_PKG_S.ANUM_DOC_String_Const,
  273.                     num_N_CURRENCY_ID => SS_CONSTANTS_PKG_S.CURR_Ruble,
  274.                     num_N_PRICE => 0,
  275.                     num_N_SUM_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Math2,
  276.                     num_N_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_MByte,
  277.                     num_N_QUANT_RATING => 1,
  278.                     num_N_QUANT_PRICE => 1,
  279.                     num_N_RATING_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_Byte,
  280.                     num_N_QUANT_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Ceil2,
  281.                     num_N_LINE_NO   => num_N_LINE_NO,
  282.                     num_N_PAR_LINE_ID => num_N_PRICE_ORDER_P_LINE_ID,
  283.                     num_N_SPEED_VOLUME => :p_volume_2,
  284.                     num_N_SPEED_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_MbitSec,
  285.                     num_N_PRICE_LINE_TYPE_ID => SS_CONSTANTS_PKG_S.PRC_LINE_TYPE_Period
  286.                 );
  287.  
  288.                 -- Локальный трафик вх.
  289.                 IF num_N_PRICE_ORDER_LINE_ID IS NOT NULL THEN
  290.                     num_N_PRICE_ORDER_LINE_ID := num_N_PRICE_ORDER_LINE_ID + 100;
  291.                 END IF;
  292.                 num_N_LINE_NO := num_N_LINE_NO + 1;
  293.  
  294.                 SD_PRICE_ORDERS_PKG.SD_PRICE_ORDERS_C_PUT (
  295.                     num_N_PRICE_ORDER_LINE_ID => num_N_PRICE_ORDER_LINE_ID,
  296.                     num_N_PRICE_ORDER_DOC_ID => num_N_DOC_ID,
  297.                     num_N_GOOD_ID => 40214201,
  298.                     num_N_TAX_RATE_ID => SS_CONSTANTS_PKG_S.ANUM_DOC_String_Const,
  299.                     num_N_CURRENCY_ID => SS_CONSTANTS_PKG_S.CURR_Ruble,
  300.                     num_N_PRICE => 0,
  301.                     num_N_SUM_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Math2,
  302.                     num_N_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_MByte,
  303.                     num_N_QUANT_RATING => 1,
  304.                     num_N_QUANT_PRICE => 1,
  305.                     num_N_RATING_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_Byte,
  306.                     num_N_QUANT_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Ceil2,
  307.                     num_N_LINE_NO   => num_N_LINE_NO,
  308.                     num_N_PAR_LINE_ID => num_N_PRICE_ORDER_P_LINE_ID,
  309.                     num_N_PRICE_LINE_TYPE_ID => SS_CONSTANTS_PKG_S.PRC_LINE_TYPE_Period
  310.                 );
  311.  
  312.                 -- Локальный трафик исх.
  313.                 IF num_N_PRICE_ORDER_LINE_ID IS NOT NULL THEN
  314.                     num_N_PRICE_ORDER_LINE_ID := num_N_PRICE_ORDER_LINE_ID + 100;
  315.                 END IF;
  316.                 num_N_LINE_NO := num_N_LINE_NO + 1;
  317.  
  318.                 SD_PRICE_ORDERS_PKG.SD_PRICE_ORDERS_C_PUT (
  319.                     num_N_PRICE_ORDER_LINE_ID => num_N_PRICE_ORDER_LINE_ID,
  320.                     num_N_PRICE_ORDER_DOC_ID => num_N_DOC_ID,
  321.                     num_N_GOOD_ID => 40214001,
  322.                     num_N_TAX_RATE_ID => SS_CONSTANTS_PKG_S.ANUM_DOC_String_Const,
  323.                     num_N_CURRENCY_ID => SS_CONSTANTS_PKG_S.CURR_Ruble,
  324.                     num_N_PRICE => 0,
  325.                     num_N_SUM_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Math2,
  326.                     num_N_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_MByte,
  327.                     num_N_QUANT_RATING => 1,
  328.                     num_N_QUANT_PRICE => 1,
  329.                     num_N_RATING_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_Byte,
  330.                     num_N_QUANT_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Ceil2,
  331.                     num_N_LINE_NO   => num_N_LINE_NO,
  332.                     num_N_PAR_LINE_ID => num_N_PRICE_ORDER_P_LINE_ID,
  333.                     num_N_PRICE_LINE_TYPE_ID => SS_CONSTANTS_PKG_S.PRC_LINE_TYPE_Period
  334.                 );
  335.  
  336.                 -- Доступ в Интернет
  337.                 IF num_N_PRICE_ORDER_LINE_ID IS NOT NULL THEN
  338.                     num_N_PRICE_ORDER_LINE_ID := num_N_PRICE_ORDER_LINE_ID + 100;
  339.                 END IF;
  340.                 num_N_LINE_NO := num_N_LINE_NO + 1;
  341.  
  342.                 SD_PRICE_ORDERS_PKG.SD_PRICE_ORDERS_C_PUT (
  343.                     num_N_PRICE_ORDER_LINE_ID => num_N_PRICE_ORDER_LINE_ID,
  344.                     num_N_PRICE_ORDER_DOC_ID => num_N_DOC_ID,
  345.                     num_N_GOOD_ID => 40217401,
  346.                     num_N_TAX_RATE_ID => SS_CONSTANTS_PKG_S.ANUM_DOC_String_Const,
  347.                     num_N_CURRENCY_ID => SS_CONSTANTS_PKG_S.CURR_Ruble,
  348.                     num_N_PRICE => 0,
  349.                     num_N_SUM_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Math2,
  350.                     num_N_UNIT_ID => SS_CONSTANTS_PKG_S.UNIT_Unknown,
  351.                     num_N_QUANT_ROUNDING_ID => SS_CONSTANTS_PKG_S.ROUNDING_Ceil2,
  352.                     num_N_LINE_NO => num_N_LINE_NO,
  353.                     num_N_PAR_LINE_ID => num_N_PRICE_ORDER_P_LINE_ID,
  354.                     num_N_PRICE_LINE_TYPE_ID => SS_CONSTANTS_PKG_S.PRC_LINE_TYPE_Period
  355.                 );
  356.                 -- вставляем
  357.                 -- изменяем состояние на актуальное
  358.                 SD_DOC_STATES_PKG.SD_DOCUMENTS_CHANGE_STATE(
  359.                     num_N_DOC_ID   => num_N_DOC_ID,
  360.                     num_N_Old_DOC_STATE_ID => CONST.DOC_STATE_Draft,
  361.                     num_N_New_DOC_STATE_ID => CONST.DOC_STATE_Actual
  362.                 );
  363.                 END;
  364.             });
  365. #           $q_step2->bind_param(":p_title_1", $ref->{title});
  366.             $q_step2->bind_param(":p_title_2", $ref->{title});
  367.             $q_step2->bind_param(":p_tarif_id",$ref->{id});
  368.             $q_step2->bind_param(":p_daylimit_1",$ref->{daylimit});
  369.             $q_step2->bind_param(":p_daylimit_2",$ref->{daylimit});
  370.             $q_step2->bind_param(":p_limitvolume",$ref->{limitvolume});
  371.             $q_step2->bind_param(":p_volume_1",$ref->{volume});
  372.             $q_step2->bind_param(":p_volume_2",$ref->{volume});
  373.             $q_step2->execute();
  374.             $oracle_dbh->commit();
  375.             };
  376.             print "buh_id=> $buh_id->{buh_id}".($@ ? ' error: '.$@ : '')."\n";
  377.             sleep(1);
  378.         }
  379.     }
  380. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement