[Plugin] Module Export I-NET pour La Poste

Messagepar johnhummer » Sam 16 Jan 2010, 11:34

Edit: je me suis mélangé les pinceaux lors de la rédaction. La version postée ici est la version corrigée dont les étapes sont renumérotées.
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------

Bonjour,

Expeditor I-NET (http://www.colis-logistique.com/inetN220/) est le logiciel de La Poste pour créer automatiquement des étiquettes de livraison et gérer le suivi des colis.

Adaptation des contributions d'osCommerce
http://addons.oscommerce.com/info/4050
http://addons.oscommerce.com/info/5289

Attention: il y a beaucoup de code.

-----------------------------------------------------------------------------------

Notes:

Dans la contribution originale, le fichier à exporter peut s'afficher dans le navigateur. Dans ce cas, il s'affiche dans une fenêtre séparée. J'ai remplacé l'attribut _blank par _self pour que le fichier s'affiche dans la même fenêtre, ce afin de mieux gérer les messages d'erreur (un joli message bien formaté dans l'interface d'administration au lieu d'un ligne dans une fenêtre vide)

L'exportation du fichier de commandes peut aussi se faire par téléchargement direct d'un fichier depuis le serveur: problèmes de sécurité en vue...

Expeditor I-NET requiert une licence (il y a un mode demo pour le tester). Le logiciel, particulièrement bien conçu, s'installe à la racine du disque, ne s'exécute que sous le compte administrateur et sous Windows uniquement (compatible Vista, la classe !) En bref: le bouzin a été développé par des manchots. La documentation est au format .exe. Si vous exécutez le truc, il vous lâchera du pdf. Bien conçu, je vous dis...

-----------------------------------------------------------------------------------

Utilisation:

. Aller dans le panneau Client -> Commandes
. Sélectionner les commandes à exporter vers Expeditor I-NET.
. Choisir le mode d'exportation: via un fichier que vous sauvegarderez en local ou affichage dans le navigateur (dans ce cas, il vous faudra sauvegarder la page).
. Importer le fichier dans INET
. Un fichier fmt (définissant le format des données) est donné. Il est à importer dans Expeditor-INET.

-----------------------------------------------------------------------------------
Le méchant hack:
-----------------------------------------------------------------------------------

1. Créer le fichier expeditor_process.php dans admin avec le contenu suivant:

Code: Tout sélectionner
<?php
/*
OSC_Expeditor_process.php by Gnidhal v2.0
Inspired by batch-invoice-printing-v1.1 by PandA.n1
Changement by India Starker 29/03/07
Export for sticker display optimized by milerwan 15/07/07

*/

require('includes/application_top.php');
require(DIR_WS_CLASSES . 'currencies.php');
include(DIR_WS_CLASSES . 'order.php');

$target_file = $HTTP_POST_VARS['target_file'];

unset($batch_order_numbers);
if($HTTP_POST_VARS['batch_order_numbers']){
  foreach($HTTP_POST_VARS['batch_order_numbers'] as $order_number => $print_order) {
    $batch_order_numbers[] = $order_number;
  }
}           
 
// begin error handling
if (!(is_array($batch_order_numbers))){
  $messageStack->add_session(ERROR_EXPEDITOR_NO_ORDER_SELECTED, 'warning');
  tep_redirect(tep_href_link(FILENAME_ORDERS));
  exit('Error: no order(s) selected !');
}
// end error handling
 
sort($batch_order_numbers);
$number_of_orders = sizeof ($batch_order_numbers);

if($target_file == 'labels') {
 
  header ("Content-type: application/csv");
  header ('Content-Disposition: attachment ; filename="expeditor_inet.txt"');
 
  foreach ($batch_order_numbers as $order_number) {
 
    $oID = $order_number;
 
    $oID = tep_db_prepare_input($oID);
    $orders_query = tep_db_query("select orders_id, customers_id from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");
 $order_array = tep_db_fetch_array($orders_query);
 $customer_id = $order_array['customers_id'];
    $order = new order($oID);
 $crbt = '';

 ####### vérification du montant du contre remboursement
 for ($i = 0, $n = sizeof($order->totals); $i < $n; $i++) {
    if (preg_match('"contre remboursement"', $order->totals[$i]['title']) ){
  // Attention le résultat dépend de l'ordre dans lequel sont placées les lignes dans "Total Commande" dans ce cas, la ligne total est juste après la ligne "Contre Remboursement" soit $i+1
   $crbt = strip_tags($order->totals[$i+1]['text']);
 // Normalement le séparateur décimal devrait être la virgule, mais expéditor_inet attend un point comme séparateur décimal
  // Vérifiez le montant dans une première série d'étiquettes pour vérifier que la décimale est bien placée sinon modifiez ces lignes en conséquence (voire les supprimez)
   $crbt = str_replace(".", "",$crbt );
    $crbt = str_replace(",", ".",$crbt );
      }
    }

  #####    on récupère le nom et le prénom dans l'ordre NOM Prénom et le code du pays destinataire sous forme ISO2 en comparant les codes postaux dans le carnet d'adresse. Attention, il faut ajouter la fonction tep_get_country_iso2 dans general.php
    $customer_query = tep_db_query("select entry_firstname, entry_lastname, entry_country_id from " . TABLE_ADDRESS_BOOK . " where customers_id ='" . $customer_id . "' and entry_postcode ='" . $order->delivery['postcode'] . "' and entry_city ='" . addslashes($order->delivery['city']) . "'" ) ;
  $customer_array = tep_db_fetch_array($customer_query);
  $delivery_name = strtoupper($customer_array['entry_lastname']). " " . ucwords($customer_array['entry_firstname']) ;
 $code_pays = tep_get_country_iso2($customer_array['entry_country_id']);

 #### Mise en forme des données de l'étiquette expeditor_inet    // space optimized by milerwan
 if ($order->delivery['company'] !=''){
    echo '"' . $oID .'";"' . $customer_id . '";"' . $order->delivery['company'] . '";"' . $delivery_name . '";"' . $order->delivery['street_address'] . '";"' . $order->delivery['suburb'] . '";"' . $order->delivery['city'] . '";"' . $order->delivery['state']. '";"' . $order->customer['telephone'] . '";"' . $order->delivery['postcode'] . '";"' . $code_pays. '";"' . $crbt . '"'.  "rn";
 } else {
        echo '"' . $oID .'";"' . $customer_id . '";"' . $delivery_name . '";"' . $order->delivery['street_address'] . '";"' . $order->delivery['suburb'] . '";" ";"' . $order->delivery['city'] . '";"' . $order->delivery['state']. '";"' . $order->customer['telephone'] . '";"' . $order->delivery['postcode'] . '";"' . $code_pays. '";"' . $crbt . '"'.  "rn";
 }

   if($autoupdatestatus=='Yes') {
    tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments) values ('" . (int)$oID . "', '" . tep_db_input($autostatus) . "', now(), '" . tep_db_input('0') . "', '" . tep_db_input('') . "')");
      tep_db_query("update orders SET orders_status='" . tep_db_input($autostatus) . "' WHERE orders_id='" .$oID . "'");
    }
  }
 
} else {

;?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE . $autostatus; ?></title>
<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">

<?php
// le code ci dessous est quasi identique au précédent, mais la destination d'affichage va dans une nouvelle fenêtre du navigateur
  foreach ($batch_order_numbers as $order_number) {

    $oID = $order_number;

    $oID = tep_db_prepare_input($oID);
    $orders_query = tep_db_query("select orders_id, customers_id from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");
    $order_array = tep_db_fetch_array($orders_query);
    $customer_id = $order_array['customers_id'];
    $order = new order($oID);
    $crbt = '';

  for ($i = 0, $n = sizeof($order->totals); $i < $n; $i++) {
      if (preg_match('"Contre Remboursement"', $order->totals[$i]['title']) ){
         $crbt = strip_tags($order->totals[$i+1]['text']);
         $crbt = str_replace(".", "",$crbt );
         $crbt = str_replace(",", ".",$crbt );
      }
    }

    $customer_query = tep_db_query("select entry_firstname, entry_lastname, entry_country_id from " . TABLE_ADDRESS_BOOK . " where customers_id ='" . $customer_id . "' and entry_postcode ='" . $order->delivery['postcode'] . "' and entry_city ='" . addslashes($order->delivery['city']) . "'" ) ;
 $customer_array = tep_db_fetch_array($customer_query);
  $delivery_name = strtoupper($customer_array['entry_lastname']). " " . ucwords($customer_array['entry_firstname']) ;
 $code_pays = tep_get_country_iso2($customer_array['entry_country_id']);
 
  if ($order->delivery['company'] !=''){
    echo '"' . $oID .'";"' . $customer_id . '";"' . $order->delivery['company'] . '";"' . $delivery_name . '";"' . $order->delivery['street_address'] . '";"' . $order->delivery['suburb'] . '";"' . $order->delivery['city'] . '";"' . $order->delivery['state']. '";"' . $order->customer['telephone'] . '";"' . $order->delivery['postcode'] . '";"' . $code_pays. '";"' . $crbt . '"'.  "rn<br>";
 } else {
    echo '"' . $oID .'";"' . $customer_id . '";"' . $delivery_name . '";"' . $order->delivery['street_address'] . '";"' . $order->delivery['suburb'] . '";" ";"' . $order->delivery['city'] . '";"' . $order->delivery['state']. '";"' . $order->customer['telephone'] . '";"' . $order->delivery['postcode'] . '";"' . $code_pays. '";"' . $crbt . '"'.  "rn<br>";
 }

    if($autoupdatestatus=='Yes') {
      tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments) values ('" . (int)$oID . "', '" . tep_db_input($autostatus) . "', now(), '" . tep_db_input('0') . "', '" . tep_db_input('')  . "')");
      tep_db_query("update orders SET orders_status='" . tep_db_input($autostatus) . "' WHERE orders_id='" .$oID . "'");
 }
  }

?>
</BODY></HTML>
<?php

}
require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

