Nexus ERP

Tutorial import din PHP

Importul datelor intr-o anumita tabela (clienti, partenri, avize, produse, etc) se realizeaza in doua etape:

1. Inserarea in tabelul buffer a informatiilor corecte si complete. Structura tabelului este prezentata in anexa A din cadrul fiecarui import.

2. Apelarea procedurii stocate importex_[nume_tabela_import]_exec care valideaza, importa datele si goleste tabelul-buffer. In cazul in care datele nu sunt corecte procedura intoarce o exceptie si intregul proces de import este abandonat, restabilindu-se starea dinaintea importului. Lista erorilor posibile este prezentata in anexa B din cadrul fiecarui import.

Pentru a ne conecta la serverul Nexus ERP din mediul de programare PHP putem una din librariile:

  • functii SQLSRV pentru cazul in care serverul functioneaza pe o platforma Windows
  • functii MSSQL pentru cazul in care serverul functioneaza pe o platforma Linux sau Windows.

Pentru a accesa serverul Nexus ERP din exterior trebuie indeplinite conditiile:

1. utilizatorul cu care se acceseaza serverul Nexus trebuie sa aiba obligatoriu optiunile de site si site extins.

2.serverul trebuie sa fie accesibil din exterior (portul sub care ruleaza Nexus ERP trebuie configurat in router sau Firewall)

 

 1. Exemplu conectare din PHP  folosind functii  SQLSRV:

// Conectare la serverul Nexus ERP

$nexus_ip = "192.168.0.1, 56789"; // IP,port
$nexus_user = "utilizator"; // nume utilizator
$nexus_parola = "parola"; // parola utilizator
$nexus_bazadate = "SC EXEMPLU SRL"; // nume baza de date din Nexus ERP

$connectionInfo = array( "Database"=>$nexus_bazadate, "UID"=>$nexus_user, "PWD"=>$nexus_parola);
$nexus_conexiune    = sqlsrv_connect($nexus_ip, $connectionInfo);
if (!$nexus_conexiune)

       return; 

 

// interogare pentru inserare date in tabela buffer. Consultati anexa A pentru lista completa de campuri disponibile din cadrul fiecarui import

$id_importex = 1;

$interogare = "INSERT INTO importex_parteneri (id_importex, cif_cnp, denumire) VALUES ($id_importex,  9671891, 'Nexus Media')";

sqlsrv_query( $nexus_conexiune, $interogare);

 

// dupa introducerea datelor in tabela se apeleaza procedura care valideaza, importa datele in tabele si goleste tabelul-buffer

$interogare = "{call importex_parteneri_exec (?, ?, ?, ?)}";

$params = array(
      array($id_importex, SQLSRV_PARAM_IN), -- NULL pentru toate importurile (VARCHAR(25) = NULL)
      array($keep_data_on_err, SQLSRV_PARAM_IN), -- se pastreaza datele in tabelele buffer in caz de eroare ( BIT = 0)
      array($manage_existing, SQLSRV_PARAM_IN), -- 0=eroare 1=update 2=skip (TINYINT = 0)
      array($single_tran, SQLSRV_PARAM_IN) -- importul se executa intr-o singura tranzactie (BIT = 1)
);

$result = sqlsrv_query( $nexus_conexiune, $interogare, $params);
$msg_error = '';
if( $result == FALSE )
{
      if( ($errors = sqlsrv_errors() ) != null)
      {
            foreach( $errors as $error )
            {
                  $msg_error.= $error['message'];
            }
      }
}

 

 

2. Exemplu conectare din PHP  folosind functii  MSSQL:

// Conectare la serverul Nexus ERP

$nexus_ip = "192.168.0.1, 56789"; // IP,port
$nexus_user = "utilizator"; // nume utilizator
$nexus_parola = "parola"; // parola utilizator
$nexus_bazadate = "SC EXEMPLU SRL"; // nume baza de date din Nexus ERP

$connection = mssql_connect($nexus_ip, $nexus_user , $nexus_parola);
mssql_select_db($nexus_bazadate, $connection);
 

// interogare pentru inserare date in tabela buffer. Consultati anexa A pentru lista completa de campuri disponibile din cadrul fiecarui import

$interogare = "INSERT INTO importex_parteneri (id_importex, cif_cnp, denumire) VALUES (1, 9671891, 'Nexus Media')";

$result = mssql_query($interogare);

 // dupa introducerea datelor in tabela se apeleaza procedura care valideaza, importa datele in tabele si goleste tabelul-buffer

$interogare = "exec dbo.importex_parteneri_exec 1";

$result = mssql_query$interogare);

 

In cazul in care datele nu sunt corecte procedura intoarce o exceptie si intregul proces de import este abandonat, restabilindu-se starea dinaintea importului. Lista erorilor posibile este prezentata in anexa B. Procedura are parametrul @manage_existing ce determina comportamentul in cazul unor inregistrari care exista deja in baza de date. Acesta poate lua 3 valori:

  • 0 - procedura se opreste returnand o eroare (aceasta e valoarea implicita);
  • 1 - se actualizeaza datele partenerului existent;
  • 2 - se ignora importul inregistrarii curente, lasand datele partenerului neschimbate.

 

Anularea unui import se face prin apelarea procedurii stocate importex_parteneri_anulare cu parametrul id_importex (id lot articole importate). Procedura stocata verifica consistenta efectului de anulare a datelor deja importate si dupa caz realizeaza stergerea efectiva a datelor sau intoarce un mesaj de eroare.