order details mit eigener "Box" erweitern

Thema wurde von Pascal, 16. April 2016 erstellt.

  1. Pascal
    Pascal Aktives Mitglied
    Registriert seit:
    5. Februar 2012
    Beiträge:
    40
    Danke erhalten:
    0
    Danke vergeben:
    5
    Hallo,

    gerne möchte ich in order_details unter der Box "Lieferscheine" eine eigene Box erstellen.

    kurz was ich bis jetzt gemacht habe.
    Ich habe meine alte ESR-implementation aus dem alten GX2 shop auf den neuen Shop angepasst.
    Hierzu habe ich ein neues Admin Menü für Konfigurationen erstellt.

    damit ich ein ESR Schein erstellen kann, habe ich in order_details den Abschnitt für "Invoice" kopiert und unter packingslip eingefügt. So hatte ich die Möglichkeit ein PDF zu erstellen. Das PDF wird unter /export/esr kopiert.
    Die Datei hat folgendes Format:
    3360__ESR__9397870000000000000000033600__2016-04-16-16-35-52__7d078158ee68b43b6427af7044d27658.pdf
    in diesem Ordner sind auch noch zwei weitere Dateien vorhanden. Die .htaccess und index.html. Die .htaccess hat folgenden Inhalt.

    Code:
    order_esr allow,deny
    deny from all
    
    Dammit das ganze unter oder_details auch update sicher ist, muss dass was ich temporär eingebaut habe wieder raus.
    Ich habe gesehen das im Ordner /system/overloads/OrderExtenderComponent/ die Datei InvoicePDFOrderExtender.inc.php existiert. Scheinbar wird diese Benutzt um die "Rechnungs und Lieferschein Boxen"
    zu erstellen.

    Ich habe mir diese Datei mal Kopiert und sie in EsrPDFOrderExtender.inc.php umbenennt.

    der Inhalt sieht wie folgt aus.
    Code:
    <?php
    
    class EsrPDFOrderExtender extends EsrPDFOrderExtender_parent
    {
       function proceed()
       {
          ob_end_clean();
          $t_order_id = (int)$_GET['oID'];
          $t_esr_files_array = glob(DIR_FS_CATALOG . 'export/esr/' . $t_order_id . '_*.pdf');
          ?>
    
          <div class="invoice-packingslip hidden">
             <table border="0" width="100%" cellspacing="0" cellpadding="0">
                <thead>
                   <tr>
                      <th>
                         <?php echo ESR_CREATED; ?>
                      </th>
                   </tr>
                </thead>
                <tbody>
                   <tr class="table-container">
                      <td class="invoice-container" valign="top">
                         <table border="0" width="100%" cellspacing="0" cellpadding="2" class="dataTableRow invoice"
                               data-gx-controller="order/order_pdf_delete"
                               data-gx-extension="visibility_switcher"
                               data-visibility_switcher-selections=".action-icons">
                            <thead>
                               <tr>
                                  <th><?php echo TITLE_ESR_CODE; ?></th>
                                  <th><?php echo TEXT_DATE; ?></th>
                                  <th></th>
                               </tr>
                            </thead>
                            <tbody>
                            <?php
                            if(is_array($t_esr_files_array) && count($t_esr_files_array) > 0)
                            {
                               foreach($t_esr_files_array as $t_file)
                               {
                                  $t_file_parts = explode('__', basename($t_file));
                                  ?>
                                  <tr class="invoice visibility_switcher">
                                     <td>
                                        <?php echo $t_file_parts[2] ?>
                                     </td>
                                     <td>
                                        <?php echo xtc_datetime_short($t_file_parts[2]); ?>
                                     </td>
                                     <td>
                                        <div class="action-icons">
                                           <a href="request_port.php?module=OrderAdmin&action=showPdf&type=invoice&file=<?php echo basename($t_file); ?>" target="_blank" class="icon-container"><i class="fa fa-eye"></i></a>
                                           <a href="request_port.php?module=OrderAdmin&action=downloadPdf&type=invoice&file=<?php echo basename($t_file); ?>" target="_blank" class="icon-container"><i class="fa fa-download"></i></a>
                                           <a href="#" rel="<?php echo basename($t_file); ?>" class="delete_pdf icon-container"><i class="fa fa-trash-o"></i></a>
                                        </div>
                                     </td>
                                  </tr>
                                  <?php
                               }
                               ?>
                               <tr style="display: none;" class="invoice">
                                  <td>
                                     <?php echo NO_ESR_CREATED; ?>
                                  </td>
                               </tr>
                               <?php
                            }
                            else
                            {
                               ?>
                               <tr class="invoice">
                                  <td>
                                     &mdash;
                                  </td>
                               </tr>
                               <?php
                            }
                            ?>
                            </tbody>
                         </table>
                      </td>
                   </tr>
                </tbody>
             </table>
          </div>
          
          <?php
          ob_start();
          $this->addContent();
          parent::proceed();
       }
    }
    
    Was jetzt funktioniert ist die Anzeige der Dateien. Das ist aber schon alles. Die Tabelle ist auch in der Box Rechnungen eingebettet. Ich denke dass da noch was mit den classen gesteuert wird, denn wenn ich
    Code:
    class="dataTableRow invoice"
    
    in
    Code:
    class="dataTableRow esr"
    
    ändere, ist die Tabelle nicht mehr zu sehen.

    Ich kenne den Shop nicht so gut im Detail wie es hier viele tun, daher hoffe ich auf ein paar Hinweise.
    Was muss ich noch anpassen damit die Box für sich alleine steht?

    besten Dank für eure hinweise.

    Gruss
    Pascal
     
  2. Pascal
    Pascal Aktives Mitglied
    Registriert seit:
    5. Februar 2012
    Beiträge:
    40
    Danke erhalten:
    0
    Danke vergeben:
    5
    .. in der Zwischenzeit habe ich noch folgende Zeilen angepasst:
    Code:
    <a href="request_port.php?module=OrderAdmin&action=showPdf&type=esr&file=<?php echo basename($t_file); ?>" target="_blank" class="icon-container"><i class="fa fa-eye"></i></a>
    <a href="request_port.php?module=OrderAdmin&action=downloadPdf&type=esr&file=<?php echo basename($t_file); ?>" target="_blank" class="icon-container"><i class="fa fa-download"></i></a>
    <a href="#" rel="<?php echo basename($t_file); ?>" class="delete_pdf icon-container"><i class="fa fa-trash-o"></i></a>
    
    somit kann ich jetzt das ESR PDF anschauen, herunterladen, und löschen.
     
  3. Pascal
    Pascal Aktives Mitglied
    Registriert seit:
    5. Februar 2012
    Beiträge:
    40
    Danke erhalten:
    0
    Danke vergeben:
    5
    #3 Pascal, 23. April 2016
    Zuletzt bearbeitet: 23. April 2016
    ... so, habe es doch noch gefunden und gelöst.

    eine Datei unter /user_classes/overloads/OrderExtenderComponent anlegen => EsrOrderExtender.inc.php

    Code:
    <?php
    
    
    /**
    * Class EsrOrderExtender
    *
    * @see OrderExtenderComponent
    */
    class EsrOrderExtender extends EsrOrderExtender_parent
    {
        /**
         * Overloaded "proceed" method.
         */
        public function proceed()
        {
    
            $languageTextManager = MainFactory::create('LanguageTextManager', 'esr');
            $esrCreated = $languageTextManager->get_text('ESR_CREATED');
            $esrCreate = $languageTextManager->get_text('ESR_TITLE');
            $esrCode = $languageTextManager->get_text('TITLE_ESR_CODE');
    
            $t_order_id = (int)$_GET['oID'];
            $esr_files_array = glob(DIR_FS_CATALOG . 'export/esr/' . $t_order_id . '_*.pdf');
            $esrList = '';
    
            if (is_array($esr_files_array) && count($esr_files_array) > 0) {
                foreach ($esr_files_array as $t_file) {
                    $t_file_parts = explode('__', basename($t_file));
                    $esrList .= '<tr class="invoice visibility_switcher">
                                    <td>
                                        ' . $t_file_parts[2] . '
                                    </td>
                                    <td>
                                        ' . xtc_datetime_short($t_file_parts[3]) . '
                                    </td>
                                    <td>
                                        <div class="action-icons">
                                            <a href="request_port.php?module=OrderAdmin&action=showPdf&type=esr&file=' . basename($t_file) . '" target="_blank" class="icon-container"><i class="fa fa-eye"></i></a>
                                            <a href="request_port.php?module=OrderAdmin&action=downloadPdf&type=esr&file=' . basename($t_file) . ' target="_blank" class="icon-container"><i class="fa fa-download"></i></a>
                                            <a href="#" rel="' . basename($t_file) . '" class="delete_pdf icon-container"><i class="fa fa-trash-o"></i></a>
                                        </div>
                                    </td>
                                </tr>';
                }
            }
    
    
            //Position: below_history
            $this->v_output_buffer['below_history_heading'] = '
                        ' . $esrCreated . '
                    </label>
                    <label class="pull-right head-link default">
                        <a onclick="window.open(\'' . xtc_href_link('esr_pdf.php', 'oID=' . (int)$GLOBALS['oID']) . '\', \'_blank\')">
                      ' . $esrCreate . '
                    </a>
                    </label>';
    
            $this->v_output_buffer['below_history'] = '
                    <div class="frame-content">
                   <table border = "0" width = "100%" cellspacing = "0" cellpadding = "2" class="dataTableRow"
                      data-gx-controller = "order/order_pdf_delete"
                      data-order_pdf_delete-type = "esr"
                      data-gx-extension = "visibility_switcher"
                      data-visibility_switcher-selections = ".action-icons">
                      <thead>
                      <tr>
                         <th>' . $esrCode . '</th>
                         <th>' . TEXT_DATE . '</th>
                         <th></th>
                      </tr>
                      </thead>
                      <tbody>
                                 ' . $esrList . '
                      </tbody>
                   </table>
                </div>';
    
            //The following two rows need to be at the end of every overload of the OrderExtender
            $this->addContent();
            parent::proceed();
        }
    }
    
    und somit habe ich die Box, update sicher
     
  4. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Du meinst bestimmt: "../user_classes/overloads/OrderExtenderComponent/"
     
  5. Pascal
    Pascal Aktives Mitglied
    Registriert seit:
    5. Februar 2012
    Beiträge:
    40
    Danke erhalten:
    0
    Danke vergeben:
    5
    stimmt :) danke für dein Hinweis.