Dans l'interface d'administration de la boutique, ajouter le
fichier à l'aide du menu Admin -> Categories/Produits -> Tools -> Editer. Dans
le menu déroulant de droite, choisir expeditor_process.php, puis cliquer sur Sauver.

-----------------------------------------------------------------------------------

2. Fichier admin/includes/filnames.php, ajouter la définition suivante:

Code: Tout sélectionner
define('FILENAME_EXPEDITOR', 'expeditor_process.php');

-----------------------------------------------------------------------------------

3. Fichier admin/orders.php

Ligne 421, remplacer

Code: Tout sélectionner
            <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
              <tr class="dataTableHeadingRow">
                <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_CUSTOMERS; ?></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ORDER_TOTAL; ?></td>
                <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_DATE_PURCHASED; ?></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_STATUS; ?></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
              </tr>
<?php
    if (isset($HTTP_GET_VARS['cID'])) {

par:

Code: Tout sélectionner
            <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
<?php
// OSC Expeditor Start
        echo tep_draw_form('batch_orders', FILENAME_EXPEDITOR, '', 'post', 'target="_self"') . "n";
?>

              <tr class="dataTableHeadingRow">
                <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_CUSTOMERS; ?></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ORDER_TOTAL; ?></td>
                <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_DATE_PURCHASED; ?></td>
                <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_STATUS; ?></td>
       <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_EXPORT; ?>&nbsp;&nbsp;<input name="allbox" type="checkbox" value="Check All" onClick="this.checked ? CheckAll('batch_orders', true) : CheckAll('batch_orders', false);" /></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
              </tr>
<?php
// OSC Expeditor end
    if (isset($HTTP_GET_VARS['cID'])) {

Ligne 453, remplacer

Code: Tout sélectionner
      if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) {
        echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href='' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=edit') . ''">' . "n";
      } else {
        echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href='' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . ''">' . "n";
      }
   
?>
                <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $orders['orders_id'] . '&action=edit') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a>&nbsp;' . $orders['customers_name']; ?></td>
                <td class="dataTableContent" align="right"><?php echo strip_tags($orders['order_total']); ?></td>
                <td class="dataTableContent" align="center"><?php echo tep_datetime_short($orders['date_purchased']); ?></td>
                <td class="dataTableContent" align="right"><?php echo $orders['orders_status_name']; ?></td>
                <td class="dataTableContent" align="right"><?php if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?>&nbsp;</td>
              </tr>
<?php
    }
?>
              <tr>
                <td colspan="5"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                  <tr>
                    <td class="smallText" valign="top"><?php echo $orders_split->display_count($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $HTTP_GET_VARS['page'], TEXT_DISPLAY_NUMBER_OF_ORDERS); ?></td>
                    <td class="smallText" align="right"><?php echo $orders_split->display_links($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $HTTP_GET_VARS['page'], tep_get_all_get_params(array('page', 'oID', 'action'))); ?></td>
                  </tr>
                </table></td>
              </tr>
            </table></td>
<?php
  $heading = array();

par:

Code: Tout sélectionner
// OSC Expeditor Start
      if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) {
        echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" >' . "n";
        $link = 'onclick="document.location.href='' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=edit') . ''"';
      } else {
        echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)">' . "n";
        $link = 'onclick="document.location.href='' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . ''"';
      }
// OSC Expeditor End
?>
                <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $orders['orders_id'] . '&action=edit') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a>&nbsp;' . $orders['customers_name']; ?></td>
                <td class="dataTableContent" align="right"><?php echo strip_tags($orders['order_total']); ?></td>
                <td class="dataTableContent" align="center"><?php echo tep_datetime_short($orders['date_purchased']); ?></td>
<?php
// OSC Expeditor Start
?>
        <td class="dataTableContent" align="center"><?php echo $orders['orders_status_name']; ?></td>
       <td class="dataTableContent" align="center"><?php echo tep_draw_checkbox_field('batch_order_numbers[' . $orders['orders_id'] . ']', 'no', '' , 'yes', 'onclick="CheckCheckAll(batch_orders)"'); ?></td>
