Drupal Commerce + külső ügyviteli rendszer

simont képe

Sziasztok!

Drupál 7 és Drupál Commerce webáruházról lenne szó, amit egy külső ügyviteli rendszerrel kellene összekapcsolni.

Amit a külső programnak tudnia kell:
- raktárkészlet
- vonalkódos beolvasás
- számlanyomtatás
- tömeges árubevitel
Ami lényeg, hogy ami történik a külső modulban (készlet csökkenés, áru bevitel stb.) az a webes felületen is megjelenjen.
Ha beviszek egy terméket, akkor az jelenjen meg a webshopban is (kép, ár, darabszám, tulajdonságok stb.), ha pedig elkel egy termék a webshopon, akkor csökkenjen a készlet a külső programban is.

Érdekelne, hogy mik a tapasztalataitok ebben, esetleg milyen külső programot ajánlotok a D7+drupál commerce kettősre, ami már működőképes, és tudja a fentebb felsorolt elvárásokat?

Előre is köszönöm!

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
makgab képe

Tapasztalatom szerint ezek egyedi esetek lesznek. Minden ügyviteli rendszer egy kicsit sajátos.
A commerce-be bevinni adatokat lehet, de egyedi modul kell hozzá az biztos.
Én azt javaslom, hogy az ügyviteli rendszer legyen a "fő rendszer".
Az oda-vissza szinkronizálás nem biztos, hogy működik. Főleg, ha online szeretnéd.

    Én a következő logika alapján működtetném:
  • A fő rendszer az ügyviteli rendszer. Itt történik minden ügyviteli változás.
    • Két fő funkciót kellene megvalósítani:
      • Az ügyviteli rendszerből a commerce-be a termékadatokat és a készletadatokat kellene szinkronizálni.
      • A commerce-ból az ügyvitelbe pedig csak a megrendeléseket.
1
0
simont képe

Igen, pontosan erre gondoltam, csak még nem állt össze a fejemben a dolog. Köszönöm, hogy megfogalmaztad a logikáját!

Ahogy nézegetem a neten az ügyviteli programokat, úgy látom mindegyiknek van egy webáruház modulja, ami megvalósítja a kapcsolatot a webshop és az ügyviteli program között. És igen, ahogy írod is, ezek mind egyedi esetek lesznek.

Esetleg valakinek van-e konkrét tapasztalata, aki már megcsinált egy ilyen projektet?

0
0

SimonT

makgab képe

    Én két rendszert néztem:
  • Ledger
  • Symboltech

Az xml talán az egyik legelterjedtem adatcsere formátum. Én egy szkripttel töltöttem be. Online lehetőséget nem szeretem, mert ha megszakad a kapcsolat, akkor gondot okoz a félig elküldött adat. Bár elvileg ezt is ügyesen ki lehet védeni talán.
Szerintem időzítőből lehet megoldani optimálisan. Pl. ügyviteli adatokat időközönként a Drupal-ra feltölteni (ftp,sftp). A Drupal oldalon meg egy időzítővel (ha van friss fájl) be lehet tölteni.

Ez lenne az egyszerű elv. Egy kis segítség egy szkripthez, pl.:

<?php
  // ********************************
  // get product data from upload xml
  // ********************************
  // ...
  $xml_webgroup_id = array();
  $xml = simplexml_load_file("./path/to/uploaded/products.xml");     // FROM XML
  foreach ( $xml as $prd ) {
     $xml_title = $prd->name . "\n";
     $xml_code = $prd->code . "\n";
     $xml_id = $prd->id . "\n";
     foreach ( $prd->ProductWebGroups->ProductWebGroup as $wg ) {
        $xml_webgroup_id[] = $wg;
        }
 
     if ( $product_q = commerce_product_load_by_sku( $xml_id ) ) {
           echo "\nUpdate...\n";
           $product = new StdClass();
           $product->product_id = $product_q->product_id; // here is set id for the modify product
           $product->title = $xml_title;
           $product->sku = $xml_id;
           $product->status = '1';
           $product->revision_timestamp = time();
           // $product->type = $xml_producttype;
           $product->type = 'product';
           $product->uid = $user->uid;
           $product->created = time();
           $product->changed = time();
           $product->field_symbol_code[LANGUAGE_NONE][0]['value'] = $xml_code;
           $i = 0;
           foreach ( $xml_webgroup_id as $wid ) {
              $product->field_productgroups[LANGUAGE_NONE][$i]['tid'] = $xml_webgroup_id[$i];
              $i++;
              } // foreach
           commerce_product_save($product);
           $xml_webgroup_id = array(); // empty variable
 
        } else {
           echo "\nInsert...\n";
           $product = commerce_product_new('product');
           $product->title = $xml_title;
           $product->sku = $xml_id;
           $product->status = '1';
           $product->revision_timestamp = time();
           // $product->type = $xml_producttype;
           $product->uid = $user->uid;
           $product->created = time();
           $product->changed = time();
           $product->field_symbol_code[LANGUAGE_NONE][0]['value'] = $xml_code;
           $i = 0;
           foreach ( $xml_webgroup_id as $wid ) {
              $product->field_productgroups[LANGUAGE_NONE][$i]['tid'] = $xml_webgroup_id[$i];
              $i++;
              } // foreach
           commerce_product_save($product);
           $xml_webgroup_id = array(); // empty variable
        } // if
 
  } // end of foreach
 
  // ...
?>
0
0
Gonda János képe

Szerintem egy jól működő rendszernél a webáruház, a raktárnyilvántartó, és a számlázó, ügyviteli részt, egy program működteti csak a hozzáférés van korlátozva. A szinkronizálás az egyidőben végrehajtott tranzakciók miatt megboríthatják a rendszert. Egy adatbázis több vagy egy program kényelmes és megbízhatóbb megoldás, mint az adatok ráncigálása le fel.

0
0

Gonda János

aries képe

Egy jól működő rendszer pontosan nem így néz ki. Kliens programból adatbázis közvetlen írása?

Egy jól működő rendszernél a Drupal is egy felület, az ügyviteli rendszer is egy felület, meg az intelligens kassza, a nyilvántartás is egy külön rendszerben történik és ezeket egy integrációs réteg, pl. egy ESB köti össze.

1
0
Gonda János képe

Mi az hogy kliens?
Az XML export iport az nem megoldás erre válaszoltam.
Talán elbeszélünk egymás mellett?

0
0

Gonda János

aries képe

Módosítottad a hozzászólásodat, így nem ér. ;) Én arra válaszoltam, hogy a közös adatbázis, az „egy program mind felett” megközelítés a legtöbb esetben nem optimális megoldás.

1
0
aries képe

Nem egyedi eset. Pl. a Mule ESB-vel közel 200 rendszert tudsz összekapcsolni egyedi kód írása nélkül.

0
0
simont képe

Köszönöm a segítséget! Hasznosak voltak a számomra a hozzászólások, de a megrendelő még nem döntött, melyik ügyviteli redszert válassza. Köszönöm még egyszer!

0
0

SimonT