Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Einkaufen nicht vorrätiger Ware erlauben und gleichzeitig Unikate anbieten

    Zaldoran

    • Fördermitglied
    • Beiträge: 417
    Moinsen.

    In meinem Shop ist es grundsätzlich möglich auch nicht vorrätige Ware zu kaufen. Gleichzeitig werden auch Unikate angeboten, die sich nach dem Verkauf selbstständig deaktivieren sollen. Dabei sollen sie im Shop zwar weiterhin sichtbar bleiben, nur nicht mehr in den Warenkorb gelegt werden können.

    Hierzu hatte ich für modified 1.05 schonmal eine kleine Anpassung gebastelt, die ich jetzt nochmal für 1.06 überarbeitet habe (incl. der Zeilennummern). Im Admin bekommt hiermit jeder Artikel einen neuen Parameter zugewiesen, der folgende Bedeutung hat:

    0 = Normaler Artikel
    1 = Artikel ist ein Unikat (wird beim Verkauf automatisch auf 2 gesetzt)
    2 = Artikel ist ein verkauftes Unikat (kann nicht mehr gekauft werden)

    Wird im Admin entsprechend eine Bestellung oder ein Artikel aus einer Bestellung gelöscht und dem Bestand wieder zugebucht, wird auch ein verkauftes Unikat von 2 wieder auf 1 (verfügbar) zurückgesetzt.

    Vielleicht kann außer mir noch jemand etwas damit anfangen. Das ganze ist immernoch nicht ganz fertig, was noch fehlt wäre beim Aufrufen des Warenkorbs noch eine Überprüfung, ob Artikel im Warenkorb (mittlerweile) verkaufte Unikate sind. Diese sollten - mit entsprechendem Hinweis - dann automatisch gleich aus dem Warenkorb entfernt werden.

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

    Grafiken:

       Datei /templates/mytemplate/buttons/german/button_soldout.gif installieren

    Datenbank:

    Code: SQL  [Auswählen]
    ALTER TABLE `products` ADD COLUMN `products_ooak` INT(4) NOT NULL ;

    Datei: lang/german/admin/categories.php ganz am Ende ergänzen

    Code: PHP  [Auswählen]
            // BOF Zaldoran - 2012-06-19 - OOAK Items
            define('TEXT_PRODUCTS_OOAK','Unikat (0=Nein, 1=Ja, 2=Ja verkauft)');
            // EOF Zaldoran - 2012-06-19 - OOAK Items
     

    Datei: lang/lang_german.conf
    Finde Abschnitt [product_info] (ca. Z. 467) und füge dahinter ein:

    Code: PHP  [Auswählen]
            #BOF Zaldoran - 2012-06-19 - OOAK Items
            text_soldout = 'AUSVERKAUFT!'
            #EOF Zaldoran - 2012-06-19 - OOAK Items

    Finde Abschnitt [index] (ca. Z. 422) und füge dahinter ein:

    Code: PHP  [Auswählen]
            #BOF Zaldoran - 2012-06-19 - OOAK Items
            text_soldout = 'VERKAUFT'
            #EOF Zaldoran - 2012-06-19 - OOAK Items

    Finde Abschnitt [new_products] (ca. Z. 440) und füge dahinter ein:

    Code: PHP  [Auswählen]
            #BOF Zaldoran - 2012-06-19 - OOAK Items
            text_soldout = 'VERKAUFT'
            #EOF Zaldoran - 2012-06-19 - OOAK Items

    Datei: admin/includes/modules/new_product.php
    Finde (ca. Z. 173):

    Code: PHP  [Auswählen]
            <tr>
                    <td><span class="main"><?php echo TEXT_PRODUCTS_EAN; ?></span></td>
            <td><span class="main"><?php echo  xtc_draw_input_field('products_ean', $pInfo->products_ean); ?></span></td>
            </tr>
     

    Füge dahinter ein:

    Code: PHP  [Auswählen]
            <!-- BOF Zaldoran - 2012-06-19 - OOAK Items -->
            <tr>
                    <td><span class="main"><?php echo TEXT_PRODUCTS_OOAK; ?></span></td>
                    <td><span class="main"><?php echo  xtc_draw_input_field('products_ooak', $pInfo->products_ooak); ?></span></td>
            </tr>
            <!-- EOF Zaldoran - 2012-06-19 - OOAK Items -->

    Datei: admin/includes/classes/categories.php
    Finde (ca. Z. 38):

    Code: PHP  [Auswählen]
    define('ADD_PRODUCTS_FIELDS','products_manufacturers_model');

    Modifiziere wie folgt:

    Code: PHP  [Auswählen]
    define('ADD_PRODUCTS_FIELDS','products_manufacturers_model, products_ooak');

    Datei: includes/modules/product_info.php
    Finde (ca. Z. 164):

    Code: PHP  [Auswählen]
    $info_smarty->assign('PRODUCTS_EAN', $product->data['products_ean']);

    Füge dahinter ein:

    Code: PHP  [Auswählen]
                    // BOF Zaldoran - 2012-06-19 - OOAK Items
                    $info_smarty->assign('PRODUCTS_OOAK', $product->data['products_ooak']);
                    // EOF Zaldoran - 2012-06-19 - OOAK Items

    Datei: includes/classes/product.php
    Finde (ca. Z. 424):

    Code: PHP  [Auswählen]
        $productData = array (
                    'PRODUCTS_NAME' => $array['products_name'],
            'COUNT' => isset($array['ID']) ? $array['ID'] : 0,
            'PRODUCTS_ID'=> $array['products_id'],
            'PRODUCTS_MODEL'=> isset($array['products_model']) ? $array['products_model'] : '',
            'PRODUCTS_VPE' => $this->getVPEtext($array, $products_price['plain']),
            'PRODUCTS_IMAGE' => $this->productImage($array['products_image'], $image),
            'PRODUCTS_LINK' => xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($array['products_id'], $array['products_name'])),
            'PRODUCTS_PRICE' => $products_price['formated'],
            'PRODUCTS_TAX_INFO' => $main->getTaxInfo($tax_rate),
            'PRODUCTS_SHIPPING_LINK' => $main->getShippingLink(),
            'PRODUCTS_BUTTON_BUY_NOW' => $buy_now,
            'PRODUCTS_SHIPPING_NAME'=>$shipping_status_name,
            'PRODUCTS_SHIPPING_IMAGE'=>$shipping_status_image,
            'PRODUCTS_DESCRIPTION' => isset($array['products_description']) ? $array['products_description'] : '', //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_EXPIRES' => isset($array['expires_date']) ? $array['expires_date'] : 0, //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_CATEGORY_URL' => isset($array['cat_url']) ? $array['cat_url'] : '', //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_SHORT_DESCRIPTION' => isset($array['products_short_description']) ? $array['products_short_description'] : '', //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_FSK18' => isset($array['products_fsk18']) ? $array['products_fsk18'] : 0, //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_BUTTON_DETAILS' => '<a href="'.xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($array['products_id'], $array['products_name'])).'">'.xtc_image_button('button_product_more.gif', $array['products_name'].TEXT_NOW).'</a>', //GTB - 2010-08-27 make Button Details global
            'PRODUCTS_QUANTITY' => isset($array['products_quantity']) ? $array['products_quantity'] : '' //Tomcraft - 2010-07-15 - Added PRODUCTS_QUANTITY for further use in template
            );

    Modifiziere wie folgt:

    Code: PHP  [Auswählen]
        $productData = array (
                    'PRODUCTS_NAME' => $array['products_name'],
            'COUNT' => isset($array['ID']) ? $array['ID'] : 0,
            'PRODUCTS_ID'=> $array['products_id'],
            'PRODUCTS_MODEL'=> isset($array['products_model']) ? $array['products_model'] : '',
            'PRODUCTS_VPE' => $this->getVPEtext($array, $products_price['plain']),
            'PRODUCTS_IMAGE' => $this->productImage($array['products_image'], $image),
            'PRODUCTS_LINK' => xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($array['products_id'], $array['products_name'])),
            'PRODUCTS_PRICE' => $products_price['formated'],
            'PRODUCTS_TAX_INFO' => $main->getTaxInfo($tax_rate),
            'PRODUCTS_SHIPPING_LINK' => $main->getShippingLink(),
            'PRODUCTS_BUTTON_BUY_NOW' => $buy_now,

                    // BOF Zaldoran - 2012-06-19 - OOAK Items
                    'PRODUCTS_OOAK' => $array['products_ooak'],
                    // EOF Zaldoran - 2012-06-19 - OOAK Items

            'PRODUCTS_SHIPPING_NAME'=>$shipping_status_name,
            'PRODUCTS_SHIPPING_IMAGE'=>$shipping_status_image,
            'PRODUCTS_DESCRIPTION' => isset($array['products_description']) ? $array['products_description'] : '', //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_EXPIRES' => isset($array['expires_date']) ? $array['expires_date'] : 0, //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_CATEGORY_URL' => isset($array['cat_url']) ? $array['cat_url'] : '', //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_SHORT_DESCRIPTION' => isset($array['products_short_description']) ? $array['products_short_description'] : '', //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_FSK18' => isset($array['products_fsk18']) ? $array['products_fsk18'] : 0, //DokuMan - 2010-02-26 - set Undefined index
            'PRODUCTS_BUTTON_DETAILS' => '<a href="'.xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($array['products_id'], $array['products_name'])).'">'.xtc_image_button('button_product_more.gif', $array['products_name'].TEXT_NOW).'</a>', //GTB - 2010-08-27 make Button Details global
            'PRODUCTS_QUANTITY' => isset($array['products_quantity']) ? $array['products_quantity'] : '' //Tomcraft - 2010-07-15 - Added PRODUCTS_QUANTITY for further use in template
            );
     

    Datei: includes/modules/default.php
    Finde (ca. Z. 209):

    Code: PHP  [Auswählen]
            $listing_sql = "-- /includes/modules/default.php
            SELECT "
    .$select."
                    p.products_id,
                p.products_ean,
                p.products_quantity,
                p.products_shippingtime,
                p.products_model,
                p.products_image,
                p.products_price,
                p.products_discount_allowed,
                p.products_weight,
                p.products_tax_class_id,
                p.manufacturers_id,
                p.products_fsk18,
                p.products_vpe,
                p.products_vpe_status,
                p.products_vpe_value,
                pd.products_name,
                pd.products_description,
                pd.products_short_description

    Modifiziere wie folgt:

    Code: PHP  [Auswählen]
            $listing_sql = "-- /includes/modules/default.php
            SELECT "
    .$select."
                    p.products_id,
                p.products_ean,
                p.products_ooak,
                p.products_quantity,
                p.products_shippingtime,
                p.products_model,
                p.products_image,
                p.products_price,
                p.products_discount_allowed,
                p.products_weight,
                p.products_tax_class_id,
                p.manufacturers_id,
                p.products_fsk18,
                p.products_vpe,
                p.products_vpe_status,
                p.products_vpe_value,
                pd.products_name,
                pd.products_description,
                pd.products_short_description

    Datei /checkout_process.php:
    Finde (ca. Z. 246):

    Code: PHP  [Auswählen]
            $stock_query = xtc_db_query("
            select products_quantity
            from "
    .TABLE_PRODUCTS."
            where products_id = '"
    .xtc_get_prid($order->products[$i]['id'])."'");

    Modifiziere wie folgt:

    Code: PHP  [Auswählen]
            // BOF Zaldoran - 2012-06-19 - OOAK Items
            $stock_query = xtc_db_query("
            select products_quantity, products_ooak
            from "
    .TABLE_PRODUCTS."
            where products_id = '"
    .xtc_get_prid($order->products[$i]['id'])."'");
            // EOF Zaldoran - 2012-06-19 - OOAK Items

    Kurz danach finde:

    Code: PHP  [Auswählen]
            // do not decrement quantities if products_attributes_filename exists
            if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
                    $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
            } else {
                    $stock_left = $stock_values['products_quantity'];
            }
     

    Füge dahinter ein:

    Code: PHP  [Auswählen]
            // BOF Zaldoran - 2012-06-19 - OOAK Items
            $products_ooak = $stock_values['products_ooak'];
            if ($products_ooak == 1) {
                    xtc_db_query("update ".TABLE_PRODUCTS." set products_ooak = '2' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
            }
            // EOF Zaldoran - 2012-06-19 - OOAK Items

    Datei /admin/orders_edit.php
    Finde (ca. Z. 743):

    Code: PHP  [Auswählen]
            //BOF - Dokuman - 2010-03-17 - calculate stock correctly when editing orders
            xtc_db_query("UPDATE ".TABLE_PRODUCTS." SET products_quantity = products_quantity + ".xtc_db_input($_POST['del_qty'])." WHERE products_id = " . (int)$_POST['del_pID']);
            //EOF - Dokuman - 2010-03-17 - calculate stock correctly when editing orders
     

    Füge dahinter ein:

    Code: PHP  [Auswählen]
            // BOF Zaldoran - 2012-06-19 - OOAK Items
            $products_query = xtc_db_query("
            select products_ooak
            from "
    .TABLE_PRODUCTS."
            WHERE products_id = "
    . (int)$_POST['del_pID']);
            $products_values = xtc_db_fetch_array($products_query);
            if ($products_values['products_ooak'] == 2) {
                    xtc_db_query("UPDATE ".TABLE_PRODUCTS." SET products_ooak = '1' WHERE products_id = " . (int)$_POST['del_pID']);
            }
            // EOF Zaldoran - 2012-06-19 - OOAK Items

    Datei /admin/includes/functions/general.php
    Finde (ca. Z. 1551):

    Code: PHP  [Auswählen]
            function xtc_remove_order($order_id, $restock = false) {
            if ($restock == 'on') {
            xtc_db_query("update ".TABLE_PRODUCTS." p
                            join "
    .TABLE_ORDERS_PRODUCTS." o on o.products_id = p.products_id
                            set p.products_quantity = p.products_quantity + o.products_quantity,
                                    p.products_ordered = p.products_ordered - o.products_quantity
                            where o.orders_id = '"
    .xtc_db_input($order_id)."'");

    Füge dahinter ein:

    Code: PHP  [Auswählen]
                    // BOF Zaldoran - 2012-06-19 - OOAK Items
                    xtc_db_query("update ".TABLE_PRODUCTS." p
                             join "
    .TABLE_ORDERS_PRODUCTS." o on o.products_id = p.products_id
                         set p.products_ooak = 1
                             where o.orders_id = '"
    .xtc_db_input($order_id)."' AND p.products_ooak = 2");
                    // BOF Zaldoran - 2012-06-19 - OOAK Items

    Die Anpassungen im Template sind bereits auf mein Template zurechtgemünzt, und müssen unter Umständen angepasst werden!

    Datei: templates/mytemplate/module/product_info/product_info_tabs_v1.html
    Finde:

    Code: XML  [Auswählen]
            {if $SHIPPING_NAME}<p class="shippingtime"><strong>{#text_shippingtime#}</strong>{if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if} {$SHIPPING_NAME}</p>
            {/if}

    Ersetze durch:

    Code: XML  [Auswählen]
            <!-- BOF Zaldoran - 2012-06-19 - OOAK Items -->
            {if $PRODUCTS_OOAK != 2}
                    {if $SHIPPING_NAME}<p class="shippingtime"><strong>{#text_shippingtime#}</strong>{if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if} {$SHIPPING_NAME}</p>
                    {/if}
            {else}
                    <p class="shippingtime"><strong>{#text_shippingtime#}&nbsp;&nbsp;{#text_soldout#}</strong><p>
            {/if}
            <!-- EOF Zaldoran - 2012-06-19 - OOAK Items -->
     

    Finde:

    Code: XML  [Auswählen]
    <div class="addtobasket-tabs"><div class="add-Qty-tabs">{$ADD_QTY}</div><span>{$ADD_CART_BUTTON}</span></div>

    Ersetze durch:

    Code: XML  [Auswählen]
            <!-- BOF Zaldoran - 2012-06-19 - OOAK Items -->
            {if $PRODUCTS_OOAK != 2}
                    <div class="addtobasket-tabs"><div class="add-Qty-tabs">{$ADD_QTY}</div><span>{$ADD_CART_BUTTON}</span></div>
            {else}
                    <div class="addtobasket-tabs"><span style="left:33px;"><img src="{$tpl_path}buttons/{$language}/button_soldout.gif" alt="{#text_soldout#}" /></span></div>
            {/if}
            <!-- EOF Zaldoran - 2012-06-19 - OOAK Items -->

    Folgende Änderung in diesen Dateien vornehmen:
    Datei: templates/mytemplate/module/product_listing/product_listing_v1.html
    Datei: templates/mytemplate/module/new_products.html
    Datei: templates/mytemplate/module/new_products_overview.html
    Datei: templates/mytemplate/module/new_products_default.html
    Bei Bedarf auch noch in templates/mytemplate/module/cross_selling.html und specials.html

    Finde:

    Code: XML  [Auswählen]
    <p class="price">{$module_data.PRODUCTS_PRICE}</p><div class="clear"></div></div>

    Ersetze durch:

    Code: XML  [Auswählen]
            <!-- BOF Zaldoran - 2012-06-19 - OOAK Items -->
            {if $module_data.PRODUCTS_OOAK !=2}
                    <p class="price">{$module_data.PRODUCTS_PRICE}</p><div class="clear"></div></div>
            {else}
                    <p class="price">{#text_soldout#}</p><div class="clear"></div></div>
            {/if}
            <!-- EOF Zaldoran - 2012-06-19 - OOAK Items -->


    Linkback: https://www.modified-shop.org/forum/index.php?topic=24230.0
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware

    jannemann

    • modified Team
    • Beiträge: 6.275
    • Geschlecht:
    Hallo Zaldoran,

    wow, herzlichen Dank fürs Teilen deiner Lösung!  :thumbs:
    Das können sicherlich viele gebrauchen.

    Schöne Grüße,
    Jan
               
    anything