<?php
// OSC Expeditor End
?>
                <td class="dataTableContent" align="right"><?php if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?>&nbsp;</td>
              </tr>
<?php
// OSC Expeditor Start
    $batch_order_numbers[] = $orders['orders_id'];
   
    }
?>
       <tr>
          <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '50'); ?></td>
        </tr>
       <tr>
        <td colspan="9" class="pageHeading" align="right"><?php echo HEADING_TITLE_EXPEDITOR; ?></td>
       </tr>
       <tr>
          <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
        </tr>
              <tr>
                <td colspan="9"><table border="0" width="100%" cellspacing="1" cellpadding="2">
                  <tr valign="top">
                    <td class="smallText" align="left" width="15%"><b><?php echo TITLE_EXPORT; ?></b><br><br><?php echo TEXT_EXPORT_FILE . ' ' . tep_draw_radio_field('target_file', 'labels', true). '<br>' . TEXT_EXPORT_NAVIGATOR . ' ' . tep_draw_radio_field('target_file', '', false); ?></td>
         <td class="smallText">&nbsp;</td>
                    <td class="smallText" align="center" width="20%"><b><?php echo TITLE_MODIFY_STATUS; ?></b><br><br><?php echo TEXT_YES . ' ' . tep_draw_radio_field('autoupdatestatus', 'Yes', false) . '<br>' . TEXT_NO . ' ' . tep_draw_radio_field('autoupdatestatus', 'No', true);?></td>
         <td class="smallText">&nbsp;&nbsp;</td>
                    <td class="smallText" align="left"><b><?php echo TITLE_EXPORT_STATUS; ?></b><br><br><?php echo tep_draw_pull_down_menu('autostatus', $orders_statuses,2); ?><br><br><?php echo TEXT_EXPORT_STATUS; ?></td>
         <td class="smallText">&nbsp;&nbsp;</td>
                    <td class="smallText" align="right"><br><br><?php echo tep_image_submit('button_confirm.gif', IMAGE_CONFIRM, 'align="absmiddle"'). "n"; ?></td>
                  </tr>
                </table></td>
              </tr>
       <?php echo '</form>' . "n"; ?>
        <tr>
                <td colspan="6"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                  <tr>
                    <td class="smallText" valign="top"><?php echo $orders_split->display_count($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $HTTP_GET_VARS['page'], TEXT_DISPLAY_NUMBER_OF_ORDERS); ?></td>
                    <td class="smallText" align="right"><?php echo $orders_split->display_links($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $HTTP_GET_VARS['page'], tep_get_all_get_params(array('page', 'oID', 'action'))); ?></td>
                  </tr>
                </table></td>
              </tr>
        <tr>
          <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
        </tr>
            </table></td>
<?php
// OSC Expeditor End

  $heading = array();

-----------------------------------------------------------------------------------

4. Fichier admin/includes/languages/XXXXX/orders.php où XXXXX représente la langue

Ajouter les définitions suivantes:

french

Code: Tout sélectionner
// Expeditor
define('TABLE_HEADING_EXPORT', 'Export I-NET');
define('HEADING_TITLE_EXPEDITOR', 'Expeditor I-NET');
define('TITLE_EXPORT', 'Exporter :');
define('TITLE_MODIFY_STATUS', 'Modifier les statuts ?');
define('TITLE_EXPORT_STATUS', 'Statut à appliquer aux commandes exportées');
define('TEXT_EXPORT_FILE', 'fichier (.txt)');
define('TEXT_EXPORT_NAVIGATOR', 'Navigateur');
define('TEXT_YES', 'Oui');
define('TEXT_NO', 'Non');
define('TEXT_EXPORT_STATUS', 'Une fois l'export effectué, rafraîchissez la page avec {F5}.<br>Avec cette mise à jour des statuts par lot, le client ne sera pas informé par mail, mais verra le changement d'état dans l'historique des commandes.');

english

Code: Tout sélectionner
// Expeditor
define('TABLE_HEADING_EXPORT', 'Export I-NET');
define('HEADING_TITLE_EXPEDITOR', 'Expeditor I-NET');
define('TITLE_EXPORT', 'Export :');
define('TITLE_MODIFY_STATUS', 'Modify status ?');
define('TITLE_EXPORT_STATUS', 'Status to applied to the exported orders');
define('TEXT_EXPORT_FILE', 'file (.txt)');
define('TEXT_EXPORT_NAVIGATOR', 'Navigator');
define('TEXT_YES', 'Yes');
define('TEXT_NO', 'No');
define('TEXT_EXPORT_STATUS', 'Once export carried out, refresh the page with {F5}.<br>With this update of the status by batch, the customer will not be informed by email, but he will see the change of state in the order history.');

-----------------------------------------------------------------------------------

5. Fichier admin/includes/functions/general.php

Ligne 338, après la fonction tep_get_country_name, ajouter la fonction

Code: Tout sélectionner
  // Expeditor
  // function to retrieve the country iso code based on the country's id
  function tep_get_country_iso2($country_id) {
    $country_query = tep_db_query("select countries_iso_code_2 from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$country_id . "'");

    if (!tep_db_num_rows($country_query)) {
    return $country_id;
    } else {
       $country = tep_db_fetch_array($country_query);
      return $country['countries_iso_code_2'];
    }
  }

-----------------------------------------------------------------------------------

6. Fichier admin/includes/general.js

Ajouter les fonctions

Code: Tout sélectionner
function CheckAll(the_form, do_check)
  {
    // the form : le nom du formulaire,
    // do check : true ou false

    d = eval('document.' + the_form );
    l= d.elements.length; // nombre d'éléments dans le formulaire

    for(i= l-1; i >= 0; i--)
     { // on part du dernier élément et on remonte
        if(d.elements[i].type == 'checkbox')
       { // on vérifie si c'est une checkbox
            d.elements[i].checked = do_check; // on affecte le statut do_check passé en paramètre.
          }
      }
  }


function CheckCheckAll(the_form)
 {
   var TotalBoxes = 0;
   var TotalOn = 0;
   
   for(var i=0;i<the_form.elements.length;i++)
     {
       var e = the_form.elements[i];

       if((e.name != 'allbox') && (e.type=='checkbox') && (e.disabled != true))
       {
           TotalBoxes++;
       
           if(e.checked)
        {
               TotalOn++;
      }
         }

     }
   
   if(TotalBoxes==TotalOn)
     {
       the_form.allbox.checked=true;
  }
   else
     {
       the_form.allbox.checked=false;
   }

 }

-----------------------------------------------------------------------------------

7. Fichier admin/includes/language/XXXXX.php ou XXXXX représente la langue

Ajouter la définition suivante:

french

Code: Tout sélectionner
// Expeditor
define('ERROR_EXPEDITOR_NO_ORDER_SELECTED', 'Erreur: aucune commande s&eacute;lectionn&eacute;e pour l'exportation vers Expeditor I-NET!');

english

Code: Tout sélectionner
// Expeditor
define('ERROR_EXPEDITOR_NO_ORDER_SELECTED', 'Error: no order(s) selected !');

-----------------------------------------------------------------------------------

8. Fichier au format FMT pour Expeditor I-NET

Créer le fichier osCSS.fmt (que vous importerez dans Expeditor I-NET) avec le contenu suivant:

Code: Tout sélectionner
[GENERAL]
DELIMITE=O
SEPARATEUR=59
DELIMITEUR=34
FINDELIGNE=CRLF
Unité poids=KG
CN23=0
[CHAMPS]
ReferenceExpedition=1
CodeDestinataire=2
NomDestinataire=3
Adresse1=4
Adresse2=5
Adresse3=6
Commune=7
Telephone=9
CodePostal=10
CodePays=11
MontantCRBT=12
Dernière édition par johnhummer le Dim 17 Jan 2010, 01:27, édité 1 fois.
johnhummer
Membre actif
 
Messages: 34
Inscription: Mer 30 Déc 2009, 11:56

Retourner vers Plugin

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron