Seriennummern aufnehmen (Rechnung + Lieferschein)

Hier kannst du dich vorstellen und Fragen zum Plugin stellen.
Installation, Administration, etc.

Moderatoren: ThoGoe, maennchen1.de

Benutzeravatar
solala
Beiträge: 562
Registriert: 23.09.2011, 20:41
Lizenz: wpShopGermany Enterprise

Seriennummern aufnehmen (Rechnung + Lieferschein)

Beitragvon solala » 20.05.2014, 23:17

Hallo,

bei einigen Produkten möchte ich auch die Seriennummer auf die Rechnung bringen. Hierzu muss man die Seriennummer zuerst in der Bestellansicht angeben.

Ich habe das jetzt bei der 3.3.9er Version so gelöst:
1. In der Tabelle <wp-präfix>wpsg_order_products eine weitere Spalte "s_nr" eingefügt.
2. in der /wp-content/uploads/wpsg/user_views/order/view.phtml hinter:

Code: Alles auswählen

<td class="wpsg_cell_gesamtpreis"><?php echo wpsg_ff($p['menge'] * $p['preis']); ?> <?php echo $this->get_option('wpsg_currency'); ?></td>
</tr>

folgendes eingefügt:

Code: Alles auswählen

                     <?php /* s_nr Block Beginn, am Ende der Tabelle wird die DB-Verbindung wieder geschlossen */ ?>
                     <?php $verbindung = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
                        mysql_select_db(DB_NAME) or die ("Die Datenbank existiert nicht.");?>
                     <tr>
                        <td colspan="<?php echo $this->view['colspan']; ?>" class="xxx">
                           <?php /*DB-Update*/ if (isset($_POST['s_nr'.$p['id']])) { mysql_query("UPDATE ".WPSG_TBL_ORDERPRODUCT." SET s_nr ='".$_POST['s_nr'.$p['id']]."' WHERE o_id='".$this->view['data']['id']."' AND p_id='".$p['id']."'"); } else { /*echo "kein update"*/; } ?>
                           <form id="s_nr_update_prod_id<?php echo $p['id']; ?>" action="<?php echo "admin.php?page=wpsg-Order&action=view&edit_id=".$_REQUEST['edit_id']; ?>" method="POST">
                              
                              <datalist id="s_nr<?php echo $p['id']; ?>">
                              <?php   // SQL Abfrage um die unterschiedlichen Seriennummern zu finden (GROUP BY)
                                 $sql = "SELECT `s_nr` FROM ".WPSG_TBL_ORDERPRODUCT." WHERE `p_id` = ".$p['id']." GROUP BY `s_nr`";
                                 $result = mysql_query($sql);
                                 while($row = mysql_fetch_assoc($result)){
                                    echo '<option value="'.$row['s_nr'].'">';
                                 }
                              ?>
                              </datalist>                   
                  
                              <input list="s_nr<?php echo $p['id']; ?>" name="s_nr<?php echo $p['id']; ?>" type="text" value="<?php echo mysql_result(mysql_query("SELECT  `s_nr` FROM  `".WPSG_TBL_ORDERPRODUCT."` WHERE  `o_id` =".$this->view['data']['id']." AND  `p_id` =".$p['id']),0); ?>" size="40" maxlength="80">
                              <input type="submit" value=" Absenden "> <input type="reset" value=" Abbrechen">
                                          
                           </form>
                        </td>
                     </tr>
                     <?php /* s_nr Block Ende */ ?>


Das "nette" dabei ist, dass hier eine "datalist" benutzt wird, um alle bereits zu der Produkt-ID vergebene Seriennummern in einem Dropdown-Menü zur Auswahl zur Verfügung zu stellen. Zwar wird eine Seriennummer nur 1x verwendet, bei längeren Seriennummern kann es aber trotzdem von Vorteil sein, das ein oder andere Muster zur Verfügung zu haben, welches nur noch leicht abgeändert werden muss. Leider wird das datalist noch nicht von allen Browsern unterstützt, aber Firefox und Chrome/Chromium/Iron können es schon...

3. In der gleichen Datei dann noch am Ende der Tabelle die Datenbankverbindung geschlossen:

Code: Alles auswählen

                  </table>
                  <?php mysql_close($verbindung); // die oben aufgebaute DB-Verbindung wird wieder geschlossen ?>


