Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision fed28e9e

Von Werner Hahn vor mehr als 7 Jahren hinzugefügt

  • ID fed28e9ef87169617a60a3f4f9b22c93511b537c
  • Vorgänger a6be73a1
  • Nachfolger 6a9e4065

Shopmodul: sql-Updatesfiles für das Shopmodul.
Beinhaltet auch ein hinzufügen der Spalte Auftragssperre in der Tabelle customer sowie das webtemplate billing beim Kunden wo die Auftragssperre eingegeben werden kann

Unterschiede anzeigen:

SL/BackgroundJob/ShopOrderMassTransfer.pm
foreach my $shop_order_id (@{ $job_obj->data_as_hash->{shop_order_record_ids} }) {
my $data = $job_obj->data_as_hash;
my $shop_order = SL::DB::ShopOrder->new(id => $shop_order_id)->load;
# die "can't find shoporder with id $shop_order_id" unless $shop_order;
#TODO Kundenabfrage so ändern, dass es nicht abricht
unless($shop_order){
push @{ $error_report{$shop_order_id} }, 'Shoporder not found';
}
......
my $employee = SL::DB::Manager::Employee->current;
my $items = SL::DB::Manager::ShopOrderItem->get_all( where => [shop_order_id => $shop_order_id],
sort_by => 'partnumber::int' );
# check inventory onhand > 0 and active = 1
my $transferable = 0;
foreach my $item (@$items) {
my $part = SL::DB::Manager::Part->find_by(partnumber => $item->{partnumber});
# TODO: qty direkt aus dem Lager holen und nicht von onhand
$transferable = $part->{onhand} >= $item->{quantity} ? 1 : 0;
$transferable = $part->{active} = 1 ? 1 : 0;
last if $transferable == 0;
}
if ($transferable == 1 && $customer->{order_lock} == 0) {
if ($customer->{order_lock} == 0) {
$shop_order->{shop_order_items} = $items;
my $order = $shop_order->convert_to_sales_order(customer => $customer, employee => $employee);
......
push @{ $data->{shop_orders_ids} }, $shop_order->id;
$job_obj->update_attributes(data_as_hash => $data);
my $delivery_order = $order->convert_to_delivery_order(customer => $customer, employee => $employee);
$delivery_order->save;
my $snumbers = "deliveryordernumber_" . $delivery_order->donumber;
SL::DB::History->new(
trans_id => $delivery_order->id,
snumbers => $snumbers,
employee_id => SL::DB::Manager::Employee->current->id,
addition => 'SAVED',
what_done => 'Shopimport->Order->Deliveryorder(MassTransfer)',
)->save();
$order->link_to_record($delivery_order);
my $delivery_order_items = $delivery_order->{orderitems};
# Lagerentnahme
# entsprechende defaults holen, falls standardlagerplatz verwendet werden soll
my $test = $::instance_conf->get_transfer_default_use_master_default_bin;
require SL::DB::Inventory;
my $rose_db = SL::DB::Inventory->new->db;
my $dbh = $db->dbh;
my $default_warehouse_id;
my $default_bin_id;
my @parts_ids;
my @transfers;
my @errors;
my $qty;
my $stock_out;
require SL::WH;
require SL::IS;
require SL::DB::DeliveryOrderItemsStock;
foreach my $item (@{$delivery_order_items}) {
my ($err, $wh_id, $bin_id) = IS->_determine_wh_and_bin($dbh, $::instance_conf,
$item->{parts_id},
$item->{qty},
$item->{unit}
);
if (!@{ $err } && $wh_id && $bin_id) {
my $delivery_order_items_stock = SL::DB::DeliveryOrderItemsStock->new;
$delivery_order_items_stock->assign_attributes (
'delivery_order_item_id' => $item->{id},
'qty' => $item->{qty},
'unit' => $item->{unit},
'warehouse_id' => $wh_id,
'bin_id' => $bin_id,
);
$delivery_order_items_stock->save;
my ($trans_id) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT nextval('id')|);
my $wh_transfer = SL::DB::Inventory->new;
$wh_transfer->assign_attributes (
'trans_id' => $trans_id,
'employee' => $employee->{id},
'bestbefore' => undef,
'chargenumber' => '',
'shippingdate' => DateTime->today,
'delivery_order_items_stock_id' => $delivery_order_items_stock->id,
'project_id' => '',
'parts_id' => $item->{parts_id},
'qty' => $item->{qty} * -1,
'trans_type_id' => 889,#hardcodiert
'warehouse_id' => $wh_id,
'bin_id' => $bin_id,
'comment' => $main::locale->text("Default transfer delivery order"),
'oe_id' => $delivery_order->{id},
);
$wh_transfer->save;
}
push @errors, @{ $err };
}
if (!@errors) {
$delivery_order->delivered(1);
$delivery_order->save;
}
}
}
}
sql/Pg-upgrade2/customer_orderlock.sql
-- @tag: customer_orderlock
-- @description: Boolean Auftragssperre benötigt bei shoporders
-- @depends: release_3_4_1 shops
-- @ignore: 0
ALTER TABLE customer ADD COLUMN order_lock boolean default 0;
sql/Pg-upgrade2/df_shoporder.sql
-- @tag: df_shoporder
-- @description: Feld Auftragssperre in der shoporder Tabelle
-- @depends: release_3_4_0
ALTER TABLE shop_orders ADD COLUMN df_kivi_customer_order_lock boolean DEFAULT FALSE NOT NULL;
sql/Pg-upgrade2/df_shoporder3.sql
-- @tag: df_shoporder3
-- @description: Feld df_kivi_customer_order_lock in der shoporder Tabelle wieder gelösch da order_lock direkt aus den Kundendaten genommen wird. Tabellen customer und shop_order sind Verknüpft. Spalte obsolete hinzgefügt
-- @depends: release_3_4_0
ALTER TABLE shop_orders DROP COLUMN df_kivi_customer_order_lock;
ALTER TABLE shop_orders ADD COLUMN obsolete boolean DEFAULT FALSE NOT NULL;
sql/Pg-upgrade2/df_shoporder_2.sql
-- @tag: df_shoporder_2
-- @description: Feld Positionen in der shoporder Tabelle
-- @depends: release_3_4_0
ALTER TABLE shop_orders ADD COLUMN positions integer;
sql/Pg-upgrade2/shop_orders.sql
-- @tag: shop_orders
-- @description: Erstellen der Tabellen shop_orders und shop_order_items
-- @depends: release_3_3_0
-- @depends: release_3_4_1 shops
CREATE TABLE shop_orders (
id SERIAL PRIMARY KEY,
......
shop_id integer, --welcher shop bei mehreren
host TEXT, --Hostname vom Shop
remote_ip text, --IP Besteller
transferred boolean DEFAULT FALSE, -- übernommen
transferred boolean DEFAULT FALSE, -- übernommen
transfer_date date, -- Zeit wann übernommen
kivi_customer_id integer, -- Kundenid von Tbl customer wenn übernommen
oe_transid integer, -- id to
oe_transid integer, -- id to
-- Bestell-, Rechnungs- und Lieferadresse. !!Manche Shops bieten sowas!!
-- In der Regel ist aber die Rechnungsadresse die Kundenadresse
-- Bestelldaten des Kunden
......
billing_phone TEXT,
billing_fax TEXT,
billing_email TEXT,
-- SEPA
sepa_account_holder TEXT,
sepa_iban TEXT,
......
delivery_fax TEXT,
delivery_email TEXT,
obsolete boolean DEFAULT FALSE NOT NULL,
positions integer,
itime timestamp DEFAULT now(),
mtime timestamp
);
......
shop_order_id INTEGER REFERENCES shop_orders (id) ON DELETE CASCADE,
description TEXT, -- Artikelbezeichnung
partnumber TEXT,
shop_id INTEGER, --kann als Sortorder benutzt werden
shop_id INTEGER,
position INTEGER,
tax_rate NUMERIC(15,2),
quantity NUMERIC(25,5), -- qty in invoice and orderitems is real, doi is numeric(25,5)
price NUMERIC(15,5)
sql/Pg-upgrade2/shop_orders_2.sql
-- @tag: shop_orders_2
-- @description: Hinzufügen der Spalte Position in der Tabelle shop_order_items
-- @depends: release_3_3_0
ALTER TABLE shop_order_items ADD COLUMN position integer;
sql/Pg-upgrade2/shop_parts.sql
-- @tag: shop_parts
-- @description: Add tables for part information for shop
-- @charset: UTF-8
-- @depends: release_3_3_0 shops
-- @depends: release_3_4_1 shops
-- @ignore: 0
CREATE TABLE shop_parts (
......
sortorder INTEGER,
front_page BOOLEAN NOT NULL DEFAULT false,
active BOOLEAN NOT NULL DEFAULT false, -- rather than obsolete
shop_category TEXT,
meta_tags TEXT,
shop_category TYPE TEXT[] USING array[shop_category;
active_price_source TEXT,
metatag_keywords TEXT,
metatag_keywords TEXT,
metatag_title TEXT,
UNIQUE (part_id, shop_id) -- make sure a shop_part appears only once per shop and part
);
CREATE TRIGGER mtime_shop_parts BEFORE UPDATE ON shop_parts
FOR EACH ROW EXECUTE PROCEDURE set_mtime();
-- CREATE TABLE shop_meta_tags (
-- id integer NOT NULL DEFAULT nextval('shop_parts_id'),
-- description
-- );
-- CREATE TABLE shop_categories (
-- );
sql/Pg-upgrade2/shop_parts_2.sql
-- @tag: shop_parts_2
-- @description: Add tables for part information for shop
-- @charset: UTF-8
-- @depends: release_3_3_0 shops
-- @ignore: 0
ALTER TABLE shop_parts ALTER COLUMN shop_category TYPE TEXT[] USING array[shop_category];
sql/Pg-upgrade2/shop_parts_4.sql
-- @tag: shop_parts_4
-- @description: Add tables for part information for shop
-- @charset: UTF-8
-- @depends: release_3_3_0 shops
-- @ignore: 0
ALTER TABLE shop_parts ADD COLUMN active_price_source text;
ALTER TABLE shop_parts ADD COLUMN metatag_keywords text;
ALTER TABLE shop_parts ADD COLUMN metatag_description text;
ALTER TABLE shop_parts ADD COLUMN metatag_title text;
ALTER TABLE shop_parts DROP COLUMN meta_tags;
sql/Pg-upgrade2/shops.sql
-- @tag: shops
-- @description: Tabelle für Shops
-- @depends: release_3_3_0
-- @depends: release_3_4_1 customer_klass_rename_to_pricegroup_id_and_foreign_key
-- @ignore: 0
CREATE TABLE shops (
......
connector text, -- hardcoded options, e.g. xtcommerce, shopware
pricetype text, -- netto/brutto
price_source text, -- sellprice/listprice/lastcost or pricegroup id
taxzone_id INTEGER,
last_order_number INTEGER,
orders_to_fetch INTEGER,
url text,
port INTEGER,
login text, -- "user" is reserved
sql/Pg-upgrade2/shops2.sql
-- @tag: shops2
-- @description: Alter table shops more columns for configuration
-- @charset: UTF-8
-- @depends: release_3_4_0 shops
-- @ignore: 0
ALTER TABLE shops ADD COLUMN last_order_number integer;
ALTER TABLE shops ADD COLUMN orders_to_fetch integer;
sql/Pg-upgrade2/shops3.sql
-- @tag: shops3
-- @description: Alter table shops more columns for configuration
-- @charset: UTF-8
-- @depends: release_3_4_0 shops
-- @ignore: 0
ALTER TABLE shops ADD COLUMN taxzone_id integer;
templates/webpages/customer_vendor/tabs/billing.html
<table width="100%">
<tr height="5"></tr>
<tr>
<th align="right" valign="top" nowrap>[% 'Orderlock' | $T8 %]</th>
<td>
[% L.checkbox_tag('cv.order_lock', checked = SELF.cv.order_lock, for_submit=1) %]
</td>
</tr>
[% IF ( INSTANCE_CONF.get_vertreter ) %]
<tr>

Auch abrufbar als: Unified diff