4. Rechnungsmodul anpassen
Suche in der Datei wp-content/uploads/wpsg/user_views/mods/mod_rechnungen/rechnung_pdf.phtml nach:

Code: Alles auswählen

      $produkt_text_width = $pdf->GetStringWidth($produkt_text);
      //$produkt_text_cell_width = (($this->arMwSt == "-1")?87:102);


Füge direkt danach ein:

Code: Alles auswählen

      // Beginn der s_nr Ausgabe
      $verbindung = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
      mysql_select_db(DB_NAME) or die ("Die Datenbank existiert nicht.");
      $s_nr_text = mysql_result(mysql_query("SELECT  `s_nr` FROM  `".WPSG_TBL_ORDERPRODUCT."` WHERE  `o_id` =".$this->view['data']['id']." AND  `p_id` =".$p['id']),0);
      mysql_close($verbindung); //JN die oben aufgebaute DB-Verbindung wird wieder geschlossen
      if ($p['id']){
      $produkt_text .= "\n".$s_nr_text; //s_nr angehängt
      }
      // Ende der s_nr Ausgabe




5. Lieferschein anpassen
Suche in der Datei /wp-content/uploads/wpsg/user_views/mods/mod_deliverynote/deliverynote_pdf.phtml

Code: Alles auswählen

global $absender_left, $absender_top, $adress_left, $adress_top, $dndata_left, $dndata_top;

Ersetzte dies an 2 Stellen mit

Code: Alles auswählen

global $absender_left, $absender_top, $adress_left, $adress_top, $dndata_left, $dndata_top, $bestell_id;



Suche nach

Code: Alles auswählen

$pdf->Text($rdata_left + 170, $dndata_top + 6, wpsg_formatTimestamp($shop->view['lDatum'], true));
         
         if ($shop->view['oOrder']->isInnerEu())

Ersetze mit

Code: Alles auswählen

$pdf->Text($rdata_left + 170, $dndata_top + 6, wpsg_formatTimestamp($shop->view['lDatum'], true));

         $bestell_id = $shop->view['order']['id'];

         if ($shop->view['oOrder']->isInnerEu())



Suche nach

Code: Alles auswählen

   foreach ($this->view['data']['products'] as $p)

Ersetze mit

Code: Alles auswählen

   // JN Datenbankverbindung öffnen für s_nr Ausgabe
   $verbindung = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
   mysql_select_db(DB_NAME) or die ("Die Datenbank existiert nicht.");

   foreach ($this->view['data']['products'] as $p)



Suche nach

Code: Alles auswählen

$produkt_text = $p['name'];

Ersetzte mit

Code: Alles auswählen

$s_nr_text = mysql_result(mysql_query("SELECT  `s_nr` FROM  `".WPSG_TBL_ORDERPRODUCT."` WHERE  `o_id` =".$bestell_id." AND  `p_id` =".$p['p_id']),0);
      $produkt_text = $p['name']; //Originalzeile
      $produkt_text .= "\n".$s_nr_text;



Suche nach

Code: Alles auswählen

$offset += 5;

Ersetzte mit

Code: Alles auswählen

   mysql_close($verbindung); // Datenbankverbindung schließen für s_nr Ausgabe
   
   $offset += 5;
Viele Grüße,
von dem der solala programmieren kann.
Produktive Version im Web: 2.5.8 und 3.2.3
"Entwicklungs"-Version auf localhost (Ubuntu 13.10): 3.4.2 mit WP 3.9.1
Antworten bekommt nur noch der, der auch grüßt.

Benutzeravatar
solala
Beiträge: 562
Registriert: 23.09.2011, 20:41
Lizenz: wpShopGermany Enterprise

Re: Seriennummern aufnehmen (Rechnung + Lieferschein)

Beitragvon solala » 23.05.2014, 11:57

habe fertig.
Viele Grüße,
von dem der solala programmieren kann.
Produktive Version im Web: 2.5.8 und 3.2.3
"Entwicklungs"-Version auf localhost (Ubuntu 13.10): 3.4.2 mit WP 3.9.1
Antworten bekommt nur noch der, der auch grüßt.


Zurück zu „Allgemeine Fragen zu wpShopGermany“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste