Updates to 03-2025
This commit is contained in:
parent
6167273a48
commit
9b54eb0512
348 changed files with 34535 additions and 5774 deletions
|
|
@ -3,7 +3,9 @@
|
|||
"MS": "Frau",
|
||||
"please select": "Bitte w\u00e4hlen",
|
||||
"further countries": "weitere L\u00e4nder",
|
||||
"no": "Keine",
|
||||
"none": "Keine",
|
||||
"no": "Nein",
|
||||
"yes": "JA",
|
||||
"Company data": "Firmendaten",
|
||||
"Company name": "Firmenname",
|
||||
"Street": "Stra\u00dfe",
|
||||
|
|
@ -164,8 +166,9 @@
|
|||
"go to login": "zur Anmeldung",
|
||||
"Please confirm your data first.": "Bitte \u00fcberpr\u00fcfen Deine Daten als erstes und best\u00e4tige diese.",
|
||||
"yes, data checked and share": "Ja, Daten \u00fcberpr\u00fcft und jetzt freigeben",
|
||||
"Declaration of shop": "Hiermit best\u00e4tige und akzeptiere ich die Nutzungsbedinungen zu meinem mivita-Shop.",
|
||||
"Declaration of shop": "Hiermit best\u00e4tige und akzeptiere ich die Nutzungsbedinungen zu meinem Shop.",
|
||||
"Your Shop": "Dein Shop",
|
||||
"Shop": "Shop",
|
||||
"Terms of Use": "Nutzungsbedingungen",
|
||||
"Your Shop Name": "Gib deinem Shop einen Namen",
|
||||
"Choose Your Shop Name": "W\u00e4hle einen einpr\u00e4gsamen Shop-Namen, der zu Dir passt.",
|
||||
|
|
@ -187,13 +190,14 @@
|
|||
"active since": "Aktiv seit",
|
||||
"open since": "Er\u00f6ffnet seit",
|
||||
"Domain": "Domain",
|
||||
"Account": "Account",
|
||||
"name": "Name",
|
||||
"not available copy": "Bei neu angelegten Shops dauert es einige Minuten, bis die Domain zu erreichen ist. Bitte schaue in einigen Minuten noch einmal nach.",
|
||||
"shop image": "Dein Shop Bild",
|
||||
"shop image copy": "Lade hier ein Foto \/ Bild \/ Logo von Dir hoch.",
|
||||
"shop on site": "F\u00fcr Dich vor Ort:",
|
||||
"shop on site copy": "Warst du auf der Aloe Vera Farm auf Mallorca? Lade hier bis zu 6 Bilder von Dir hoch.",
|
||||
"open your shop": "Er\u00f6ffne Deinen eigenen mivita-Shop",
|
||||
"open your shop": "Er\u00f6ffne Deinen eigenen Shop",
|
||||
"settings your shop": "Deine Shop-Einstellungen",
|
||||
"taxable_sales_1": "umsatzsteuerpflichtig (Ich mache eine UST-Voranmeldung pro Monat \/ Quartal \/ Jahr ans Finanzamt)",
|
||||
"taxable_sales_2": "nicht umsatzsteuerpflichtig (Kleinunternehmer im Sinne von \u00a7 19)"
|
||||
|
|
|
|||
45
resources/lang/de/account.php
Normal file
45
resources/lang/de/account.php
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
return array (
|
||||
'' => '',
|
||||
'BIC' => 'BIC',
|
||||
'IBAN' => 'IBAN',
|
||||
'VAT_ID_number' => 'USt-ID Nummer',
|
||||
'VAT_copy_1' => 'Wähle Kleinunternehmer, wenn Du nicht mehr als 22.000 EUR Umsatz pro Jahr mit Deinem Gewerbe erwirtschaftest.',
|
||||
'VAT_liability' => 'Umsatzsteuerpflicht',
|
||||
'account_holder' => 'Kontoinhaber',
|
||||
'bank_data' => 'Bankdaten',
|
||||
'delivery_address' => 'Lieferadresse',
|
||||
'firstname_lastname' => 'Vorname Nachname',
|
||||
'invoice_address' => 'Rechnungsadresse',
|
||||
'my_credit' => 'Mein Guthaben',
|
||||
'vat_data' => 'Steuerdaten',
|
||||
'info_vat_numbers' => 'Hinweis: Bitte Steuernummer und/oder USt-ID Nummer angeben!*',
|
||||
'new_vat_validate' => 'Neue UST-ID validieren und Reverse Charge Verfahren aktivieren',
|
||||
'btn_vat_validate' => 'USt-ID Nummer validieren',
|
||||
'phone_need_error' => 'Fehler: Bitte Telefon und/oder Mobiltelefon angeben!*',
|
||||
'phone_need_note' => 'Hinweis: Bitte Telefon und/oder Mobiltelefon angeben!*',
|
||||
'required_for_commission_payments' => 'Wird für die Auszahlungen von Provisionen benötigt',
|
||||
'reverse_charge_action_1' => 'Reverse Charge Verfahren und UST-ID löschen',
|
||||
'reverse_charge_action_2' => 'UST-ID validieren und Reverse Charge Verfahren aktivieren',
|
||||
'reverse_charge_copy_1' => 'Umkehrung der Steuerschuldnerschaft oder auch Abzugsverfahren. In diesem Spezialfall muss der Leistungsempfänger (Berater) und nicht der leistende Unternehmer (mivita) die Umsatzsteuer entrichten.',
|
||||
'reverse_charge_note_1' => 'Bei der Aktivierung wird die USt-ID benötigt und validiert.',
|
||||
'reverse_charge_procedure' => 'Reverse Charge Verfahren',
|
||||
'tax_number' => 'Steuernummer',
|
||||
'taxable_sales_1' => 'umsatzsteuerpflichtig (Ich mache eine UST-Voranmeldung pro Monat / Quartal / Jahr ans Finanzamt)',
|
||||
'taxable_sales_2' => 'nicht umsatzsteuerpflichtig (Kleinunternehmer im Sinne von $ 19',
|
||||
'validator_creditcard' => 'Geben Sie bitte eine gültige Kreditkarten-Nummer ein',
|
||||
'validator_date' => 'Bitte geben Sie ein gültiges Datum ein.',
|
||||
'validator_digits' => 'Geben Sie bitte nur Ziffern ein.',
|
||||
'validator_email' => 'Geben Sie bitte eine gültige E-Mail Adresse ein.',
|
||||
'validator_equalTo' => 'Bitte denselben Wert wiederholen.',
|
||||
'validator_max' => 'Geben Sie bitte einen Wert kleiner oder gleich {0} ein.',
|
||||
'validator_maxlength' => 'Geben Sie bitte maximal {0} Zeichen ein.',
|
||||
'validator_min' => 'Geben Sie bitte einen Wert größer oder gleich {0} ein.',
|
||||
'validator_minlength' => 'Geben Sie bitte mindestens {0} Zeichen ein.',
|
||||
'validator_number' => 'Geben Sie bitte eine Nummer ein.',
|
||||
'validator_range' => 'Geben Sie bitte einen Wert zwischen {0} und {1} ein.',
|
||||
'validator_rangelength' => 'Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein.',
|
||||
'validator_required' => 'Dieses Feld ist ein Pflichtfeld.',
|
||||
'validator_url' => 'Geben Sie bitte eine gültige URL ein.',
|
||||
);
|
||||
|
|
@ -1,58 +1,65 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'months' => [
|
||||
'January' =>'Januar',
|
||||
'February' =>'Februar',
|
||||
'March' =>'März',
|
||||
'April' => 'April',
|
||||
'May' => 'Mai',
|
||||
'June' =>'Juni',
|
||||
'July' =>'Juli',
|
||||
'August' =>'August',
|
||||
'September' =>'September',
|
||||
'October' =>'Oktober',
|
||||
'November' =>'November',
|
||||
'December' =>'Dezember',
|
||||
],
|
||||
'months_short' => [
|
||||
'Jan' => 'Jan',
|
||||
'Feb' => 'Feb',
|
||||
'Mar' => 'Mär',
|
||||
'Apr' => 'Apr',
|
||||
'May' => 'Mai',
|
||||
'Jun' => 'Jun',
|
||||
'Jul' => 'Jul',
|
||||
'Aug' => 'Aug',
|
||||
'Sep' => 'Sep',
|
||||
'Oct' => 'Okt',
|
||||
'Nov' => 'Nov',
|
||||
'Dec' =>'Dez'
|
||||
],
|
||||
'weekdays' => [
|
||||
'Sunday' =>'Sonntag',
|
||||
'Monday' =>'Montag',
|
||||
'Tuesday' =>'Dienstag',
|
||||
'Wednesday' =>'Mittwoch',
|
||||
'Thursday' =>'Donnerstag',
|
||||
'Friday' =>'Freitag',
|
||||
'Saturday' =>'Samstag'
|
||||
],
|
||||
'weekdays_short' => [
|
||||
'Sun' => 'So.',
|
||||
'Mon' => 'Mo.',
|
||||
'Tue' => 'Di.',
|
||||
'Wed' => 'Mi.',
|
||||
'Thu' => 'Do.',
|
||||
'Fri' => 'Fr.',
|
||||
'Sat' => 'Sa.'],
|
||||
'weekdays_min' => [
|
||||
'Su' =>'So',
|
||||
'Mo' =>'Mo',
|
||||
'Tu' =>'Di',
|
||||
'We' =>'Mi',
|
||||
'Th' =>'Do',
|
||||
'Fr' =>'Fr',
|
||||
'Sa' =>'Sa'
|
||||
]
|
||||
];
|
||||
return array (
|
||||
'months' =>
|
||||
array (
|
||||
'April' => 'April',
|
||||
'August' => 'August',
|
||||
'December' => 'Dezember',
|
||||
'February' => 'Februar',
|
||||
'January' => 'Januar',
|
||||
'July' => 'Juli',
|
||||
'June' => 'Juni',
|
||||
'March' => 'März',
|
||||
'May' => 'Mai',
|
||||
'November' => 'November',
|
||||
'October' => 'Oktober',
|
||||
'September' => 'September',
|
||||
'full_year' => 'ganzes Jahr',
|
||||
),
|
||||
'months_short' =>
|
||||
array (
|
||||
'Apr' => 'Apr',
|
||||
'Aug' => 'Aug',
|
||||
'Dec' => 'Dez',
|
||||
'Feb' => 'Feb',
|
||||
'Jan' => 'Jan',
|
||||
'Jul' => 'Jul',
|
||||
'Jun' => 'Jun',
|
||||
'Mar' => 'Mär',
|
||||
'May' => 'Mai',
|
||||
'Nov' => 'Nov',
|
||||
'Oct' => 'Okt',
|
||||
'Sep' => 'Sep',
|
||||
),
|
||||
'weekdays' =>
|
||||
array (
|
||||
'Friday' => 'Freitag',
|
||||
'Monday' => 'Montag',
|
||||
'Saturday' => 'Samstag',
|
||||
'Sunday' => 'Sonntag',
|
||||
'Thursday' => 'Donnerstag',
|
||||
'Tuesday' => 'Dienstag',
|
||||
'Wednesday' => 'Mittwoch',
|
||||
),
|
||||
'weekdays_min' =>
|
||||
array (
|
||||
'Fr' => 'Fr',
|
||||
'Mo' => 'Mo',
|
||||
'Sa' => 'Sa',
|
||||
'Su' => 'So',
|
||||
'Th' => 'Do',
|
||||
'Tu' => 'Di',
|
||||
'We' => 'Mi',
|
||||
),
|
||||
'weekdays_short' =>
|
||||
array (
|
||||
'Fri' => 'Fr.',
|
||||
'Mon' => 'Mo.',
|
||||
'Sat' => 'Sa.',
|
||||
'Sun' => 'So.',
|
||||
'Thu' => 'Do.',
|
||||
'Tue' => 'Di.',
|
||||
'Wed' => 'Mi.',
|
||||
),
|
||||
);
|
||||
|
|
|
|||
44
resources/lang/de/msg.php
Normal file
44
resources/lang/de/msg.php
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'shipping_country_was_not_found' => 'Fehler: Das Versandland wurde nicht gefunden',
|
||||
'shipping_country_was_not_correctly' => 'Fehler: Das Versandland wurde dem Warenkorb nicht richtig verarbeitet',
|
||||
'shopping_cart_was_shipping_free' => 'Fehler: Der Warenkorb wurde als Versandkostenfrei angegeben',
|
||||
'shipping_cost_cannot_be_0' => 'Fehler: Die Versandkosten können nicht 0 sein',
|
||||
'shipping_costs_were_not_calculated_correctly' => 'Fehler: Die Versandkosten wurden nicht richtig berechnet',
|
||||
'compensation_products_cannot_be_0' => 'Fehler: Die Kompensationsprodukte können nicht 0 sein.',
|
||||
'link_for_homeparty_not_found' => 'Link für die Auszeitparty wurde nicht gefunden, oder ist nicht mehr aktiv.',
|
||||
'contact_delete' => 'Kontakt gelöscht',
|
||||
'error_occurred_with_order' => 'Es ist ein Fehler bei der Bestellung aufgetreten',
|
||||
'abo_deaktivert' => 'Abo-Option deaktiviert',
|
||||
'error_checkbox_not_confirm' => 'Fehler: Checkbox nicht bestätigt',
|
||||
'no_change_made' => 'keine Änderung vorgenommen',
|
||||
'booked_package_has_been_changed' => 'gebuchtes Paket wurde geändert.',
|
||||
'cancel_membership_is_requested' => 'Mitgliedschaft beenden ist beantragt',
|
||||
'file_uploaded' => 'Datei hochgeladen',
|
||||
'file_empty' => 'Datei leer"',
|
||||
'file_deleted' => 'Datei gelöscht',
|
||||
'file_not_found' => 'Datei nicht gefunden',
|
||||
'country_account_has_been_changed__cost_has_been_reset' => 'Das Rechnungsland wurde geändert und der Warenkrob zurückgesetzt',
|
||||
'your_shopping_cart_is_empty_please_add_products_first.' => 'Dein Warenkorb ist leer, bitte füge erst Produkte hinzu',
|
||||
'homeparty_guest_delete' => 'Auszeitparty Gast gelöscht',
|
||||
'homeparty_delete' => 'Auszeitparty gelöscht',
|
||||
'VATID_could_not_be_validated' => 'Die UST-ID konnte nicht validiert werden, Eingabe bitte prüfen und erneut eingegeben',
|
||||
'VATID_successfully_entered' => 'UST-ID erfolgreich eingetragen',
|
||||
'reverse_charge_procedure_and_VATID_deleted' => 'Reverse Charge Verfahren und UST-ID gelöscht',
|
||||
'no_id_card_deposited_please_upload_first' => 'Kein Ausweis hinterlegt, bitte erst hochladen',
|
||||
'no_trade_licence_deposited_please_upload_first' => 'Kein Gewerbeschein hinterlegt, bitte erst hochladen',
|
||||
'please_enter_reason_why_you_not_need_trade_licence' => 'Bitte gib eine Begründung ein, warum Du keinen Gewerbeschein benötigst',
|
||||
'please_select_compensation_product' => 'Bitte wähle ein Kompensationsprodukt aus',
|
||||
'please_select_count_compensation_products' => ' Bitte wähle :count Kompensationsprodukte aus',
|
||||
'user_not_found' => 'Der Berater wurde nicht gefunden.<br>Der Account wurde deaktiviert oder gelöscht.',
|
||||
'shopping_cart_was_not_user_shop' => 'Fehler: Der Berater hat keinen Shop, die Bestellung kann nicht fortgesetzt werden',
|
||||
'shopping_instance_not_found' => 'Fehler: Es wurde keine ShoppingInstance gefunden',
|
||||
'shopping_user_not_found' => 'Fehler: Es wurde kein ShoppingUser gefunden',
|
||||
];
|
||||
/*
|
||||
{{ __('msg.') }}
|
||||
__('msg.')
|
||||
msg.name
|
||||
*/
|
||||
|
||||
|
|
@ -50,5 +50,8 @@ return [
|
|||
'my_promotions' => 'Meine Promotions',
|
||||
'my_profile' => 'Mein Profil',
|
||||
'recharge_credit'=>'Guthaben aufladen',
|
||||
|
||||
'clients_orders' => 'Kunden Bestellungen',
|
||||
'my' => 'Meine',
|
||||
'sales_volumes' => 'Absatzmengen',
|
||||
'evaluation' => 'Auswertungen'
|
||||
];
|
||||
|
|
|
|||
112
resources/lang/de/order.php
Normal file
112
resources/lang/de/order.php
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
|
||||
return array (
|
||||
'add_customer' => 'Kunden hinzufügen',
|
||||
'advertising_material' => 'Werbemittel',
|
||||
'adviser_collective_invoice' => 'Berater Sammelrechnung',
|
||||
'adviser_order_for_membership' => 'Beraterbestellung für Mitgliedschaft',
|
||||
'adviser_order_for_registration' => 'Beraterbestellung für Registrierung',
|
||||
'art_no' => 'Art-Nr.',
|
||||
'article' => 'Artikel',
|
||||
'article_remove' => 'Artikel entfernen',
|
||||
'assigned_advisor' => 'Berater zuordnen',
|
||||
'assigned_counsellor' => 'Zugewiesener Berater',
|
||||
'billing_address_of_client' => 'Rechnungsadresse des Kunden',
|
||||
'billing_address_of_the_advisor' => 'Rechnungsadresse des Beraters',
|
||||
'client_order_via_shop' => 'Kundenbestellung über Shop',
|
||||
'collective_invoice' => 'Sammelrechnung',
|
||||
'collective_invoice_contains_orders' => 'Sammelrechnung behinhaltet folgende Kundenbestellungen',
|
||||
'compensation_product' => 'Kompensationsprodukt',
|
||||
'confirm_and_proceed_to_checkout' => 'bestätigen und weiter zur Kasse',
|
||||
'confirm_and_proceed_to_order' => 'bestätigen und weiter zur Bestellung',
|
||||
'consultant_order_for_home_party' => 'Beraterbestellung für eine Homeparty',
|
||||
'content' => 'Inhalt',
|
||||
'contents' => 'Inhalte',
|
||||
'create_invoice' => 'Rechnung erstellen',
|
||||
'date' => 'Datum',
|
||||
'delivery_address_of_the_client' => 'Lieferadresse des Kunden',
|
||||
'delivery_address_of_the_consultant' => 'Lieferadresse des Berater',
|
||||
'delivery_country_can_no_longer_be_changed' => 'Das Lieferland kann nicht mehr geändert werden',
|
||||
'delivery_country_changed_customer_info' => 'Das Lieferland kann nur beim Kunden unter <a href=":link">Meine Kunden</a> geändert werden.',
|
||||
'delivery_country_changed_info' => 'Das Lieferland kann nur unter <a href=":link">Meine Daten</a> geändert werden.',
|
||||
'delivery_note' => 'Lieferschein',
|
||||
'delivery_to_me' => 'Lieferung an mich',
|
||||
'delivery_to_the_customer' => 'Lieferung an den Kunden',
|
||||
'deliverydata' => 'Lieferdaten',
|
||||
'different_delivery_address' => 'Abweichende Lieferadresse',
|
||||
'error_no_address_data_found' => 'Fehler: Keine Adressdaten gefunden!',
|
||||
'external_orders' => 'Externe Bestellungen',
|
||||
'external_orders_info_pay' => 'bezahlen = Sammelrechnung erstellen und zum Checkout',
|
||||
'external_orders_info_remove' => 'entfernen = Bestellungen werden nach entfernt verschoben, für Stornos etc.',
|
||||
'external_orders_info_reset' => ' zurücksetzen = Bestellungen werden nur nach offen verschoben, Sammelrechnung werden nicht geändert',
|
||||
'goods_are_for_customer_and_shipped' => 'Ware ist für einen Kunden und wird an den Kunden versendet',
|
||||
'goods_are_for_me_and_shipped' => 'Ware ist für mich und wird an meine Adresse versendet',
|
||||
'gross' => 'brutto',
|
||||
'gross_price' => 'Preis brutto',
|
||||
'incentives' => 'Incentives',
|
||||
'included_VAT' => 'Enthaltene MwSt',
|
||||
'invoice' => 'Rechnung',
|
||||
'invoice_address' => 'Rechnungsadresse',
|
||||
'land_can_no_longer_be_changed' => 'Das Land kann nicht mehr geändert werden',
|
||||
'link_to_the_invoice' => 'Link zur Rechnung',
|
||||
'my_delivery_address' => 'Meine Lieferadresse',
|
||||
'net' => 'netto',
|
||||
'net_price' => 'Preis netto',
|
||||
'no_address_created' => 'Keine Adresse angelegt',
|
||||
'no_career_level_info' => 'Hinweis: Dir wurde noch kein Karriere-Level zugewisen. Bitte wende dich an info@mivita.care',
|
||||
'no_delivery_address' => 'Keine Lieferadresse angelegt ',
|
||||
'no_order' => 'Keine Bestellung',
|
||||
'number_of_items' => 'Anzahl Artikel',
|
||||
'order' => 'Bestellung',
|
||||
'order_consultant' => 'Bestellung Berater',
|
||||
'order_date' => 'Bestelldatum',
|
||||
'order_for_client' => 'Bestellung für Kunde',
|
||||
'order_for_consultant' => 'Bestellung für Berater',
|
||||
'order_number' => 'Bestellnummer',
|
||||
'order_via_external_shop' => 'Bestellung über externen SHOP',
|
||||
'plus_VAT' => 'zzgl. MwSt',
|
||||
'points' => 'Points',
|
||||
'points_total' => 'Points gesamt',
|
||||
'points_turnover_assigned' => 'Punkte / Umsatz zugewiesen',
|
||||
'product' => 'Produkt',
|
||||
'product_prices_career_level_info' => 'Die Produktpreise (Mein Preis) werden entsprechend Deinem Karriere-Level <strong>:user_level_name</strong> abzüglich <strong>:user_level_margin %</strong> Marge angezeigt und brechnet.<br>Hinweis: Wenn Du den die Seite verlässt, wird der Warenkorb zurückgesetzt.',
|
||||
'product_prices_career_level_cpay_info' => 'Die Produktpreise werden als Kunden VK-Preise angezeigt, nach Abschluss der Kundenzahlung erhälst du Deine Provision entsprechend Deinem Karriere-Level <strong>:user_level_name</strong> Provision <strong>:user_level_margin %</strong>.<br>Hinweis: Wenn Du den die Seite verlässt, wird der Warenkorb zurückgesetzt.',
|
||||
'purchased_from_shop' => 'Gekauft im Shop',
|
||||
'quantity' => 'Anzahl',
|
||||
'ship_to_existing_customer_select_customer' => 'An bestehenden Kunden versenden | Kunden auswählen',
|
||||
'ship_to_new_customer' => 'An neuen Kunden versenden',
|
||||
'ship_to_this_customer' => 'An diesen Kunde versenden',
|
||||
'ship_to_this_customer_check' => 'Mir ist bekannt, dass dieser Bestellvorgang nur für Kundenbestellungen ist und nicht für meine eigenen Bestellungen',
|
||||
'ship_to_this_customer_info' => 'Sollten unten stehende Angaben nicht korrekt sein oder aktualisiert werden müssen, ändere diese bitte vorerst unter',
|
||||
'shipping' => 'Versand',
|
||||
'shipping_compensation_product' => 'Versand Kompensationsprodukt',
|
||||
'shipping_costs' => 'Versandkosten',
|
||||
'shopping_cart' => 'Warenkorb',
|
||||
'shopping_cart_delete' => 'Warenkorb löschen',
|
||||
'shopping_cart_update' => 'Warenkorb aktualisieren',
|
||||
'subtotal' => 'Zwischensumme',
|
||||
'sum' => 'Summe',
|
||||
'sums' => 'Summen',
|
||||
'total' => 'Gesamt',
|
||||
'total_gross' => 'Gesamtsumme brutto',
|
||||
'total_net' => 'Gesamtsumme netto',
|
||||
'total_price' => 'Preis gesamt',
|
||||
'total_shipping_costs' => 'Gesamte Versandkosten',
|
||||
'total_sum' => 'Gesamtsumme',
|
||||
'total_sums' => 'Gesamtsummen',
|
||||
'total_without_VAT' => 'Summe ohne MwSt',
|
||||
'turnover' => 'Umsatz',
|
||||
'unit_price' => 'Einzelpreis',
|
||||
'weight' => 'Gewicht',
|
||||
'you_has_article_in_shopping_cart' => 'Du hast :num Artikel in Deinem Warenkorb',
|
||||
'excl' => 'zzgl.',
|
||||
'ipay' => 'ich zahle',
|
||||
'cpay' => 'Kunde zahlt',
|
||||
'ipay_text' => 'Ich zahle abzüglich meiner Marge und rechne den VK mit meinem Kunden ab',
|
||||
'cpay_text' => 'Mein Kunden bekommt einen Zahlungslink und ich erhalten meine Provision',
|
||||
'sum_net' => 'Summe netto',
|
||||
'confirm_and_send_order' => 'Bestellung abschließen und Zahlungslink versenden',
|
||||
'confirm_send_order_info' => 'Mit dem Abschließen der Bestellung wird ein Zahlungslink erstellt und per E-Mail an Deinen Kunden versendet.<br>Dein Kunde kann dann die Zahlung abschließen und die Ware wird versendet, Deine Provision wird mit dem Abschluss der Zahlung gutgeschrieben.',
|
||||
'order_was_placed_successfully' => 'Die Bestellung wurde erfolgreich aufgegeben.',
|
||||
'payment_link_for_your_customer' => 'Der Bezahllink für Deinen Kunden',
|
||||
);
|
||||
|
|
@ -1,6 +1,136 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'' => '',
|
||||
'BIC' => 'BIC',
|
||||
'IBAN' => 'IBAN',
|
||||
'Mastercard' => 'Mastercard',
|
||||
'VAT' => 'MwSt',
|
||||
'VISA' => 'VISA',
|
||||
'accepted_data_checkbox_customer' => 'Mit Klick auf "Jetzt kaufen" akzeptiere ich die :gtc, die :c_policy und die :p_policy damit für die Bestellung meine Daten verarbeitet werden können.',
|
||||
'accepted_data_checkbox_user' => 'Mit Klick auf "Jetzt kaufen" akzeptiere ich die Allgemeinen Geschäftsbedingungen und die Datenschutzbelehrung, damit für die Bestellung meine Daten verarbeitet werden können.',
|
||||
'account_holder' => 'Kontoinhaber',
|
||||
'agree_SEPA_complete_purchase' => 'SEPA-Lastschriftmandat zustimmen und kauf abschließen',
|
||||
'auto_renewal_hl' => 'Automatische Verlängerung',
|
||||
'auto_renewal_line_1' => 'Sicher ist sicher! Wir empfehlen, diese Option zu aktivieren, wenn Du Deine jährliche Mitgliedschaft dauerhaft bestehen lassen möchtest. Denn geht eine manuelle Zahlung nach Ablauf der Jahresmitgliedschaft nicht zeitig ein, deaktiviert das System Deinen Onlineshop bzw. Deinen Zugang zum Salescenter. Dann kannst Du keine Bestellungen mehr tätigen oder Einblick in Deinen Statistiken erhalten, bis eine erneute Zahlung Deinen Account reaktiviert. Daher raten wir Dir, die Zahlung per SEPA-Lastschrift zu tätigen. Wir speichern dieses Mandat und buchen 14 Tage vor Ablauf Deine Jahresgebühr automatisch ab. So hast Du einen reibungslosen Prozess, ohne dass Du darauf achten musst.',
|
||||
'auto_renewal_line_2' => 'Du kannst diese Option natürlich jederzeit in Deinem Account rückgängig machen bzw. Deinen Account / Deine Vertriebspartnerschaft bei MIVITA kündigen.',
|
||||
'automatic_SEPA_mandate_type_was_selected' => 'Automatische Verlängerung wurde ausgewählt. Dein SEPA-Mandart wird gespeichert und die jährliche Zahlung automatisch ausgeführt.',
|
||||
'back_to_shop' => 'zurück zum Shop',
|
||||
'back_to_shop_shopping_cart' => 'zurück zum Warenkorb',
|
||||
'bank' => 'Bank',
|
||||
'billing_address' => 'Rechnungsadresse',
|
||||
'billing_address_can_only_changed_in_salescentre' => 'Deine Rechnungsadresse kann nur im Salescenter geändert werden.',
|
||||
'buy_now' => 'Jetzt kaufen',
|
||||
'buy_now_copy' => 'Sind alle Deine Angaben vollständig ausgefüllt, klicke auf "Jetzt kaufen" und Du wirst zu unserem Zahlungsanbieter weitergeleitet, die Verbindung ist SSL verschlüsselt.',
|
||||
'c_policy' => 'Widerrufsbelehrung',
|
||||
'checkout_ssl_server' => 'Du wirst auf unseren checkout Server weitergeletet, die Verbindung ist SSL verschlüsselt.',
|
||||
'country_of_delivery' => 'Lieferland',
|
||||
'credit_card' => 'Kreditkarte',
|
||||
'credit_card_number' => 'Kreditkartennummer',
|
||||
'delivery_country_can_only_changed_in_salescentre' => 'Das Lieferland kann nur im Salescenter geändert werden.',
|
||||
'delivery_country_cannot_change' => 'Das Lieferland kann nicht geändert werden.',
|
||||
'excl' => 'zzgl.',
|
||||
'firstname_lastname' => 'Vorname Nachname',
|
||||
'gtc' => 'Allgemeinen Geschäftsbedingungen',
|
||||
'month' => 'Monat',
|
||||
'months' => 'Monate',
|
||||
'ordering_country' => 'Bestellland',
|
||||
'owner' => 'Inhaber',
|
||||
'p_policy' => 'Datenschutzerklärung',
|
||||
'payment_by_SEPA' => 'Bezahlung per SEPA',
|
||||
'payment_by_SEPA_info' => 'Deine Zahlung wird bearbeitet, eine Bestätigung zur Zahlungsabwicklung wird automatisch erstellt.',
|
||||
'payment_by_credit_card' => 'Bezahlung per Kreditkarte:',
|
||||
'payment_by_credit_card_info' => 'Deine Zahlung wurde genehmigt, eine Bestätigung der Zahlung wird automatisch erstellt.',
|
||||
'payment_by_invoice' => 'Bezahlung per Rechnung',
|
||||
'payment_by_invoice_info' => 'Deine Bestellung wird bearbeitet, eine Bestätigung zur Bestellungsabwicklung wird automatisch erstellt',
|
||||
'payment_in_advance' => 'Bezahlung per Vorkasse',
|
||||
'payment_method' => 'Zahlungsart',
|
||||
'payment_method_not_enabled_please_contact' => 'Zahlungsmethode nicht freigeschaltet, bitte wende dich an',
|
||||
'paypal' => 'PayPal',
|
||||
'please_check_form_and_complete' => ' Bitte überprüfe das Formular und vervollständigen alle Angaben.',
|
||||
'please_transfer_amount_following_account' => 'Bitte überweise :amount EUR auf die folgende Kontoverbindung, um den Kauf abzuschließen.',
|
||||
'prepayment' => 'Vorkasse',
|
||||
'purchase_on_account' => 'Rechnungskauf',
|
||||
'reason_for_payment' => 'Verwendungszweck',
|
||||
'remaining_time' => 'Restlaufzeit',
|
||||
'reverse_charge_procedure' => 'Reverse Charge Verfahren',
|
||||
'select_and_proceed_to_checkout' => 'wählen und weiter zur Kasse',
|
||||
'select_and_save' => 'auswählen und speichern',
|
||||
'sepa_direct_debit' => 'SEPA Lastschrift',
|
||||
'sofort_bank_transfer' => 'Sofort -Überweisung',
|
||||
'status' =>
|
||||
array (
|
||||
'checkout_cancel' => ' Zahlungsvorgang Abbruch',
|
||||
'checkout_error' => 'Zahlungsvorgang Fehler',
|
||||
'checkout_payment' => 'Checkout',
|
||||
'payment_approved' => 'Zahlung genehmigt - bitte auf E-Mail warten',
|
||||
'payment_error' => 'Zahlung Fehler',
|
||||
'payment_not_found' => 'Zahlung nicht gefunden',
|
||||
'payment_redirect' => 'Zahlung in Bearbeitung - bitte auf E-Mail warten',
|
||||
'store_payment' => 'Zahlung gespeichert',
|
||||
'success' => 'Erflogreich ausgeführt',
|
||||
'success_payment' => 'Zahlung erflogreich',
|
||||
'txaction_appointed' => 'Zahlung genehmigt - E-Mail wurde gesendet, bitte warten auf Bestätigung',
|
||||
'txaction_failed' => 'Zahlung fehlgeschlagen - E-Mail wurde gesendet',
|
||||
'txaction_paid' => 'Zahlung bestätigt - E-Mail wurde gesendet',
|
||||
),
|
||||
'thank_you_very_much' => 'Vielen Dank,',
|
||||
'total_amount' => 'Gesamtbetrag',
|
||||
'valid until' => 'Gültis bis',
|
||||
'verification_no' => 'Prüfnr.',
|
||||
'we_have_received_your_order_get_email' => 'Deine Bestellung ist bei uns eingegangen. In Kürze erhälst Du von uns eine Bestellbestätigungsmail.',
|
||||
'your_mivita_team' => 'Dein Team von mivita.care',
|
||||
'your_order_number_is' => 'Deine Bestellnummer ist',
|
||||
'open'=>'offen',
|
||||
'paid'=>'bezahlt',
|
||||
'check'=>'prüfen',
|
||||
'cancelled'=>'storniert',
|
||||
|
||||
'failed' => 'abbruch',
|
||||
'no_payment' => 'keine Zahlung',
|
||||
|
||||
'paymend_paid' => 'Zahlung bezahlt',
|
||||
'paymend_open' => 'Zahlung offen',
|
||||
'paymend_failed' => 'Zahlung abbruch',
|
||||
'extern_open' => 'Extern offen', //offen
|
||||
'extern_paid' => 'Extern bezahlt',
|
||||
'invoice_open' => 'Rechnung offen',
|
||||
'invoice_paid' => 'Rechnung bezahlt',
|
||||
'invoice_no_payment' => 'Rechnung keine Zahlung',
|
||||
|
||||
'to_sales_tax_de'=> 'umsatzsteuerpflichtig / DE',
|
||||
'not_to_sales_tax_de'=> 'nicht umsatzsteuerpflichtig / DE',
|
||||
'not_to_sales_tax_foreign'=> 'nicht umsatzsteuerpflichtig / Ausland',
|
||||
|
||||
'ordered'=> 'bestellt',
|
||||
'paid'=> 'bezahlt',
|
||||
'removed'=> 'entfernt',
|
||||
'registration'=> 'Registrierung',
|
||||
|
||||
'not_assigned' => 'nicht zugewiesen',
|
||||
'advisor_order' => 'Beraterbestellung',
|
||||
'credit'=> 'Gutschrift',
|
||||
'shoporder' => 'Shopbestellung',
|
||||
'shoporder_pending' => 'Shopbestellung / pending',
|
||||
'membership'=> 'Mitgliedschaft',
|
||||
'order'=> 'Bestellung',
|
||||
'customer_order'=> 'Kundenbestellung',
|
||||
'homeparty'=> 'Homeparty',
|
||||
'shop'=> 'Shop',
|
||||
'external'=> 'extern',
|
||||
'collective_invoice'=> 'Sammelrechnung',
|
||||
|
||||
'in_process'=> 'in Bearbeitung',
|
||||
'shipped'=> 'versendet',
|
||||
'completed'=> 'abgeschlossen',
|
||||
'trade_fair'=> 'Messe',
|
||||
'commission_shop'=> 'Provision Shop',
|
||||
'commission_payline'=> 'Provision Payline',
|
||||
'commission_growth_bonus'=> 'Provision Wachstumsbonus',
|
||||
'commission_team' => 'Provision Team',
|
||||
'credit_added' => 'Guthaben hinzugefügt',
|
||||
'commission' => 'Provision',
|
||||
|
||||
|
||||
'status' => [
|
||||
'store_payment' => 'Zahlung gespeichert',
|
||||
|
|
@ -25,5 +155,7 @@ return [
|
|||
'user_order_return' => 'Rückführung durch Storno',
|
||||
'promotion_order_deduction' => 'Abzug durch Promotion Produkt',
|
||||
'promotion_order_return' => 'Rückführung durch Promotion Produkt',
|
||||
'charging_credits_add' => 'Guthaben aufgeladen',
|
||||
'charging_credits_remove' => 'Guthaben abgezogen',
|
||||
];
|
||||
|
||||
];
|
||||
52
resources/lang/de/pdf.php
Normal file
52
resources/lang/de/pdf.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'address_top' => 'mivita e.K. • Leinfeld 2 • 87755 Kirchhaslach',
|
||||
'adviser_id' => 'Berater-ID',
|
||||
'date' => 'Datum',
|
||||
'credit_no' => 'Gutschrifts-Nr.',
|
||||
'tax_no' => 'Steuer-Nr',
|
||||
'vat_no' => 'USt-IdNr.',
|
||||
'credit_note' => 'GUTSCHRIFT',
|
||||
'credit_note_from' => 'Gutschrift aus',
|
||||
'amount' => 'Betrag',
|
||||
'vat_text' => 'Mehrwertsteuer',
|
||||
'amount_paid_out_gross' => 'Auszahlungsbetrag (Brutto)',
|
||||
'net_amount' => 'Nettobeträge',
|
||||
'as_a_small_entrepreneur_info' => 'Als Kleinunternehmer im Sinne von § 19 Abs. 1 UStG wird keine Umsatzsteuer berechnet.',
|
||||
'reverse_charge_procedure_info' => 'Reverse-Charge-Verfahren, Umkehr der Steuerschuldnerschaft.',
|
||||
'delivery_note_no' => 'Lieferschein-Nr.',
|
||||
'order_no' => 'Bestell-Nr.',
|
||||
'delivery_note' => 'LIEFERSCHEIN',
|
||||
'we_are_always_there_for_questions' => 'Bei Fragen sind wir jederzeit für Dich da.',
|
||||
'your_advisor' => 'Dein Berater',
|
||||
'eprice' => 'E-Preis',
|
||||
'off' => 'aus',
|
||||
'net' => 'netto',
|
||||
'total_incl_VAT' => 'Summe inkl. der gesetzlichen MwSt.',
|
||||
'ek' => 'EK',
|
||||
'invoice_nr' => 'Rechnungs-Nr.',
|
||||
'points' => 'Points',
|
||||
'points_order' => 'Points Bestellung',
|
||||
'points_shop' => 'Points Shop',
|
||||
'invoice' => 'RECHNUNG',
|
||||
'payment_type' => 'Zahlungsart',
|
||||
'status_of_invoice' => 'Status der Rechnung',
|
||||
'delivery_date_is_invoice_date' => 'Lieferdatum entspricht dem Rechnungsdatum.',
|
||||
'prices_net' => 'Preise netto',
|
||||
'vat_id_of_the_recipient_of_the_service' => 'USt-ID des Leistungsempfängers',
|
||||
'vat_of_the_recipient_of_the_service' => 'Steuernummer des Leistungsempfängers',
|
||||
'invoice_does_not_include_vat' => 'Die Rechnung erfolgt ohne Umsatzsteuer, da vorliegend der Wechsel der Steuerschuldnerschaft (Reverse-Charge-Verfahren) greift.',
|
||||
'vat_is_declared_and_paid_by_recipient' => 'Die Umsatzsteuer ist vom Leistungsempfänger anzumelden und abzuführen.',
|
||||
'tax_free_export_delivery_noteu' => 'Steuerfreie Ausfuhrlieferung ins Drittland',
|
||||
'tax_free_export_delivery_eu' => 'Steuerfreie Ausfuhrlieferung ins EU-Ausland',
|
||||
|
||||
'intended_use' => 'Verwendungszweck',
|
||||
'invoice_footer_info' => ' Bei Kauf auf Rechnung / Vorauskasse, bitte den Gesamtbetrag innerhalb von 5 Werktagen auf unten stehendes Konto überweisen.'
|
||||
|
||||
];
|
||||
/*
|
||||
{{ __('pdf.') }}
|
||||
{{ __('pdf.name') }}
|
||||
pdf.name
|
||||
*/
|
||||
|
|
@ -24,5 +24,11 @@ return [
|
|||
'business_license_now' => 'Gewerbeschein jetzt hochladen',
|
||||
'business_license_later' => 'Ich reiche meinen Gewerbeschein innerhalb der nächsten 4 Wochen nach',
|
||||
'business_license_non' => 'Ich benötige keinen Gewerbeschein',
|
||||
'business_license_non_text' => 'Außerhalb Deutschlands gibt es unterschiedliche Regelungen um Thema Gewerbeschein (z. B. Österreich oder Schweiz). Solltest Du für dieses Business oder zur Zeit keinen Gewerbeschein haben müssen, begründe dies hier bitte kurz:'
|
||||
'business_license_non_text' => 'Außerhalb Deutschlands gibt es unterschiedliche Regelungen um Thema Gewerbeschein (z. B. Österreich oder Schweiz). Solltest Du für dieses Business oder zur Zeit keinen Gewerbeschein haben müssen, begründe dies hier bitte kurz:',
|
||||
'reg_verify_info' => 'Für die Registrierung verifizieren wir Deine E-Mail-Adresse. Im nächsten Schritt bekommst Du eine E-Mail gesendet, mit der Du Deine Registrierung bestätigst. Erst dann ist deine Registrierung abgeschlossen.',
|
||||
'verify_exists-info1' => 'Deine E-Mail-Adresse :email wurde bereits registriert',
|
||||
'verify_exists-info2' => 'Für Deine Registrierung musst Du deine E-Mail-Adresse verifizieren.',
|
||||
'verify_exists-info3' => 'Du kannst Dir erneut eine E-Mail senden lassen, mit der Du Deine Registrierung bestätigst. Erst dann ist deine Registrierung abgeschlossen.',
|
||||
'verify_email' => 'E-Mail verifizieren',
|
||||
'verify_email_again' => 'E-Mail erneut senden'
|
||||
];
|
||||
|
|
|
|||
11
resources/lang/de/shop.php
Normal file
11
resources/lang/de/shop.php
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'default_description' => 'Ich freue mich über Deinen Besuch in meinem grueneseele.bio Onlineshop. Ich bin Deine persönliche Beratung rund um die Produkte und ihrer Anwendung.',
|
||||
'default_user_open' => "Mo-Fr: 9.00 - 18.00 Uhr\nSa: 11.00 - 17.00 Uhr",
|
||||
'headline' => 'Willkommen',
|
||||
'description' => 'Ich freue mich über Deinen Besuch in meinem Partnershop von GRÜNE SEELE. Viel Spaß beim Stöbern und Shoppen!',
|
||||
'greetings' => 'Liebe Grüße',
|
||||
'personal_infos' => 'Weitere persönliche Infos ...',
|
||||
'incl_VAT_plus_shipping' => '* inkl. gesetzl. MwSt. | zzgl. Versandkosten'
|
||||
];
|
||||
79
resources/lang/de/tables.php
Normal file
79
resources/lang/de/tables.php
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
return array (
|
||||
'' => '',
|
||||
'VAT' => 'MwSt',
|
||||
'account' => 'Account',
|
||||
'account_to' => 'Account bis',
|
||||
'activ' => 'Aktiv',
|
||||
'addition' => 'Zusatz',
|
||||
'address' => 'Adresse',
|
||||
'adviser_no' => 'Berater Nr.',
|
||||
'amount' => 'Betrag',
|
||||
'art' => 'Art',
|
||||
'article_no' => 'Artikel-Nr.',
|
||||
'assigned_advisor' => 'zugewiesener Berater',
|
||||
'birthday' => 'Geburtstag',
|
||||
'c_no' => 'G.Nr.',
|
||||
'city' => 'Ort',
|
||||
'commission' => 'Provision',
|
||||
'contents' => 'Inhalt',
|
||||
'country' => 'Land',
|
||||
'created' => 'erstellt',
|
||||
'credit_note' => 'Gutschrift',
|
||||
'customer' => 'Kunde',
|
||||
'date' => 'Datum',
|
||||
'detail' => 'Detail',
|
||||
'earnings' => 'Verdienst',
|
||||
'ek_price' => 'EK-Preis',
|
||||
'email' => 'E-Mail',
|
||||
'firstname' => 'Vorname',
|
||||
'from_credit_balance' => 'aus Guthaben',
|
||||
'gross' => 'brutto',
|
||||
'image' => 'Bild',
|
||||
'in_no' => 'Rechnung-Nr.',
|
||||
'info' => 'Info',
|
||||
'invoice' => 'Rechnung',
|
||||
'label' => 'Bezeichnung',
|
||||
'lastname' => 'Nachname',
|
||||
'level' => 'Level',
|
||||
'line' => 'Linie',
|
||||
'margin' => 'Marge',
|
||||
'mobil' => 'Mobil',
|
||||
'my_price_gross' => 'Mein Preis brutto',
|
||||
'my_price_net' => 'Mein Preis netto',
|
||||
'net' => 'netto',
|
||||
'net_price' => 'Netto-Preis',
|
||||
'net_sales' => 'Umsatz netto',
|
||||
'net_sum' => 'Summe Netto',
|
||||
'newsletter' => 'Newsletter',
|
||||
'note' => 'Notiz',
|
||||
'number' => 'Nummer',
|
||||
'order' => 'Bestellung',
|
||||
'payline_qualification' => 'Payline Qualifikation',
|
||||
'payment' => 'Zahlung',
|
||||
'payment_type' => 'Zahlungsart',
|
||||
'phone' => 'Tel',
|
||||
'points' => 'Points',
|
||||
'postcode' => 'PLZ',
|
||||
'price' => 'Preis',
|
||||
'product' => 'Produkt',
|
||||
'products' => 'Produkte',
|
||||
'purchased_in_the_shop' => 'Gekauft im Shop',
|
||||
'purchases' => 'Käufe',
|
||||
'qualification' => 'Qualifikation',
|
||||
'quantity' => 'Anzahl',
|
||||
'reference_number' => 'Referenznummer',
|
||||
'rf_no' => 'Rf-Nr.',
|
||||
'shipping' => 'Versand',
|
||||
'shop' => 'Shop',
|
||||
'shop_commission' => 'Shop Provision',
|
||||
'sponsor' => 'Sponsor',
|
||||
'status' => 'Status',
|
||||
'subject' => 'Betreff',
|
||||
'sum' => 'Summe',
|
||||
'total' => 'Gesamt',
|
||||
'type' => 'Art',
|
||||
've' => 'VE',
|
||||
'vk_price' => 'VK-Preis',
|
||||
);
|
||||
|
|
@ -213,6 +213,7 @@ return [
|
|||
'sales_partnership_message' => 'Vertriebspartnerschaft Hinweis',
|
||||
'tax_number' => 'Steuernummer',
|
||||
'tax_identification_number' => 'USt-ID Nummer',
|
||||
'user_promotion_url' => "Promotion Domain"
|
||||
'user_promotion_url' => "Promotion Domain",
|
||||
'user_shop_url' => "Shop Domain"
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
@extends('layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card mb-5">
|
||||
<h6 class="card-header">
|
||||
{{__('Attribute')}}
|
||||
</h6>
|
||||
|
|
@ -12,56 +12,118 @@
|
|||
<th style="max-width: 60px;"> </th>
|
||||
<th>{{__('Pos')}}</th>
|
||||
<th>{{__('Description')}}</th>
|
||||
<th>{{__('Translate') }}</th>
|
||||
<th>{{__('Wert') }}</th>
|
||||
<th>{{__('Type') }}</th>
|
||||
<th>{{__('Status')}}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($values as $value)
|
||||
@foreach($attributes as $value)
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
|
||||
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-attribute"
|
||||
data-id="{{ $value->id }}"
|
||||
data-pos="{{ $value->pos }}"
|
||||
data-name="{{ $value->name }}"
|
||||
data-trans_name="{{ json_encode($value->trans_name) }}"
|
||||
data-value="{{ $value->value }}"
|
||||
data-attribute_type_id="{{ $value->attribute_type_id }}"
|
||||
data-active="{{ $value->active }}">
|
||||
<span class="far fa-edit"></span>
|
||||
</button>
|
||||
</td>
|
||||
<td>{{ $value->pos }}</td>
|
||||
<td>{{ $value->name }}</td>
|
||||
<td>{{ $value->getTranNames() }}</td>
|
||||
<td>{{ $value->value }}</td>
|
||||
<td>{{ $value->attribute_type->name }}</td>
|
||||
<td data-sort="{{ $value->active }}">@if($value->active) <span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>@else<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>@endif</td>
|
||||
<td><a class="text-danger" href="{{ route('admin_product_attribute_delete', [$value->id]) }}" onclick="return confirm('{{__('Really delete entry?')}}');"><i class="far fa-trash-alt"></i></a></td>
|
||||
<td><a class="text-danger" href="{{ route('admin_product_attribute_delete', ['attr', $value->id]) }}" onclick="return confirm('{{__('Really delete entry?')}}');"><i class="far fa-trash-alt"></i></a></td>
|
||||
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="mt-4 ml-4">
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-attribute"
|
||||
data-id="new"
|
||||
data-pos=""
|
||||
data-name=""
|
||||
data-value=""
|
||||
data-attribute_type_id=""
|
||||
data-parent_id=""
|
||||
data-active="1">
|
||||
{{__('Neues Attribute erstellen')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h6 class="card-header">
|
||||
{{__('Attribute')}} {{__('Types')}} <br>
|
||||
<span class="text-muted font-weight-normal">
|
||||
Neue Attribute Typen müssen müssen je nach Funktion und Anforderungen einprogrammiert werden
|
||||
</span>
|
||||
</h6>
|
||||
<div class="card-subtitle "> <p><em></em></p></div>
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="datatables-style table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="max-width: 60px;"> </th>
|
||||
<th>{{__('Pos')}}</th>
|
||||
<th>{{__('Description')}}</th>
|
||||
<th>{{__('Beschreibung')}}</th>
|
||||
<th>{{__('Status')}}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($attribute_types as $value)
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-attribute-type"
|
||||
data-id="{{ $value->id }}"
|
||||
data-pos="{{ $value->pos }}"
|
||||
data-name="{{ $value->name }}"
|
||||
data-description="{{ $value->description }}"
|
||||
data-active="{{ $value->active }}">
|
||||
<span class="far fa-edit"></span>
|
||||
</button>
|
||||
</td>
|
||||
<td>{{ $value->pos }}</td>
|
||||
<td>{{ $value->name }}</td>
|
||||
<td>{{ $value->description }}</td>
|
||||
<td data-sort="{{ $value->active }}">@if($value->active) <span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>@else<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>@endif</td>
|
||||
<td><a class="text-danger" href="{{ route('admin_product_attribute_delete', ['type', $value->id]) }}" onclick="return confirm('{{__('Really delete entry?')}}');"><i class="far fa-trash-alt"></i></a></td>
|
||||
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="mt-4 ml-4">
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-attribute-type"
|
||||
data-id="new"
|
||||
data-pos=""
|
||||
data-name=""
|
||||
data-description=""
|
||||
data-parent_id=""
|
||||
data-active="1"
|
||||
|
||||
>{{__('Neues Attribute erstellen')}}</button>
|
||||
>{{__('Neuen Attribute Type erstellen')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modals-default">
|
||||
<div class="modal fade" id="modals-attribute">
|
||||
<div class="modal-dialog">
|
||||
<form class="modal-content" action="{{ route('admin_product_attribute_store') }}" method="post">
|
||||
@csrf
|
||||
<input type="hidden" class="form-control" name="id">
|
||||
<input type="hidden" name="id">
|
||||
<input type="hidden" name="action" value="attribute">
|
||||
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title"> {{__('Attribute')}} <span class="font-weight-light">{{__('create/edit')}}</span></h5>
|
||||
|
|
@ -70,12 +132,25 @@
|
|||
<div class="modal-body">
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col">
|
||||
<div class="form-group col-12">
|
||||
<label for="name" class="form-label">{{__('Name')}}</label>
|
||||
<input type="text" class="form-control" name="name" placeholder="{{__('Bezeichnung')}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-12">
|
||||
<label for="value" class="form-label">{{__('Wert')}} (für die technische Verarbeitung)</label>
|
||||
<input type="text" class="form-control" name="value" placeholder="werden mit # getrennt">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-12">
|
||||
<label for="attribute_type_id" class="form-label">{{__('Attribute Type')}}</label>
|
||||
<select class="selectpicker" name="attribute_type_id" id="attribute_type_id" data-style="btn-light" data-live-search="true" required>
|
||||
{!! HTMLHelper::getAttributeTypes() !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-6">
|
||||
<label class="custom-control custom-checkbox m-2">
|
||||
|
|
@ -108,37 +183,89 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modals-attribute-type">
|
||||
<div class="modal-dialog">
|
||||
<form class="modal-content" action="{{ route('admin_product_attribute_store') }}" method="post">
|
||||
@csrf
|
||||
<input type="hidden" name="id">
|
||||
<input type="hidden" name="action" value="attribute-type">
|
||||
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title"> {{__('Attribute')}} {{__('Type')}} <span class="font-weight-light">{{__('create/edit')}}</span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-12">
|
||||
<label for="name" class="form-label">{{__('Name')}}</label>
|
||||
<input type="text" class="form-control" name="name" placeholder="{{__('Bezeichnung')}}">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group col-12">
|
||||
<label for="description" class="form-label">{{__('Beschreibung')}}</label>
|
||||
<input type="text" class="form-control" name="description" placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-6">
|
||||
<label class="custom-control custom-checkbox m-2">
|
||||
<input type="checkbox" class="custom-control-input" name="active" checked>
|
||||
<span class="custom-control-label">{{__('active')}}</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group col-6">
|
||||
<input type="text" class="form-control" name="pos" placeholder="{{__('Number to move the position if necessary')}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$('#modals-default').on('show.bs.modal', function (event) {
|
||||
$(document).ready(function() {
|
||||
$('#modals-attribute').on('show.bs.modal', function (event) {
|
||||
var button = $(event.relatedTarget);
|
||||
$(this).find(".modal-content input[name='id']").val(button.data('id'));
|
||||
$(this).find(".modal-body input[name='name']").val(button.data('name'));
|
||||
$(this).find(".modal-body input[name='value']").val(button.data('value'));
|
||||
$(this).find(".modal-body input[name='pos']").val(button.data('pos'));
|
||||
$(this).find(".modal-body select[name='parent_id']").val(button.data('parent_id'));
|
||||
$('.selectpicker').selectpicker('refresh');
|
||||
if(button.data('attribute_type_id')){
|
||||
$(this).find(".modal-body select[name='attribute_type_id']").val(button.data('attribute_type_id'));
|
||||
$('.selectpicker').selectpicker('refresh');
|
||||
}
|
||||
$(this).find(".modal-body input[name='active']").prop( "checked", button.data('active'));
|
||||
|
||||
$.each(button.data('trans_name'), function (i, item) {
|
||||
});
|
||||
$('#modals-attribute-type').on('show.bs.modal', function (event) {
|
||||
var button = $(event.relatedTarget);
|
||||
$(this).find(".modal-content input[name='id']").val(button.data('id'));
|
||||
$(this).find(".modal-body input[name='name']").val(button.data('name'));
|
||||
$(this).find(".modal-body input[name='description']").val(button.data('description'));
|
||||
$(this).find(".modal-body input[name='pos']").val(button.data('pos'));
|
||||
// $(this).find(".modal-body select[name='parent_id']").val(button.data('parent_id'));
|
||||
// $('.selectpicker').selectpicker('refresh');
|
||||
$(this).find(".modal-body input[name='active']").prop( "checked", button.data('active'));
|
||||
/*$.each(button.data('trans_name'), function (i, item) {
|
||||
var name = '#trans_'+i;
|
||||
$(name).val(item);
|
||||
});
|
||||
|
||||
|
||||
});*/
|
||||
});
|
||||
|
||||
$('.datatables-style').dataTable({
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 50,
|
||||
"aoColumns": [
|
||||
{ "sWidth": "8%" },
|
||||
{ "sWidth": "8%" },
|
||||
{ "sWidth": "19%" },
|
||||
{ "sWidth": "19%" },
|
||||
{ "sWidth": "30%" },
|
||||
{ "sWidth": "10%" },
|
||||
{ "sWidth": "8%" },
|
||||
],
|
||||
"order": [[ 1, "asc" ]],
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<th>{{__('Kategorie')}}</th>
|
||||
{{--<th>{{__('Kategorie')}}</th>--}}
|
||||
<th>{{__('Headline')}}</th>
|
||||
<th>{{__('Headline')}}</th>
|
||||
<th>{{__('Anzahl')}}</th>
|
||||
<th>{{__('Produkte')}}</th>
|
||||
<th>{{__('sichbar')}}</th>
|
||||
{{-- <th>__('Translate') </th>--}}
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
{{-- <td>@if($value->parent) {{ $value->name }} @else - @endif</td>--}}
|
||||
<td>{{ $value->headline }}</td>
|
||||
<td>{{ $value->product_categories->count() }}</td>
|
||||
<td>{!! implode($value->getShowOnTypes(), '<br>') !!}</td>
|
||||
<td>{!! $value->getShowOnTypes('<br>') !!}</td>
|
||||
|
||||
{{-- <td>{{ $value->getTranNames() }}</td> --}}
|
||||
<td data-sort="{{ $value->active }}">@if($value->active) <span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>@else<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>@endif</td>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
@else
|
||||
| <span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>
|
||||
@endif
|
||||
| <span class="small">{!! implode($product_category->product->getShowOnTypes(), ' / ') !!}</span>
|
||||
| <span class="small">{!! $product_category->product->getShowOnTypes(' / ') !!}</span>
|
||||
| <a href="{{ route('admin_product_edit', [$product_category->product->id]) }}" class="btn btn-xs btn-secondary"><i class="fa fa-eye"></i></a>
|
||||
@else
|
||||
-
|
||||
|
|
|
|||
|
|
@ -50,6 +50,38 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-2">
|
||||
<h5 class="card-header">
|
||||
Lieferland
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="custom-control custom-checkbox">
|
||||
{!! Form::checkbox('eu_country', 1, $country->eu_country, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Reverse Charge Verfahren (Berater aus diesen Ländern (EU-Ausland) können mit ihrer UST-ID steuerfrei kaufen) </span>
|
||||
</label>
|
||||
<p class="small">Hinweis: Die UST-ID muss erst im Kundenkonto des VP verifiziert werden, im Land des VP muss das Reverse Charge Verfahren aktiviert sein. </p>
|
||||
</div>
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="form-label">EU-Land - / Drittland (UST)</label>
|
||||
<div class="custom-controls-stacked">
|
||||
<label class="custom-control custom-radio">
|
||||
{!! Form::radio('supply_country', 0, !$country->supply_country, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">EU-Land (innerhalb dieser Länder wird die UST berechnet, Ausnahme Reverse Charge Verfahren )</span>
|
||||
</label>
|
||||
<label class="custom-control custom-radio">
|
||||
{!! Form::radio('supply_country', 1, $country->supply_country, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Drittland (innerhalb dieser Länder wird <strong>keine</strong> UST berechnert, bsp. Schweiz,)</span>
|
||||
</label>
|
||||
</div>
|
||||
<p class="small">Hinweis: Drittland, die Bestellung ist UST-frei solange die Bestellung in ein Drittland geliefert wird. Wird aus einem Drittland in ein EU-Land geliefert, wird die UST berechnet.
|
||||
Reverse Charge Verfahren kann nur in einem EU-Land angewendet werden, wenn es auch in das selbe Land gesendet wird. Ausnahme DE -> DE.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card mb-2">
|
||||
<h5 class="card-header">
|
||||
Anzeige und Währung
|
||||
|
|
@ -59,35 +91,41 @@
|
|||
<div class="form-group col-sm-12">
|
||||
<label class="custom-control custom-checkbox">
|
||||
{!! Form::checkbox('switch', 1, $country->switch, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Land als Auswahl auf der Webseite anzeigen (Länderwechsel)</span>
|
||||
<span class="custom-control-label">Länderwechsel | Land als Auswahl auf den Shopseiten anzeigen</span>
|
||||
</label>
|
||||
<p class="small">Hinweis: Die hier aktivierten Länder werden auf den Shopseiten zum Länderwächsel angezeigt, allerdings müssen auch die Versandkosten angelegt sein.</p>
|
||||
</div>
|
||||
|
||||
{{--
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="custom-control custom-checkbox">
|
||||
{!! Form::checkbox('switch', 1, $country->switch, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Eigenes Lieferland ()</span>
|
||||
{!! Form::checkbox('translate', 1, $country->translate, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Sprachwechsel | Land als Auswahl auf den Shopseiten und im Salescenter anzeigen</span>
|
||||
</label>
|
||||
<p class="small">Hinweis: Die hier aktivierten Länder werden auf den Shopseiten und im Salescenter zum Sprachwechsel angezeigt, allerdings muss auch die Übersetzung mit dem Länderkürzel ({{ strtolower($country->code) }}) angelegt sein.</p>
|
||||
</div>
|
||||
--}}
|
||||
|
||||
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="custom-control custom-checkbox">
|
||||
{!! Form::checkbox('own_eur', 1, $country->own_eur, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Land hat eigenen EURO Preis</span>
|
||||
</label>
|
||||
<p class="small">Hinweis: Hier kann bei den Produkten der EURO-Preis überschrieben werden, in diesem Land gelten dann höhere oder niedrigere Preise</p>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr class="mt-0">
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="form-label">Eigene Währung</label>
|
||||
<label class="custom-control custom-checkbox">
|
||||
{!! Form::checkbox('currency', 1, $country->currency, ['class'=>'custom-control-input', 'id'=>'currency']) !!}
|
||||
<span class="custom-control-label">Land hat eigene Währung<br>(Währung wird nur zuzsätzlich zum EUR angezeigt, bezahlt wird in EUR)</span>
|
||||
<span class="custom-control-label">Land hat eigene Währung</span>
|
||||
</label>
|
||||
<p class="small">Hinweis: Währung wird nur zuzsätzlich zum EUR angezeigt, wenn für das jeweilige Land bestellt wird, bezahlt wird in EUR</p>
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<label class="form-label" for="currency_unit">Abkürzung der Währung</label>
|
||||
{{ Form::text('currency_unit', $country->currency_unit, array('placeholder'=>__('CHF'), 'class'=>'form-control', 'id'=>'currency_unit')) }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="show_currency_calc" style="display: @if($country->currency) block @else none @endif">
|
||||
<div class="form-row">
|
||||
|
|
@ -95,6 +133,10 @@
|
|||
<hr class="mt-0" >
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<label class="form-label" for="currency_unit">Abkürzung der Währung</label>
|
||||
{{ Form::text('currency_unit', $country->currency_unit, array('placeholder'=>__('CHF'), 'class'=>'form-control', 'id'=>'currency_unit')) }}
|
||||
</div>
|
||||
{{-- <div class="form-group col-sm-6">
|
||||
<label class="form-label">Umrechnungsfaktor zum EUR {{$country->currency_calc}}</label>
|
||||
<div class="custom-controls-stacked">
|
||||
<label class="custom-control custom-radio">
|
||||
|
|
@ -106,17 +148,18 @@
|
|||
<span class="custom-control-label">berechnet den Preis automatisch</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<p class="small">Hinweis: Ist für die Einstellungen bei den Produktenpreisen.</p>
|
||||
</div>--}}
|
||||
<div class="form-group col-sm-6">
|
||||
<label class="form-label" for="currency_faktor">Faktor Währungen zum Euro (z.B. 1 Euro zu 1,07 CHF)</label>
|
||||
{{ Form::text('currency_faktor', formatNumber($country->currency_faktor, 4), array('placeholder'=>__('1,07'), 'class'=>'form-control', 'id'=>'currency_faktor')) }}
|
||||
</div>
|
||||
<p class="small">Hinweis: Der Preis berechnet sich automatisch nach dem Faktor.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card mb-2">
|
||||
<h5 class="card-header">
|
||||
{{trans('register.required_fields')}}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
<th>{{__('Code')}}</th>
|
||||
<th>{{__('Phone')}}</th>
|
||||
<th>{{__('Status')}}</th>
|
||||
<th>{{__('Reverse Charge')}}</th>
|
||||
<th>{{__('Drittland') }}</th>
|
||||
<th>{{__('Länderwechsel')}}</th>
|
||||
<th>{{__('e. Preis')}}</th>
|
||||
<th>{{__('e. Währung')}}</th>
|
||||
|
|
@ -33,6 +35,8 @@
|
|||
<td>{{ $value->code }}</td>
|
||||
<td>{{ $value->phone }}</td>
|
||||
<td data-sort="{{ $value->active }}">{!! get_active_badge($value->active) !!}</td>
|
||||
<td data-sort="{{ $value->eu_country }}">{!! get_active_badge($value->eu_country) !!}</td>
|
||||
<td data-sort="{{ $value->supply_country }}">{!! get_active_badge($value->supply_country) !!}</td>
|
||||
<td data-sort="{{ $value->switch }}">{!! get_active_badge($value->switch) !!}</td>
|
||||
<td data-sort="{{ $value->own_eur }}">{!! get_active_badge($value->own_eur) !!}</td>
|
||||
<td data-sort="{{ $value->currency }}">{!! get_active_badge($value->currency) !!} {{$value->currency_unit}}</td>
|
||||
|
|
@ -61,14 +65,13 @@
|
|||
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
|
||||
$('.datatables-style').dataTable({
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 50,
|
||||
"order": [[ 0, "asc" ]],
|
||||
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
"url": "/js/datatables-{{ \App::getLocale() }}.json"
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
114
resources/views/admin/evaluation/salesvolume.blade.php
Executable file
114
resources/views/admin/evaluation/salesvolume.blade.php
Executable file
|
|
@ -0,0 +1,114 @@
|
|||
@extends('layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card">
|
||||
<h5 class="card-header">
|
||||
{{ __('navigation.products') }} {{ __('navigation.sales_volumes') }}
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
{!! Form::open(['url' => route('admin_evaluation_sales_volumes_download'), 'class' => '']) !!}
|
||||
{!! Form::hidden('key', 'value') !!}
|
||||
<button type="submit" name="action" value="export" class="btn btn-md btn-primary mb-2"><i class="ion ion-md-download"></i> Export als xls</button>
|
||||
<hr>
|
||||
<div class="form-row align-items-center px-0 pb-2 pt-0">
|
||||
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">
|
||||
<select class="custom-select on_change_select_filter" name="product_sales_vol_filter_month">
|
||||
@foreach($filter_months as $key=>$value)
|
||||
<option value="{{$key}}" @if(session('product_sales_vol_filter_month') == $key) selected @endif>{{$value}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">
|
||||
<select class="custom-select on_change_select_filter" name="product_sales_vol_filter_year">
|
||||
@foreach($filter_years as $key=>$value)
|
||||
<option value="{{$value}}" @if(session('product_sales_vol_filter_year') == $value) selected @endif>{{$value}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
|
||||
<div class="card">
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="table table-striped table-bordered" id="datatable-sales-volume">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__('#') }}</th>
|
||||
<th>{{__('tables.product')}}</th>
|
||||
<th>{{__('tables.article_no')}}</th>
|
||||
<th>{{__('tables.quantity')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
$( document ).ready(function() {
|
||||
|
||||
|
||||
var oTable = $('#datatable-sales-volume').DataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
"stateSave": true,
|
||||
"searching": false,
|
||||
ajax: {
|
||||
url: '{!! route('admin_evaluation_sales_volumes_datatable') !!}',
|
||||
data: function(d) {
|
||||
d.product_sales_vol_filter_month = $('select[name=product_sales_vol_filter_month]').val();
|
||||
d.product_sales_vol_filter_year = $('select[name=product_sales_vol_filter_year]').val();
|
||||
}
|
||||
},
|
||||
"order": [[0, "asc" ]],
|
||||
"columns": [
|
||||
{ data: 'id', orderable: true, searchable: false },
|
||||
{ data: 'name', name: 'name', orderable: true, searchable: false },
|
||||
{ data: 'number', name: 'number', orderable: true, searchable: false },
|
||||
{ data: 'value', name: 'value', orderable: true, searchable: false },
|
||||
|
||||
],
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 100,
|
||||
"language": {
|
||||
"url": "/js/datatables-{{ \App::getLocale() }}.json"
|
||||
}
|
||||
});
|
||||
|
||||
$('select.on_change_select_filter').on('change', function(){
|
||||
oTable.draw();
|
||||
});
|
||||
|
||||
$('input.on_keyup_input_filter').on('keyup', function(){
|
||||
oTable.draw();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -40,14 +40,56 @@
|
|||
@include('user.user_form')
|
||||
@endif
|
||||
|
||||
<div class="text-left mt-3">
|
||||
<div class="text-left mt-3 mb-4">
|
||||
<button type="submit" class="btn btn-submit btn-primary">{{ __('save') }}</button>
|
||||
<a href="{{ route('admin_leads') }}" class="btn btn-default">{{ __('back') }}</a>
|
||||
</div>
|
||||
|
||||
{!! Form::close() !!}
|
||||
@if($user->id)
|
||||
@include('admin.lead.m_white_label')
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modal-user-vat-validation">
|
||||
<div class="modal-dialog">
|
||||
{!! Form::open(['url' => route('admin_lead_store'), 'class' => 'modal-content']) !!}
|
||||
<input type="hidden" name="user_id" id="user_id" value="@if($user->id>0){{$user->id}}@else new @endif">
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">{{ __('account.new_vat_validate') }}</span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-12">
|
||||
<p>{{ __('account.reverse_charge_copy_1') }}</p>
|
||||
<p>{{ __('account.reverse_charge_note_1') }}</p>
|
||||
</div>
|
||||
<div class="form-group col-sm-12 {{ $errors->has('reverse_charge') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="tax_identification_number">{{ __('account.VAT_ID_number') }} *</label>
|
||||
{{ Form::text('tax_identification_number', $user->account-> tax_identification_number, array('placeholder'=>__('account.VAT_ID_number'), 'class'=>'form-control', 'id'=>'tax_identification_number', 'required'=>true)) }}
|
||||
|
||||
@if ($errors->has('reverse_charge'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('reverse_charge') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
<button type="submit" class="btn btn-primary" name="action" value="reverse_charge_validate">{{ __('account.btn_vat_validate') }}n</button>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modals-edit-m-data">
|
||||
<div class="modal-dialog">
|
||||
|
|
@ -61,7 +103,7 @@
|
|||
<div class="form-row">
|
||||
<div class="form-group col">
|
||||
<label for="name" class="form-label">{{__('Passwort eingeben')}}</label>
|
||||
<input type="text" class="form-control" name="edit_m_data_key" placeholder="gseele">
|
||||
<input type="text" class="form-control" name="edit_m_data_key" placeholder="gseele" value="gseele">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,77 +1,106 @@
|
|||
@extends('layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
{{ __('Vertriebspartner') }}
|
||||
</h4>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-datatable table-responsive">
|
||||
{{-- <div class="ml-4">
|
||||
<a href="{{ route('admin_lead_edit', ['new']) }}" class="btn btn-sm btn-primary">{{__('Neuen Vertriebspartner erstellen')}}</a>
|
||||
</div>--}}
|
||||
<table class="datatables-leads table table-striped table-bordered">
|
||||
<div class="card-header">
|
||||
{!! Form::open(['url' => route('admin_lead_download'), 'class' => '']) !!}
|
||||
<div class="form-row align-items-center">
|
||||
<div class="col-sm-5 col-md-5">
|
||||
<label class="form-label" for="filter_user_shop_id">Art Vertriebspartner</label>
|
||||
<select class="custom-select on_change_select_filter" name="filter_lead_type_id">
|
||||
<option value="all">Alle Vertriebspartner</option>
|
||||
{!! HTMLHelper::getLeadTypeOptions(session('filter_lead_type_id'), false) !!}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-4 col-md-4">
|
||||
</div>
|
||||
<div class="col-sm-3 col-md-3 text-right">
|
||||
<button type="submit" name="action" value="export" class="btn btn-sm btn-primary mt-2"><i
|
||||
class="ion ion-md-download"></i> Export als xls</button>
|
||||
</div>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
|
||||
</div>
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="table table-striped table-bordered" id="datatables-leads">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{__('E-Mail')}}</th>
|
||||
<th>{{__('Firma')}}</th>
|
||||
<th>{{__('Vorname')}}</th>
|
||||
<th>{{__('Nachname')}}</th>
|
||||
<th>{{__('Level')}}</th>
|
||||
<th>{{__('Mitglied')}}</th>
|
||||
<th>{{__('bis')}}</th>
|
||||
<th>{{__('Umsatz')}}</th>
|
||||
<th>{{__('Sales')}}</th>
|
||||
<th>{{__('verifiziert')}}</th>
|
||||
<th>{{__('freigegeben')}}</th>
|
||||
<th>{{__('Einv.')}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ __('E-Mail') }}</th>
|
||||
<th>{{ __('Firma') }}</th>
|
||||
<th>{{ __('Vorname') }}</th>
|
||||
<th>{{ __('Nachname') }}</th>
|
||||
<th>{{ __('Level') }}</th>
|
||||
<th>{{ __('Art') }}</th>
|
||||
<th>{{ __('Mitglied') }}</th>
|
||||
<th>{{ __('bis') }}</th>
|
||||
<th>{{ __('Umsatz') }}</th>
|
||||
<th>{{ __('Sales') }}</th>
|
||||
<th>{{ __('verifiziert') }}</th>
|
||||
<th>{{ __('freigegeben') }}</th>
|
||||
<th>{{ __('Einv.') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
{{-- <div class="mt-4 ml-4">
|
||||
<a href="{{ route('admin_lead_edit', ['new']) }}" class="btn btn-sm btn-primary">{{__('Neuen Vertriebspartner erstellen')}}</a>
|
||||
</div> --}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$('.datatables-leads').dataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
"ajax": '{!! route('admin_leads_datatable') !!}',
|
||||
"order": [[0, "desc" ]],
|
||||
"columns": [
|
||||
{data: 'id', searchable: false},
|
||||
{ data: 'email', name: 'email' },
|
||||
{ data: 'company', name: 'account.company' },
|
||||
{ data: 'first_name', name: 'account.first_name' },
|
||||
{ data: 'last_name', name: 'account.last_name' },
|
||||
{ data: 'user_level', name: 'user_level' },
|
||||
{ data: 'payment_account', name: 'payment_account' },
|
||||
{ data: 'payment_account_date', name: 'payment_account_date' },
|
||||
{ data: 'turnover', name: 'turnover' },
|
||||
{ data: 'sales_total', name: 'sales_total' },
|
||||
{ data: 'confirmed', name: 'confirmed' },
|
||||
{ data: 'active', name: 'active' },
|
||||
{ data: 'agreement', name: 'agreement' },
|
||||
],
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 50,
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
var oTable = $('#datatables-leads').DataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
"stateSave": true,
|
||||
ajax: {
|
||||
url: '{!! route('admin_leads_datatable') !!}',
|
||||
data: function(d) {
|
||||
d.filter_lead_type_id = $('select[name=filter_lead_type_id]').val();
|
||||
}
|
||||
},
|
||||
"order": [
|
||||
[0, "desc"]
|
||||
],
|
||||
"columns": [{ data: 'id', searchable: false
|
||||
},
|
||||
{ data: 'email', name: 'email' },
|
||||
{ data: 'company', name: 'account.company' },
|
||||
{ data: 'first_name', name: 'account.first_name' },
|
||||
{ data: 'last_name', name: 'account.last_name' },
|
||||
{ data: 'user_level', name: 'user_level' },
|
||||
{ data: 'lead_type', name: 'lead_type' },
|
||||
{ data: 'payment_account', name: 'payment_account' },
|
||||
{ data: 'payment_account_date', name: 'payment_account_date' },
|
||||
{ data: 'turnover', name: 'turnover' },
|
||||
{ data: 'sales_total', name: 'sales_total' },
|
||||
{ data: 'confirmed', name: 'confirmed' },
|
||||
{ data: 'active', name: 'active' },
|
||||
{ data: 'agreement', name: 'agreement' },
|
||||
],
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 50,
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
}
|
||||
});
|
||||
|
||||
$('select.on_change_select_filter').on('change', function(){
|
||||
oTable.draw();
|
||||
});
|
||||
|
||||
$('input.on_keyup_input_filter').on('keyup', function(){
|
||||
oTable.draw();
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
|
|
|
|||
|
|
@ -9,29 +9,37 @@
|
|||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="card-body">
|
||||
<div class="float-right">
|
||||
<button type="button" class="btn btn-sm btn-secondary" data-toggle="modal" data-target="#modals-edit-m-data">
|
||||
<span class="far fa-edit"></span> Vertriebspartner Daten bearbeiten
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body m-0 p-0">
|
||||
<div class="table-responsive">
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>{{ __('Name') }}</th>
|
||||
<th>{{ __('Account ID') }}</th>
|
||||
<th>{{ __('Rolle') }}</th>
|
||||
<th>{{ __('Sponsor') }}</th>
|
||||
<th style="width: 33%">{{ __('Name') }}</th>
|
||||
<th style="width: 66%">{{ __('Account ID') }}</th>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ \App\Services\HTMLHelper::getSalutationLang($user->account->m_salutation) }} {{ $user->account->m_first_name }} {{ $user->account->m_last_name }}</td>
|
||||
<td>{{ $user->account->m_account }}</td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th style="width: 33%">{{ __('Art Vertriebspartner') }}</th>
|
||||
<th style="width: 33%">{{ __('Rolle') }}</th>
|
||||
<th style="width: 33%">{{ __('Sponsor') }}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@if($user->lead_type) {{ $user->lead_type->name }} @else Standard @endif</td>
|
||||
<td>@if($user->user_level){{ $user->user_level->name }}@endif</td>
|
||||
<td>@if($user->m_sponsor){{ $user->getMUserSponsor() }}@endif</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@if($user->account->m_notes)
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
|
@ -42,6 +50,7 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,26 +1,13 @@
|
|||
|
||||
<input type="hidden" name="m_data_edit" value="TSOK">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-4">
|
||||
<label for="m_account" class="form-label">{{ __('Account ID') }} (unique)</label>
|
||||
<span class="badge badge-secondary float-right">Nächste freie ID: {{$next_account_id}}</span>
|
||||
<div class="form-group col-md-2">
|
||||
<label for="m_account" class="form-label mb-1">ID <span class="badge badge-secondary">Nächste freie: {{$next_account_id}}</span></label>
|
||||
|
||||
{{ Form::text('m_account', $user->account->m_account, array('placeholder'=>__('Account ID'), 'class'=>'form-control', 'id'=>'m_account')) }}
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label class="form-label">{{ __('Rolle') }}</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="m_level" id="m_level">
|
||||
{!! HTMLHelper::getUserLevelOptions($user->m_level, false) !!}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label class="form-label">{{ __('Sponsor') }}</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="m_sponsor" id="m_sponsor" data-live-search="true">
|
||||
{!! HTMLHelper::getMembersOptions($user->m_sponsor, true) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-2">
|
||||
<label class="form-label">{{ __('Salutation') }}</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="m_salutation" id="m_salutation">
|
||||
|
|
@ -28,15 +15,37 @@
|
|||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-5">
|
||||
<div class="form-group col-md-4">
|
||||
<label class="form-label" for="first_name">{{ __('First name') }}</label>
|
||||
{{ Form::text('m_first_name', $user->account->m_first_name, array('placeholder'=>__('First name'), 'class'=>'form-control', 'id'=>'m_first_name')) }}
|
||||
</div>
|
||||
<div class="form-group col-md-5">
|
||||
<div class="form-group col-md-4">
|
||||
<label class="form-label" for="last_name">{{ __('Last name') }}</label>
|
||||
{{ Form::text('m_last_name', $user->account->m_last_name, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'id'=>'m_last_name')) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-4">
|
||||
<label class="form-label" for="lead_type_id">{{ __('Art Vertriebspartner') }}</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="lead_type_id" id="lead_type_id">
|
||||
{!! HTMLHelper::getLeadTypeOptions($user->lead_type_id, false) !!}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label class="form-label" for="m_level">{{ __('Rolle') }}</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="m_level" id="m_level">
|
||||
{!! HTMLHelper::getUserLevelOptions($user->m_level, false) !!}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label class="form-label" for="m_sponsor">{{ __('Sponsor') }}</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="m_sponsor" id="m_sponsor" data-live-search="true">
|
||||
{!! HTMLHelper::getMembersOptions($user->m_sponsor, true) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="m_notes">{{ __('weitere Daten') }}</label>
|
||||
{{ Form::textarea('m_notes', $user->account->m_notes , array('placeholder'=>__('weitere Daten'), 'class'=>'form-control', 'id'=>'m_notes', 'rows'=>4)) }}
|
||||
|
|
|
|||
|
|
@ -1,221 +1,240 @@
|
|||
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header">
|
||||
<a href="#" class="@if($show !== 'check_lead' || !$m_data_load) collapsed @endif" data-toggle="collapse" data-target="#collapseMRegister" aria-expanded="@if($show !== 'check_lead' || !$m_data_load) false @else true @endif" aria-controls="collapseMRegister">
|
||||
<i class="fa fa-caret-expand"></i> {{__('Vertriebspartner Status') }}
|
||||
</a>
|
||||
</h5>
|
||||
<div class="collapse @if($show === 'check_lead' || $m_data_load) show @endif" id="collapseMRegister">
|
||||
@if($m_data_load)
|
||||
@include('admin.lead.m_data_form_edit')
|
||||
@endif
|
||||
@if(!$m_data_load)
|
||||
@include('admin.lead.m_data_form')
|
||||
@endif
|
||||
|
||||
|
||||
<div class="card-body mb-2 pb-1">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
|
||||
@if($user->payment_account )
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('Vertriebspartner-Account aktiv')}}</strong> {{__('bis zum:')}} {{ $user->getPaymentAccountDateFormat() }}</p>
|
||||
@else
|
||||
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
|
||||
<strong>{{__('Vertriebspartner-Account inaktiv')}}</strong></p>
|
||||
@endif
|
||||
|
||||
@if($user->active == 1)
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('Daten vollständig, freigeschaltet')}}</strong>: {{ $user->getActiveDateFormat() }}</p>
|
||||
{{--
|
||||
@if($user->files->count())
|
||||
@foreach($user->files()->whereIdentifier('contract')->get() as $file)
|
||||
<a class="btn btn-secondary" href="{{ route('storage_file', [$file->id, 'user']) }}" target="_blank">Vertriebspartnervertrag.pdf</a>
|
||||
@endforeach
|
||||
@endif
|
||||
--}}
|
||||
@else
|
||||
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
|
||||
<strong>{{__('Daten nicht vollständigt, inaktiv')}}</strong></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
@if($user->account_id)
|
||||
@if($user->agreement)
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('Einverständniserklärung')}}</strong>: {{ $user->getAgreementFormat() }}
|
||||
</p>
|
||||
@else
|
||||
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
|
||||
<strong>{{__('Einverständniserklärung')}}</strong> {{ __('nicht akzeptiert') }}</p>
|
||||
@endif
|
||||
@if($user->account->data_protection)
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('Privacy policy approved')}}</strong>: {{ $user->account->getDataProtectionFormat() }}
|
||||
</p>
|
||||
@endif
|
||||
@endif
|
||||
@if($user->confirmed == 1)
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('E-Mail verified')}}</strong>: {{ $user->getConfirmationDateFormat() }}</p>
|
||||
@else
|
||||
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
|
||||
<strong>{{__('E-Mail not verified')}}</strong></p>
|
||||
<a class="btn btn-warning btn-sm" href="{{route('admin_lead_new_mail_verified', $user->id)}}">Neue E-Mail für die Registrierung zusenden</a>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
@if(!$user->active)
|
||||
<hr>
|
||||
@if($user->release_account)
|
||||
<strong>Registrierung abgeschlossen {{ $user->getReleaseAccountFormat() }}</strong>
|
||||
<a href="{{route('admin_lead_released', ['completed', $user->id])}}" class="btn btn-success" onclick="return confirm('Alle Daten vollständig und Vertriebspartner freischalten?');">Die Daten sind vollständigt => Vertriebspartner freischalten</a>
|
||||
<button type="button" class="btn btn-sm btn-danger float-right" data-toggle="modal" data-target="#modals-register-m-data">
|
||||
Vertriebspartner eine E-Mail senden => Daten nicht vollständigt
|
||||
<h5 class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
Vertriebspartner
|
||||
@if(!$m_data_load)
|
||||
<div class="float-right">
|
||||
<button type="button" class="btn btn-sm btn-secondary" data-toggle="modal" data-target="#modals-edit-m-data">
|
||||
<span class="far fa-edit"></span> Vertriebspartner Daten bearbeiten
|
||||
</button>
|
||||
@else
|
||||
<strong><span class="text-danger">Vertriebspartner muss Registrierung noch abschließen</span></strong>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
|
||||
@if($user->wizard !== 100)
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>Registrierungsprozess</h5>
|
||||
@if($user->wizard === 0)
|
||||
<strong>Vertrag zustimmen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 1)
|
||||
<strong>Daten anpassen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 2)
|
||||
<strong>Ausweis hochladen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 3)
|
||||
<strong>Gewerbeschein hochladen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 4)
|
||||
<strong>Paket Auswählen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 5)
|
||||
<strong>Wartet auf Überprüfung</strong><br>
|
||||
<a href="{{route('admin_lead_released', ['reset_switch', $user->id])}}" class="btn btn-danger btn-sm" onclick="return confirm('Wirklich zurücksetzen?');">Vertriebspartner zurücksetzen / Paket auswählen</a>
|
||||
|
||||
@endif
|
||||
@if($user->wizard === 20)
|
||||
<strong>Registrierung abschließen / Paket Zahlung</strong><br>
|
||||
<a href="{{route('admin_lead_released', ['reset_switch', $user->id])}}" class="btn btn-danger btn-sm" onclick="return confirm('Wirklich zurücksetzen?');">Vertriebspartner zurücksetzen / Paket auswählen</a>
|
||||
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
@if($user->active && $user->wizard < 20)
|
||||
<h5>Account ist aktiv</h5>
|
||||
<a href="{{route('admin_lead_released', ['unlock', $user->id])}}" class="btn btn-warning btn-sm" onclick="return confirm('Alle Daten vollständig und Vertriebspartner freischalten?');">Vertriebspartner erneut freischalten</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
@if($user->files->count())
|
||||
<div class="card-body mb-4 pb-1">
|
||||
<div class="table-responsive">
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Ausweisdaten</th>
|
||||
<th>Name</th>
|
||||
<th>Größe</th>
|
||||
<th class="text-right">löschen</th>
|
||||
</tr>
|
||||
@foreach($user->files()->whereIdentifier('id_card')->get() as $file)
|
||||
<tr>
|
||||
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">
|
||||
@if(strtolower($file->ext ) === 'pdf')
|
||||
<object data="{{ route('storage_file', [$file->id, 'user']) }}" type="application/pdf" width="160"></object>
|
||||
@else
|
||||
<img src="{{ route('storage_file', [$file->id, 'user']) }}" alt="" width="160">
|
||||
@endif
|
||||
</a>
|
||||
</td>
|
||||
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">{{ $file->original_name }}</a></td>
|
||||
<td>{{ $file->formatBytes() }}</td>
|
||||
<td class="text-right">
|
||||
<a href="{{ route('admin_lead_delete_file', [$user->id, $file->id, 'upload']) }}" class="btn btn-sm" onclick="return confirm('Datei wirklich löschen?');">
|
||||
<span class="ion ion-md-trash text-danger"></span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<hr>
|
||||
@if($user->account_id)
|
||||
</h5>
|
||||
@if($m_data_load)
|
||||
@include('admin.lead.m_data_form_edit')
|
||||
@endif
|
||||
@if(!$m_data_load)
|
||||
@include('admin.lead.m_data_form')
|
||||
@endif
|
||||
<div class="card mb-4" style="border: none;">
|
||||
<h5 class="card-header">
|
||||
{{-- <a href="#" class="@if($show !== 'check_lead' || !$m_data_load) collapsed @endif" data-toggle="collapse" data-target="#collapseMRegister" aria-expanded="@if($show !== 'check_lead' || !$m_data_load) false @else true @endif" aria-controls="collapseMRegister"> --}}
|
||||
<a href="#" class="collapsed" data-toggle="collapse" data-target="#collapseMRegister" aria-expanded="false" aria-controls="collapseMRegister">
|
||||
<i class="fa fa-caret-expand"></i> {{__('Vertriebspartner Infos') }}
|
||||
</a>
|
||||
</h5>
|
||||
{{-- <div class="collapse @if($show === 'check_lead' || $m_data_load) show @endif" id="collapseMRegister"> --}}
|
||||
<div class="collapse" id="collapseMRegister">
|
||||
<div class="card-body mb-2 pb-1 no-border">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
|
||||
@if($user->account->getNotice('business_license') === 'later')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="bg-warning rounded py-2 px-3">
|
||||
{{__('register.business_license_later')}}
|
||||
@if($user->payment_account )
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('Vertriebspartner-Account aktiv')}}</strong> {{__('bis zum:')}} {{ $user->getPaymentAccountDateFormat() }}</p>
|
||||
@else
|
||||
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
|
||||
<strong>{{__('Vertriebspartner-Account inaktiv')}}</strong></p>
|
||||
@endif
|
||||
|
||||
@if($user->active == 1)
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('Daten vollständig, freigeschaltet')}}</strong>: {{ $user->getActiveDateFormat() }}</p>
|
||||
{{--
|
||||
@if($user->files->count())
|
||||
@foreach($user->files()->whereIdentifier('contract')->get() as $file)
|
||||
<a class="btn btn-secondary" href="{{ route('storage_file', [$file->id, 'user']) }}" target="_blank">Vertriebspartnervertrag.pdf</a>
|
||||
@endforeach
|
||||
@endif
|
||||
--}}
|
||||
@else
|
||||
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
|
||||
<strong>{{__('Daten nicht vollständigt, inaktiv')}}</strong></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
@if($user->account_id)
|
||||
@if($user->agreement)
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('Einverständniserklärung')}}</strong>: {{ $user->getAgreementFormat() }}
|
||||
</p>
|
||||
@else
|
||||
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
|
||||
<strong>{{__('Einverständniserklärung')}}</strong> {{ __('nicht akzeptiert') }}</p>
|
||||
@endif
|
||||
@if($user->account->data_protection)
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('Privacy policy approved')}}</strong>: {{ $user->account->getDataProtectionFormat() }}
|
||||
</p>
|
||||
@endif
|
||||
@endif
|
||||
@if($user->confirmed == 1)
|
||||
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
|
||||
<strong>{{__('E-Mail verified')}}</strong>: {{ $user->getConfirmationDateFormat() }}</p>
|
||||
@else
|
||||
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
|
||||
<strong>{{__('E-Mail not verified')}}</strong></p>
|
||||
<a class="btn btn-warning btn-sm" href="{{route('admin_lead_new_mail_verified', $user->id)}}">Neue E-Mail für die Registrierung zusenden</a>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
@if(!$user->active)
|
||||
<hr>
|
||||
@if($user->release_account)
|
||||
<strong>Registrierung abgeschlossen {{ $user->getReleaseAccountFormat() }}</strong>
|
||||
<a href="{{route('admin_lead_released', ['completed', $user->id])}}" class="btn btn-success" onclick="return confirm('Alle Daten vollständig und Vertriebspartner freischalten?');">Die Daten sind vollständigt => Vertriebspartner freischalten</a>
|
||||
<button type="button" class="btn btn-sm btn-danger float-right" data-toggle="modal" data-target="#modals-register-m-data">
|
||||
Vertriebspartner eine E-Mail senden => Daten nicht vollständigt
|
||||
</button>
|
||||
@else
|
||||
<strong><span class="text-danger">Vertriebspartner muss Registrierung noch abschließen</span></strong>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
|
||||
@if($user->wizard !== 100)
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>Registrierungsprozess</h5>
|
||||
@if($user->wizard === 0)
|
||||
<strong>Vertrag zustimmen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 1)
|
||||
<strong>Daten anpassen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 2)
|
||||
<strong>Ausweis hochladen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 3)
|
||||
<strong>Gewerbeschein hochladen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 4)
|
||||
<strong>Paket Auswählen</strong>
|
||||
@endif
|
||||
@if($user->wizard === 5)
|
||||
<strong>Wartet auf Überprüfung</strong><br>
|
||||
<a href="{{route('admin_lead_released', ['reset_switch', $user->id])}}" class="btn btn-danger btn-sm" onclick="return confirm('Wirklich zurücksetzen?');">Vertriebspartner zurücksetzen / Paket auswählen</a>
|
||||
|
||||
@endif
|
||||
@if($user->wizard === 20)
|
||||
<strong>Registrierung abschließen / Paket Zahlung</strong><br>
|
||||
<a href="{{route('admin_lead_released', ['reset_switch', $user->id])}}" class="btn btn-danger btn-sm" onclick="return confirm('Wirklich zurücksetzen?');">Vertriebspartner zurücksetzen / Paket auswählen</a>
|
||||
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
@if($user->active && $user->wizard < 20)
|
||||
<h5>Account ist aktiv</h5>
|
||||
<a href="{{route('admin_lead_released', ['unlock', $user->id])}}" class="btn btn-warning btn-sm" onclick="return confirm('Alle Daten vollständig und Vertriebspartner freischalten?');">Vertriebspartner erneut freischalten</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
@if($user->files->count())
|
||||
<div class="card-body mb-4 pb-1">
|
||||
<div class="table-responsive">
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Ausweisdaten</th>
|
||||
<th>Name</th>
|
||||
<th>Größe</th>
|
||||
<th class="text-right">löschen</th>
|
||||
</tr>
|
||||
@foreach($user->files()->whereIdentifier('id_card')->get() as $file)
|
||||
<tr>
|
||||
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">
|
||||
@if(strtolower($file->ext ) === 'pdf')
|
||||
<object data="{{ route('storage_file', [$file->id, 'user']) }}" type="application/pdf" width="160"></object>
|
||||
@else
|
||||
<img src="{{ route('storage_file', [$file->id, 'user']) }}" alt="" width="160">
|
||||
@endif
|
||||
</a>
|
||||
</td>
|
||||
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">{{ $file->original_name }}</a></td>
|
||||
<td>{{ $file->formatBytes() }}</td>
|
||||
<td class="text-right">
|
||||
<a href="{{ route('admin_lead_delete_file', [$user->id, $file->id, 'upload']) }}" class="btn btn-sm" onclick="return confirm('Datei wirklich löschen?');">
|
||||
<span class="ion ion-md-trash text-danger"></span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<hr>
|
||||
@if($user->account_id)
|
||||
|
||||
@if($user->account->getNotice('business_license') === 'later')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="bg-warning rounded py-2 px-3">
|
||||
{{__('register.business_license_later')}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@if($user->account->getNotice('business_license') === 'non')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="bg-warning rounded py-2 px-3">
|
||||
<div class="font-weight-semibold mb-1">{{__('register.business_license_non')}}</div>
|
||||
<em>{{$user->account->getNotice('business_license_reason')}}</em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Gewerbenachweis</th>
|
||||
<th>Name</th>
|
||||
<th>Größe</th>
|
||||
<th class="text-right">löschen</th>
|
||||
</tr>
|
||||
@foreach($user->files()->whereIdentifier('business_license')->get() as $file)
|
||||
<tr>
|
||||
<td>
|
||||
<a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">
|
||||
@if(strtolower($file->ext ) == 'pdf')
|
||||
<object data="{{ route('storage_file', [$file->id, 'user']) }}" type="application/pdf" width="160"></object>
|
||||
@else
|
||||
<img src="{{ route('storage_file', [$file->id, 'user']) }}" alt="" width="160">
|
||||
@endif
|
||||
</a>
|
||||
</td>
|
||||
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">{{ $file->original_name }}</a></td>
|
||||
<td>{{ $file->formatBytes() }}</td>
|
||||
<td class="text-right">
|
||||
<a href="{{ route('admin_lead_delete_file', [$user->id, $file->id, 'upload']) }}" class="btn btn-sm" onclick="return confirm('Datei wirklich löschen?');">
|
||||
<span class="ion ion-md-trash text-danger"></span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@if($user->account->getNotice('business_license') === 'non')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="bg-warning rounded py-2 px-3">
|
||||
<div class="font-weight-semibold mb-1">{{__('register.business_license_non')}}</div>
|
||||
<em>{{$user->account->getNotice('business_license_reason')}}</em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Gewerbenachweis</th>
|
||||
<th>Name</th>
|
||||
<th>Größe</th>
|
||||
<th class="text-right">löschen</th>
|
||||
</tr>
|
||||
@foreach($user->files()->whereIdentifier('business_license')->get() as $file)
|
||||
<tr>
|
||||
<td>
|
||||
<a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">
|
||||
@if(strtolower($file->ext ) == 'pdf')
|
||||
<object data="{{ route('storage_file', [$file->id, 'user']) }}" type="application/pdf" width="160"></object>
|
||||
@else
|
||||
<img src="{{ route('storage_file', [$file->id, 'user']) }}" alt="" width="160">
|
||||
@endif
|
||||
</a>
|
||||
</td>
|
||||
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">{{ $file->original_name }}</a></td>
|
||||
<td>{{ $file->formatBytes() }}</td>
|
||||
<td class="text-right">
|
||||
<a href="{{ route('admin_lead_delete_file', [$user->id, $file->id, 'upload']) }}" class="btn btn-sm" onclick="return confirm('Datei wirklich löschen?');">
|
||||
<span class="ion ion-md-trash text-danger"></span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
165
resources/views/admin/lead/m_white_label.blade.php
Normal file
165
resources/views/admin/lead/m_white_label.blade.php
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
@if($m_data_error)
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
<li>{{ $m_data_error }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{{ __('White-Label') }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
{!! Form::open(['url' => route('admin_lead_update')."?show=".$show, 'class' => 'form-horizontal', 'id'=>'white-label-form']) !!}
|
||||
<input type="hidden" name="user_id" value="{{$user->id}}">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="form-label" for="whitelabel_products">Produkte für White-Label hinzufügen</label>
|
||||
<select class="selectpicker" name="whitelabel_products[]" id="whitelabel_products" data-style="btn-light" data-live-search="true" multiple>
|
||||
{!! HTMLHelper::getProductsWhiteLabelOptions([], $user->whitelabel_products()->pluck('product_id')->toArray(), 1) !!}
|
||||
</select>
|
||||
<p class="badge">Hier werden alle Produkte angzeigt, die unter Produkte als White-Label markiert sind.</p>
|
||||
<div>
|
||||
<button type="submit" name="action" value="add_whitelabel_products" class="btn btn-sm btn-submit">Produkte hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@foreach($user->whitelabel_products as $wlp)
|
||||
@if($wlp->product)
|
||||
<div class="card shadow-none bg-transparent mb-2 p-4" style="border-color:rgba(24, 28, 33, 0.2) !important">
|
||||
<div class="form-row">
|
||||
<div class="col-md-12">
|
||||
<div class="float-right">
|
||||
<a href="{{ route('admin_lead_remove', ['remove_whitelabel_product', $user->id, $wlp->id]) }}?show={{ $show }}" class="btn btn-sm btn-danger mt-2 mb-2" onclick="return confirm('Produkt wirklich entfernen?');">Produkt entfernen</a>
|
||||
</div>
|
||||
<h4>{{ $wlp->product->getWhiteLableName() }}</h4>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@foreach($wlp->whitelabel_images as $wlp_image)
|
||||
<div class="col-md-12">
|
||||
<hr>
|
||||
</div>
|
||||
<div class="col-md-3 col-lg-2">
|
||||
<img class="img-fluid" alt="" style="max-height: 200px" src="{{ route('product_image', [$wlp_image->slug]) }}">
|
||||
</div>
|
||||
<div class="col-md-9 col-lg-10">
|
||||
<label class="form-label" for="image_wl_attributes_{{ $wlp_image->id }}">für {{ __('Varianten') }}</label>
|
||||
<select class="selectpicker" name="image_wl_attributes[{{ $wlp_image->id }}][]" id="image_wl_attributes_{{ $wlp_image->id }}" data-style="btn-light" data-live-search="true" multiple>
|
||||
{!! HTMLHelper::getProductAttributesOptions($wlp->product->attribute_variants, $wlp_image->attributes, false, 1) !!}
|
||||
</select>
|
||||
<a href="{{ route('admin_lead_remove', ['remove_whitelabel_label', $user->id, $wlp->id, $wlp_image->id]) }}?show={{ $show }}" class="btn btn-sm btn-danger mt-2 mb-2" onclick="return confirm('Etikett wirklich löschen?');">Etikett löschen</a>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-upload-white-label"
|
||||
data-id="{{ $wlp->id }}">{{__('White Label VP Etikett hochladen')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@endforeach
|
||||
<div class="form-group">
|
||||
<button type="submit" name="action" value="update_whitelabel_products" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
</div>
|
||||
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modals-upload-white-label">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
@csrf
|
||||
<input type="hidden" name="id">
|
||||
<input type="hidden" name="action" value="upload-white-label">
|
||||
|
||||
<style>
|
||||
/* Dropzone */
|
||||
.dropzone {
|
||||
min-height: 230px;
|
||||
border: 2px dashed rgba(0, 0, 0, 0.3);
|
||||
background: white;
|
||||
border-radius: 6px;
|
||||
}
|
||||
.dropzone .dz-message {
|
||||
font-size: 28px;
|
||||
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Upload Etikett White-Label Produkt</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('admin_lead_update') }}?show={{ $show }}" accept-charset="UTF-8" class="avatar" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="hidden" name="id" value="">
|
||||
<input type="hidden" name="user_id" value="{{$user->id}}">
|
||||
<input type="hidden" name="upload_type" value="uwllogo">
|
||||
<input type="hidden" name="action" value="upload_white_label_image">
|
||||
|
||||
|
||||
<div class="slim_holder text-center">
|
||||
<div class="slim" style="margin:20px auto;"
|
||||
data-label='<span class="text-green">Foto-Upload</span><br>(Datei suchen oder Drag & Drop)'
|
||||
data-fetcher="fetch.php"
|
||||
data-size="600,600"
|
||||
data-min-size="200,200"
|
||||
data-max-file-size="10"
|
||||
data-status-image-too-small="Bild zu klein<br>min. $0 Pixel"
|
||||
data-status-file-type="Ungültige Datei<br>bitte nur: $0"
|
||||
data-status-file-size="Die Datei ist zu groß<br>max. $0 MB"
|
||||
data-button-confirm-label="bestätigen"
|
||||
data-button-cancel-label="abbrechen"
|
||||
data-button-confirm-title="bestätigen"
|
||||
data-button-cancel-title="abbrechen"
|
||||
data-button-rotate-title="drehen"
|
||||
data-ratio="1:1">
|
||||
<input type="file" name="images[]" required />
|
||||
</div>
|
||||
<br>
|
||||
<button class="btn btn-primary" type="submit">Bild speichern</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$('#modals-upload-white-label').on('show.bs.modal', function (event) {
|
||||
var button = $(event.relatedTarget);
|
||||
$(this).find(".modal-content input[name='id']").val(button.data('id'));
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
58
resources/views/admin/lead/m_white_label.php
Normal file
58
resources/views/admin/lead/m_white_label.php
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
@if($m_data_error)
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
<li>{{ $m_data_error }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="card-body m-0 p-0">
|
||||
<div class="table-responsive">
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th style="width: 33%">{{ __('Name') }}</th>
|
||||
<th style="width: 66%">{{ __('Account ID') }}</th>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ \App\Services\HTMLHelper::getSalutationLang($user->account->m_salutation) }} {{ $user->account->m_first_name }} {{ $user->account->m_last_name }}</td>
|
||||
<td>{{ $user->account->m_account }}</td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th style="width: 33%">{{ __('Art Vertriebspartner') }}</th>
|
||||
<th style="width: 33%">{{ __('Rolle') }}</th>
|
||||
<th style="width: 33%">{{ __('Sponsor') }}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@if($user->lead_type) {{ $user->lead_type->name }} @else Standard @endif</td>
|
||||
<td>@if($user->user_level){{ $user->user_level->name }}@endif</td>
|
||||
<td>@if($user->m_sponsor){{ $user->getMUserSponsor() }}@endif</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@if($user->account->m_notes)
|
||||
<table class="table card-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>{{ __('weitere Daten') }}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{$user->account->m_notes}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
108
resources/views/admin/lead/types.blade.php
Normal file
108
resources/views/admin/lead/types.blade.php
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
@extends('layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<h6 class="card-header">
|
||||
{{__('Arten Vertriebspartner')}}
|
||||
</h6>
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="datatables-style table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="max-width: 60px;"> </th>
|
||||
<th>{{__('Name')}}</th>
|
||||
<th>{{__('Status')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($values as $value)
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
|
||||
data-id="{{ $value->id }}"
|
||||
data-name="{{ $value->name }}"
|
||||
data-active="{{ $value->active }}">
|
||||
<span class="far fa-edit"></span>
|
||||
</button>
|
||||
</td>
|
||||
<td>{{ $value->name }}</td>
|
||||
<td data-sort="{{ $value->active }}">{!! get_active_badge($value->active) !!}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="mt-4 ml-4">
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
|
||||
data-id="new"
|
||||
data-pos=""
|
||||
data-name=""
|
||||
data-short=""
|
||||
data-max_price=""
|
||||
data-show_on="[]"
|
||||
data-default="1"
|
||||
data-active="1"
|
||||
>{{__('Neue Art Vertriebspartner hinzufügen')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modals-default">
|
||||
<div class="modal-dialog">
|
||||
<form class="modal-content" action="{{ route('admin_lead_types_store') }}" method="post">
|
||||
@csrf
|
||||
<input type="hidden" class="form-control" name="id">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Art Vertriebspartner</span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col">
|
||||
<label for="name" class="form-label">{{__('Name')}}</label>
|
||||
<input type="text" class="form-control" name="name" placeholder="{{__('Bezeichnung')}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-6">
|
||||
<label class="custom-control custom-checkbox m-2">
|
||||
<input type="checkbox" class="custom-control-input" name="active" checked>
|
||||
<span class="custom-control-label">{{__('active')}}</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$('#modals-default').on('show.bs.modal', function (event) {
|
||||
var button = $(event.relatedTarget);
|
||||
$(this).find(".modal-content input[name='id']").val(button.data('id'));
|
||||
$(this).find(".modal-body input[name='name']").val(button.data('name'));
|
||||
$(this).find(".modal-body input[name='active']").prop( "checked", button.data('active'));
|
||||
$('.selectpicker').selectpicker('refresh');
|
||||
});
|
||||
|
||||
$('.datatables-style').dataTable({
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 50,
|
||||
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -79,7 +79,7 @@
|
|||
@if(isset($current->member->account->city)){{$current->member->account->city}} @endif <br>
|
||||
{{$current->member->account->zipcode}} {{$current->member->account->city}}<br>
|
||||
@if($current->member->shop)
|
||||
@if($current->member->isActive() && $current->member->isActiveShop())
|
||||
@if($current->member->isActive())
|
||||
<a href="{{$current->member->shop->getSubdomain(false)}}" class="badge badge-success" target="_blank">{{$current->member->shop->getSubdomain(false)}}</a>
|
||||
@else
|
||||
<span class="badge badge-danger" target="_blank">{{$current->member->shop->getSubdomain(false)}}</span>
|
||||
|
|
@ -102,7 +102,7 @@
|
|||
{{$current->shopping_order->user_shop->user->getFullName()}}<br>
|
||||
{{$current->shopping_order->user_shop->user->account->zipcode}} {{$current->shopping_order->user_shop->user->account->city}}<br>
|
||||
@if($current->shopping_order->user_shop)
|
||||
@if($current->shopping_order->user_shop->user->isActive() && $current->shopping_order->user_shop->user->isActiveShop())
|
||||
@if($current->shopping_order->user_shop->user->isActive())
|
||||
<a href="{{$current->shopping_order->user_shop->getSubdomain(false)}}" class="badge badge-success" target="_blank">{{$current->shopping_order->user_shop->getSubdomain(false)}}</a>
|
||||
@else
|
||||
<span class="badge badge-danger" target="_blank">{{$current->shopping_order->user_shop->getSubdomain(false)}}</span>
|
||||
|
|
@ -189,7 +189,7 @@
|
|||
{{$possible->member->getFullName()}}<br>
|
||||
{{$possible->member->account->zipcode}} {{$possible->member->account->city}}<br>
|
||||
@if($possible->member->shop)
|
||||
@if($possible->member->isActive() && $possible->member->isActiveShop())
|
||||
@if($possible->member->isActive())
|
||||
<a href="{{$possible->member->shop->getSubdomain(false)}}" class="badge badge-success" target="_blank">{{$possible->member->shop->getSubdomain(false)}}</a>
|
||||
@else
|
||||
<span class="badge badge-danger" target="_blank">{{$possible->member->shop->getSubdomain(false)}}</span>
|
||||
|
|
|
|||
37
resources/views/admin/payment/credit/credits-entry.balde.php
Normal file
37
resources/views/admin/payment/credit/credits-entry.balde.php
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<div class="td-entry-table-margin">
|
||||
{!! $entry->badge !!}
|
||||
|
||||
@if($entry->link)
|
||||
<a href="{{ $entry->link }}">
|
||||
@else
|
||||
<span>
|
||||
@endif
|
||||
|
||||
{!! $entry->name !!} /
|
||||
|
||||
@if($entry->reference)
|
||||
{!! $entry->reference !!} /
|
||||
@endif
|
||||
|
||||
@if($entry->total)
|
||||
({!! $entry->total !!})
|
||||
@endif
|
||||
|
||||
@if($entry->date)
|
||||
{!! $entry->date !!} /
|
||||
@endif
|
||||
|
||||
@if(isset($entry->price_formatted))
|
||||
<strong>{!! $entry->price_formatted !!} €</strong>
|
||||
@endif
|
||||
|
||||
@if($entry->link)
|
||||
</a>
|
||||
@else
|
||||
</span>
|
||||
@endif
|
||||
|
||||
@if(isset($entry->delete))
|
||||
{!! $entry->delete !!}
|
||||
@endif
|
||||
</div>
|
||||
37
resources/views/admin/payment/credit/credits-entry.blade.php
Normal file
37
resources/views/admin/payment/credit/credits-entry.blade.php
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<div class="td-entry-table-margin">
|
||||
{!! $entry->badge !!}
|
||||
|
||||
@if($entry->link)
|
||||
<a href="{{ $entry->link }}">
|
||||
@else
|
||||
<span>
|
||||
@endif
|
||||
|
||||
{!! $entry->name !!} /
|
||||
|
||||
@if($entry->reference)
|
||||
{!! $entry->reference !!} /
|
||||
@endif
|
||||
|
||||
@if($entry->total)
|
||||
({!! $entry->total !!})
|
||||
@endif
|
||||
|
||||
@if($entry->date)
|
||||
{!! $entry->date !!} /
|
||||
@endif
|
||||
|
||||
@if(isset($entry->price_formatted))
|
||||
<strong>{!! $entry->price_formatted !!} €</strong>
|
||||
@endif
|
||||
|
||||
@if($entry->link)
|
||||
</a>
|
||||
@else
|
||||
</span>
|
||||
@endif
|
||||
|
||||
@if(isset($entry->delete))
|
||||
{!! $entry->delete !!}
|
||||
@endif
|
||||
</div>
|
||||
37
resources/views/admin/payment/credit/credits-entry.php
Normal file
37
resources/views/admin/payment/credit/credits-entry.php
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<div class="td-entry-table-margin">
|
||||
{!! $entry->badge !!}
|
||||
|
||||
@if($entry->link)
|
||||
<a href="{{ $entry->link }}">
|
||||
@else
|
||||
<span>
|
||||
@endif
|
||||
|
||||
{!! $entry->name !!} /
|
||||
|
||||
@if($entry->reference)
|
||||
{!! $entry->reference !!} /
|
||||
@endif
|
||||
|
||||
@if($entry->total)
|
||||
({!! $entry->total !!})
|
||||
@endif
|
||||
|
||||
@if($entry->date)
|
||||
{!! $entry->date !!} /
|
||||
@endif
|
||||
|
||||
@if(isset($entry->price_formatted))
|
||||
<strong>{!! $entry->price_formatted !!} €</strong>
|
||||
@endif
|
||||
|
||||
@if($entry->link)
|
||||
</a>
|
||||
@else
|
||||
</span>
|
||||
@endif
|
||||
|
||||
@if(isset($entry->delete))
|
||||
{!! $entry->delete !!}
|
||||
@endif
|
||||
</div>
|
||||
|
|
@ -46,77 +46,21 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($ShoppingOrderMargins as $ShoppingOrderMargin)
|
||||
@foreach ($users_credits as $user_credit)
|
||||
<tr>
|
||||
<td>{{ $ShoppingOrderMargin->first_name }}</td>
|
||||
<td>{{ $ShoppingOrderMargin->last_name }}</td>
|
||||
<td>{{ $ShoppingOrderMargin->email }}</td>
|
||||
<td>{!! \App\Services\UserMarign::getMontlyPartnerCommissionOpenByID($ShoppingOrderMargin->user_id, null, true, true) !!} €</td>
|
||||
<td>{{ $user_credit->first_name }}</td>
|
||||
<td>{{ $user_credit->last_name }}</td>
|
||||
<td>{{ $user_credit->email }}</td>
|
||||
<td>{{ formatNumber($user_credit->total) }} €</td>
|
||||
<td>
|
||||
@foreach (\App\Services\UserMarign::getOrderFromPartnerCommissionByID($ShoppingOrderMargin->user_id) as $order)
|
||||
@if($order->shopping_order)
|
||||
<div class="td-entry-table-margin"><a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
|
||||
{{$order->shopping_order->shopping_user->billing_firstname }}
|
||||
{{$order->shopping_order->shopping_user->billing_lastname }}
|
||||
/ {{ $order->shopping_order->getLastShoppingPayment('reference') }}
|
||||
/ {{ $order->shopping_order->getFormattedTotalWithoutCredit()." €" }}
|
||||
/ {{ $order->shopping_order->created_at->format("d.m.Y") }}
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
@foreach (\App\Services\UserMarign::getUserCreditMarginByID($ShoppingOrderMargin->user_id) as $creditMaring)
|
||||
<div class="td-entry-table-margin">
|
||||
<i class="fa fa-plus-circle text-secondary"></i>
|
||||
{!! nl2br($creditMaring->message) !!}
|
||||
/ {{ $creditMaring->created_at->format("d.m.Y") }}
|
||||
@if($deleteTime = $creditMaring->deleteTime())
|
||||
/ <span class="no-line-break">
|
||||
<a class="btn btn-danger btn-xs" href="{{ route('admin_payments_credit_delete', [$creditMaring->id, 'user_credit_margin']) }}" onclick="return confirm('Wirklich löschen?');">
|
||||
<i class="ion ion-ios-trash"></i>
|
||||
</a> noch {{ $deleteTime }} min.
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
@foreach($user_credit->items as $entry)
|
||||
@include('admin.payment.credit.credits-entry', ['entry' => $entry])
|
||||
@endforeach
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-credit"
|
||||
data-userid="{{ $ShoppingOrderMargin->user_id }}"
|
||||
data-email="{{ $ShoppingOrderMargin->email }}"
|
||||
data-back="{{url()->current()}}"
|
||||
data-action="create_credit">
|
||||
<span class="far fa-file-invoice-dollar"></span> <strong>Gutschrift erstellen</strong>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@foreach ($onlyUserCreditMargins as $user_id => $onlyUserCreditMargin)
|
||||
<tr>
|
||||
<td>{{ $onlyUserCreditMargin['first_name'] }}</td>
|
||||
<td>{{ $onlyUserCreditMargin['last_name'] }}</td>
|
||||
<td>{{ $onlyUserCreditMargin['email'] }}</td>
|
||||
<td>{!! formatNumber($onlyUserCreditMargin['sum']) !!} €</td>
|
||||
<td>
|
||||
@foreach ($onlyUserCreditMargin['entries'] as $key => $creditMaring)
|
||||
<div class="td-entry-table-margin">
|
||||
<i class="fa fa-plus-circle text-secondary"></i>
|
||||
{!! nl2br($creditMaring->message) !!}
|
||||
/ {{ $creditMaring->created_at->format("d.m.Y") }}
|
||||
@if($deleteTime = $creditMaring->deleteTime())
|
||||
/ <span class="no-line-break">
|
||||
<a class="btn btn-danger btn-xs" href="{{ route('admin_payments_credit_delete', [$creditMaring->id, 'user_credit_margin']) }}" onclick="return confirm('Wirklich löschen?');">
|
||||
<i class="ion ion-ios-trash"></i>
|
||||
</a> noch {{ $deleteTime }} min.
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-credit"
|
||||
data-userid="{{ $onlyUserCreditMargin['user_id'] }}"
|
||||
data-email="{{ $onlyUserCreditMargin['email'] }}"
|
||||
data-userid="{{ $user_credit->user_id }}"
|
||||
data-email="{{ $user_credit->email }}"
|
||||
data-back="{{url()->current()}}"
|
||||
data-action="create_credit">
|
||||
<span class="far fa-file-invoice-dollar"></span> <strong>Gutschrift erstellen</strong>
|
||||
|
|
@ -148,29 +92,21 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($ShoppingOrderMarginPendings as $ShoppingOrderMarginPending)
|
||||
@foreach ($users_credits_pending as $user_credit_pending)
|
||||
<tr>
|
||||
<td>{{ $ShoppingOrderMarginPending->first_name }}</td>
|
||||
<td>{{ $ShoppingOrderMarginPending->last_name }}</td>
|
||||
<td>{{ $ShoppingOrderMarginPending->email }}</td>
|
||||
<td>{!! \App\Services\UserMarign::getMontlyPartnerCommissionPendingByID($ShoppingOrderMarginPending->user_id, null, true) !!} €</td>
|
||||
<td>
|
||||
@foreach (\App\Services\UserMarign::getOrderFromPartnerCommissionPendingByID($ShoppingOrderMarginPending->user_id) as $order)
|
||||
@if($order->shopping_order)
|
||||
<div class="td-entry-table-margin"><a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
|
||||
<a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
|
||||
{{$order->shopping_order->shopping_user->billing_firstname }}
|
||||
{{$order->shopping_order->shopping_user->billing_lastname }}
|
||||
/ {{ $order->shopping_order->getLastShoppingPayment('reference') }}
|
||||
/ {{$order->shopping_order->getFormattedTotalWithoutCredit()." €" }}
|
||||
/ {{ $order->shopping_order->created_at->format("d.m.Y") }}
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
<td>{{ $user_credit_pending->first_name }}</td>
|
||||
<td>{{ $user_credit_pending->last_name }}</td>
|
||||
<td>{{ $user_credit_pending->email }}</td>
|
||||
<td>{{ formatNumber($user_credit_pending->total) }} €</td>
|
||||
<td>
|
||||
@foreach($user_credit_pending->items as $entry)
|
||||
@include('admin.payment.credit.credits-entry', ['entry' => $entry])
|
||||
@endforeach
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
@ -255,48 +191,49 @@
|
|||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
var oTable = $('#datatable-credit').DataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
ajax: {
|
||||
url: '{!! route( 'admin_payments_credit_datatable') !!}',
|
||||
data: function(d) {
|
||||
d.filter_sales_year = $('select[name=filter_sales_year]').val();
|
||||
}
|
||||
},
|
||||
"order": [[0, "desc" ]],
|
||||
"columns": [
|
||||
{ data: 'id', searchable: false },
|
||||
{ data: 'credit_number', name: 'credit_number' },
|
||||
{ data: 'credit', name: 'credit', orderable: false, searchable: false },
|
||||
{ data: 'user.account.first_name', name: 'user.account.first_name', orderable: false },
|
||||
{ data: 'user.account.last_name', name: 'user.account.last_name', orderable: false },
|
||||
{ data: 'user.email', name: 'user.email', orderable: false },
|
||||
{ data: 'total', name: 'total' },
|
||||
{ data: 'date', name: 'date' },
|
||||
{ data: 'status', name: 'status', searchable: false },
|
||||
{ data: 'user_margins', name: 'user_margins', orderable: false },
|
||||
],
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 100,
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
}
|
||||
});
|
||||
$('#filter_sales_year').on('change', function(){
|
||||
oTable.draw();
|
||||
});
|
||||
$(document).ready(function() {
|
||||
// DataTable-Konfiguration in separate Datei auslagern
|
||||
const dataTableConfig = {
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
ajax: {
|
||||
url: '{!! route("admin_payments_credit_datatable") !!}',
|
||||
data: d => ({
|
||||
...d,
|
||||
filter_sales_year: $('select[name=filter_sales_year]').val()
|
||||
})
|
||||
},
|
||||
order: [[0, "desc"]],
|
||||
columns: [
|
||||
{ data: 'id', searchable: false },
|
||||
{ data: 'credit_number', name: 'credit_number' },
|
||||
{ data: 'credit', name: 'credit', orderable: false, searchable: false },
|
||||
{ data: 'user.account.first_name', name: 'user.account.first_name', orderable: false },
|
||||
{ data: 'user.account.last_name', name: 'user.account.last_name', orderable: false },
|
||||
{ data: 'user.email', name: 'user.email', orderable: false },
|
||||
{ data: 'total', name: 'total' },
|
||||
{ data: 'date', name: 'date' },
|
||||
{ data: 'status', name: 'status', searchable: false },
|
||||
{ data: 'user_margins', name: 'user_margins', orderable: false },
|
||||
],
|
||||
lengthChange: false,
|
||||
pageLength: 100,
|
||||
language: {
|
||||
url: "/js/German.json"
|
||||
}
|
||||
};
|
||||
|
||||
$( document ).ready(function() {
|
||||
$('#modals-credit').on('show.bs.modal', function (event) {
|
||||
var button = $(event.relatedTarget);
|
||||
if(event.relatedTarget){
|
||||
$(this).find(".modal-content input[name='userid']").val(button.data('userid'));
|
||||
$(this).find(".modal-body #set_credit_send_mail").html(button.data('email'));
|
||||
}
|
||||
|
||||
});
|
||||
const creditTable = $('#datatable-credit').DataTable(dataTableConfig);
|
||||
|
||||
// Event Handlers
|
||||
$('#filter_sales_year').on('change', () => creditTable.draw());
|
||||
|
||||
$('#modals-credit').on('show.bs.modal', function(event) {
|
||||
const button = $(event.relatedTarget);
|
||||
if (button) {
|
||||
$(this).find("input[name='userid']").val(button.data('userid'));
|
||||
$(this).find("#set_credit_send_mail").html(button.data('email'));
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
380
resources/views/admin/payment/credit/index_bak.blade.php
Normal file
380
resources/views/admin/payment/credit/index_bak.blade.php
Normal file
|
|
@ -0,0 +1,380 @@
|
|||
@extends('layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
<style>
|
||||
.td-entry-table-margin {
|
||||
padding-bottom: 6px;
|
||||
border-bottom: 1px solid rgb(221, 221, 221);
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
</style>
|
||||
<div class="card">
|
||||
<h6 class="card-header">
|
||||
Zahlungen / offene Gutschriften
|
||||
|
||||
<div class="float-right">
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
|
||||
data-id="new"
|
||||
data-action="add-user-credit"
|
||||
data-back="{{url()->current()}}"
|
||||
data-route="{{ route('modal_load') }}"><span class="far fa-plus-circle"></span> Gutschrift hinzufügen
|
||||
</button>
|
||||
</div>
|
||||
</h6>
|
||||
|
||||
@if(isset($add_credit_error) && $add_credit_error)
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger p-2 mt-2">
|
||||
<ul>
|
||||
<li>{{ $add_credit_error }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card-datatable table-responsive pt-0">
|
||||
<table class="datatables-style table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__('Vorname')}}</th>
|
||||
<th>{{__('Nachname') }}</th>
|
||||
<th>{{__('E-Mail') }}</th>
|
||||
<th>{{__('Betrag') }}</th>
|
||||
<th>{{__('aus Bestellung / Gutschrift')}}</th>
|
||||
<th>{{__('#')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($ShoppingOrderMargins as $ShoppingOrderMargin)
|
||||
<tr>
|
||||
<td>{{ $ShoppingOrderMargin->first_name }}</td>
|
||||
<td>{{ $ShoppingOrderMargin->last_name }}</td>
|
||||
<td>{{ $ShoppingOrderMargin->email }}</td>
|
||||
<td>{!! \App\Services\UserMarign::getMontlyPartnerCommissionOpenByID($ShoppingOrderMargin->user_id, null, true, true) !!} €</td>
|
||||
<td>
|
||||
@foreach (\App\Services\UserMarign::getOrderFromPartnerCommissionByID($ShoppingOrderMargin->user_id) as $order)
|
||||
@if($order->shopping_order)
|
||||
<div class="td-entry-table-margin">
|
||||
{!! \App\Services\Payment::getPaymentForTypeBadge($order->shopping_order) !!}
|
||||
|
||||
@if($order->shopping_order->payment_for === 7 || $order->shopping_order->payment_for === 8)
|
||||
<a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
|
||||
@else
|
||||
<a href="{{ route('admin_sales_users_detail', [$order->shopping_order->id]) }}">
|
||||
@endif
|
||||
{{$order->shopping_order->shopping_user->billing_firstname }}
|
||||
{{$order->shopping_order->shopping_user->billing_lastname }}
|
||||
/ {{ $order->shopping_order->getLastShoppingPayment('reference') }}
|
||||
({{ $order->shopping_order->getFormattedTotalWithoutCredit()." €" }})
|
||||
/ {{ $order->shopping_order->created_at->format("d.m.Y") }}
|
||||
@if($order->shopping_order->shopping_order_margin->net_partner_commission)
|
||||
/ <strong>{{ $order->shopping_order->shopping_order_margin->getFormattedNetPartnerCommission() }}</strong> €
|
||||
@endif
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
@foreach (\App\Services\UserMarign::getUserCreditMarginByID($ShoppingOrderMargin->user_id) as $creditMaring)
|
||||
<div class="td-entry-table-margin">
|
||||
<i class="fa fa-plus-circle text-secondary"></i>
|
||||
{!! nl2br($creditMaring->message) !!}
|
||||
/ {{ $creditMaring->created_at->format("d.m.Y") }}
|
||||
/ <strong>{!! formatNumber($creditMaring->credit) !!} €</strong>
|
||||
|
||||
@if($deleteTime = $creditMaring->deleteTime())
|
||||
/ <span class="no-line-break">
|
||||
<a class="btn btn-danger btn-xs" href="{{ route('admin_payments_credit_delete', [$creditMaring->id, 'user_credit_margin']) }}" onclick="return confirm('Wirklich löschen?');">
|
||||
<i class="ion ion-ios-trash"></i>
|
||||
</a> noch {{ $deleteTime }} min.
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-credit"
|
||||
data-userid="{{ $ShoppingOrderMargin->user_id }}"
|
||||
data-email="{{ $ShoppingOrderMargin->email }}"
|
||||
data-back="{{url()->current()}}"
|
||||
data-action="create_credit">
|
||||
<span class="far fa-file-invoice-dollar"></span> <strong>Gutschrift erstellen</strong>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@foreach ($onlyUserCreditMargins as $user_id => $onlyUserCreditMargin)
|
||||
<tr>
|
||||
<td>{{ $onlyUserCreditMargin['first_name'] }}</td>
|
||||
<td>{{ $onlyUserCreditMargin['last_name'] }}</td>
|
||||
<td>{{ $onlyUserCreditMargin['email'] }}</td>
|
||||
<td>{!! formatNumber($onlyUserCreditMargin['sum']) !!} €</td>
|
||||
<td>
|
||||
@foreach ($onlyUserCreditMargin['entries'] as $key => $creditMaring)
|
||||
<div class="td-entry-table-margin">
|
||||
<i class="fa fa-plus-circle text-secondary"></i>
|
||||
{!! nl2br($creditMaring->message) !!}
|
||||
/ {{ $creditMaring->created_at->format("d.m.Y") }}
|
||||
/ <strong>{!! formatNumber($onlyUserCreditMargin['credit']) !!} €</strong>
|
||||
@if($deleteTime = $creditMaring->deleteTime())
|
||||
/ <span class="no-line-break">
|
||||
<a class="btn btn-danger btn-xs" href="{{ route('admin_payments_credit_delete', [$creditMaring->id, 'user_credit_margin']) }}" onclick="return confirm('Wirklich löschen?');">
|
||||
<i class="ion ion-ios-trash"></i>
|
||||
</a> noch {{ $deleteTime }} min.
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-credit"
|
||||
data-userid="{{ $onlyUserCreditMargin['user_id'] }}"
|
||||
data-email="{{ $onlyUserCreditMargin['email'] }}"
|
||||
data-back="{{url()->current()}}"
|
||||
data-action="create_credit">
|
||||
<span class="far fa-file-invoice-dollar"></span> <strong>Gutschrift erstellen</strong>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card mt-3">
|
||||
<h6 class="card-header">
|
||||
Zahlungen / offene Gutschriften pending
|
||||
</h6>
|
||||
<div class="card-datatable table-responsive pt-0">
|
||||
<table class="datatables-style table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__('Vorname')}}</th>
|
||||
<th>{{__('Nachname') }}</th>
|
||||
<th>{{__('E-Mail') }}</th>
|
||||
<th>{{__('Betrag') }}</th>
|
||||
<th>{{__('aus Bestellung')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($ShoppingOrderMarginPendings as $ShoppingOrderMarginPending)
|
||||
<tr>
|
||||
<td>{{ $ShoppingOrderMarginPending->first_name }}</td>
|
||||
<td>{{ $ShoppingOrderMarginPending->last_name }}</td>
|
||||
<td>{{ $ShoppingOrderMarginPending->email }}</td>
|
||||
<td>{!! \App\Services\UserMarign::getMontlyPartnerCommissionPendingByID($ShoppingOrderMarginPending->user_id, null, true) !!} €</td>
|
||||
<td>
|
||||
@foreach (\App\Services\UserMarign::getOrderFromPartnerCommissionPendingByID($ShoppingOrderMarginPending->user_id) as $order)
|
||||
@if($order->shopping_order)
|
||||
<div class="td-entry-table-margin">
|
||||
{!! \App\Services\Payment::getPaymentForTypeBadge($order->shopping_order) !!}
|
||||
@if($order->shopping_order->payment_for === 7 || $order->shopping_order->payment_for === 8)
|
||||
<a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
|
||||
@else
|
||||
<a href="{{ route('admin_sales_users_detail', [$order->shopping_order->id]) }}">
|
||||
@endif
|
||||
{{$order->shopping_order->shopping_user->billing_firstname }}
|
||||
{{$order->shopping_order->shopping_user->billing_lastname }}
|
||||
/ {{ $order->shopping_order->getLastShoppingPayment('reference') }}
|
||||
({{$order->shopping_order->getFormattedTotalWithoutCredit()." €" }})
|
||||
/ {{ $order->shopping_order->created_at->format("d.m.Y") }}
|
||||
@if($order->shopping_order->shopping_order_margin->net_partner_commission)
|
||||
/ <strong>{{ $order->shopping_order->shopping_order_margin->getFormattedNetPartnerCommission() }}</strong> €
|
||||
@endif
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
@foreach (\App\Services\UserMarign::getOrderFromShopPendingByID($ShoppingOrderMarginPending->user_id) as $order)
|
||||
@if($order->shopping_order)
|
||||
<div class="td-entry-table-margin">
|
||||
{!! \App\Services\Payment::getPaymentForTypeBadge($order->shopping_order) !!}
|
||||
@if($order->shopping_order->payment_for === 7 || $order->shopping_order->payment_for === 8)
|
||||
<a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
|
||||
@else
|
||||
<a href="{{ route('admin_sales_users_detail', [$order->shopping_order->id]) }}">
|
||||
@endif
|
||||
{{$order->shopping_order->shopping_user->billing_firstname }}
|
||||
{{$order->shopping_order->shopping_user->billing_lastname }}
|
||||
/ {{ $order->shopping_order->getLastShoppingPayment('reference') }}
|
||||
({{$order->shopping_order->getFormattedTotalWithoutCredit()." €" }})
|
||||
/ {{ $order->shopping_order->created_at->format("d.m.Y") }}
|
||||
@if($order->shopping_order->shopping_order_margin->net_partner_commission)
|
||||
/ <strong>{{ $order->shopping_order->shopping_order_margin->getFormattedNetPartnerCommission() }}</strong> €
|
||||
@endif
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
@foreach ($onlyShoppingOrderMargins as $user_id => $onlyUserCreditMargin)
|
||||
<tr>
|
||||
<td>{{ $onlyUserCreditMargin['first_name'] }}</td>
|
||||
<td>{{ $onlyUserCreditMargin['last_name'] }}</td>
|
||||
<td>{{ $onlyUserCreditMargin['email'] }}</td>
|
||||
<td>{!! formatNumber($onlyUserCreditMargin['sum']) !!} €</td>
|
||||
<td>
|
||||
@foreach ($onlyUserCreditMargin['entries'] as $key => $order)
|
||||
|
||||
<div class="td-entry-table-margin">
|
||||
{!! \App\Services\Payment::getPaymentForTypeBadge($order->shopping_order) !!}
|
||||
@if($order->shopping_order->payment_for === 7 || $order->shopping_order->payment_for === 8)
|
||||
<a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
|
||||
@else
|
||||
<a href="{{ route('admin_sales_users_detail', [$order->shopping_order->id]) }}">
|
||||
@endif
|
||||
{{$order->shopping_order->shopping_user->billing_firstname }}
|
||||
{{$order->shopping_order->shopping_user->billing_lastname }}
|
||||
/ {{ $order->shopping_order->getLastShoppingPayment('reference') }}
|
||||
({{$order->shopping_order->getFormattedTotalWithoutCredit()." €" }})
|
||||
/ {{ $order->shopping_order->created_at->format("d.m.Y") }}
|
||||
@if($order->shopping_order->shopping_order_margin->net_partner_commission)
|
||||
/ <strong>{{ $order->shopping_order->shopping_order_margin->getFormattedNetDiscount() }}</strong> €
|
||||
@endif
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mt-3">
|
||||
<h6 class="card-header">
|
||||
Zahlungen / erstellte Gutschriften
|
||||
</h6>
|
||||
<div class="col-sm-6 mb-0 mt-2">
|
||||
{!! Form::open(['url' => route('admin_payments_credit'), 'class' => 'form-horizontal', 'id'=>'form_filter_sales_year']) !!}
|
||||
|
||||
<label class="form-label" for="filter_sales_year">Filter Jahr</label>
|
||||
<select class="custom-select" name="filter_sales_year" id="filter_sales_year">
|
||||
@foreach($years as $year)
|
||||
<option value="{{$year}}" @if($active_year == $year) selected @endif>{{$year}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
{!! Form::close() !!}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-datatable table-responsive pt-0">
|
||||
<table class="datatables-style table table-striped table-bordered" id="datatable-credit">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>{{__('G.Nr.')}}</th>
|
||||
<th>{{__('Gutschrift')}}</th>
|
||||
<th>{{__('Vorname')}}</th>
|
||||
<th>{{__('Nachname') }}</th>
|
||||
<th>{{__('E-Mail') }}</th>
|
||||
<th>{{__('Betrag') }}</th>
|
||||
<th>{{__('Datum') }}</th>
|
||||
<th>{{__('Zahlung')}}</th>
|
||||
<th>{{__('aus Bestellung / Gutschrift')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="modals-credit">
|
||||
<div class="modal-dialog">
|
||||
<form class="modal-content form-prevent-multiple-submits" action="{{ route('admin_payments_credit_create') }}" method="post">
|
||||
@csrf
|
||||
<input type="hidden" name="userid" value="">
|
||||
<input type="hidden" name="action" value="create_credit">
|
||||
<input type="hidden" name="back" value="{{url()->current()}}">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">{{__('Gutschrift')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group col-sm-12">
|
||||
|
||||
{{ Form::select('credit_option', ['create'=>'Gutschrift erstellen'], false, array('data-live-search'=>'false', 'class'=>'selectpicker')) }}
|
||||
</div>
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="form-label" for="credit_date">{{ __('Gutschriftsdatum') }}</label>
|
||||
{!! Form::text('credit_date', \Carbon::now()->format("d.m.Y"), ['class'=>'form-control datepicker-base']) !!}
|
||||
</div>
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="form-label" for="credit_number">{{ __('Gutschriftsnummer') }}</label>
|
||||
{!! Form::text('credit_number', App\Services\Credit::getCreditNumber(), ['class'=>'form-control', 'disabled']) !!}
|
||||
<em> nächste Gutschriftsnummer <a href="{{ route('admin_settings') }}"><i class="fa fa-edit"></i></a></em>
|
||||
</div>
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="custom-control custom-checkbox">
|
||||
{!! Form::checkbox('credit_send_mail', 1, true, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Gutschrift an <span id="set_credit_send_mail">mail</span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
<button type="submit" class="btn btn-primary button-prevent-multiple-submits"><i class="spinner fa fa-spinner fa-spin"></i> {{ __('save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
var oTable = $('#datatable-credit').DataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
ajax: {
|
||||
url: '{!! route( 'admin_payments_credit_datatable') !!}',
|
||||
data: function(d) {
|
||||
d.filter_sales_year = $('select[name=filter_sales_year]').val();
|
||||
}
|
||||
},
|
||||
"order": [[0, "desc" ]],
|
||||
"columns": [
|
||||
{ data: 'id', searchable: false },
|
||||
{ data: 'credit_number', name: 'credit_number' },
|
||||
{ data: 'credit', name: 'credit', orderable: false, searchable: false },
|
||||
{ data: 'user.account.first_name', name: 'user.account.first_name', orderable: false },
|
||||
{ data: 'user.account.last_name', name: 'user.account.last_name', orderable: false },
|
||||
{ data: 'user.email', name: 'user.email', orderable: false },
|
||||
{ data: 'total', name: 'total' },
|
||||
{ data: 'date', name: 'date' },
|
||||
{ data: 'status', name: 'status', searchable: false },
|
||||
{ data: 'user_margins', name: 'user_margins', orderable: false },
|
||||
],
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 100,
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
}
|
||||
});
|
||||
$('#filter_sales_year').on('change', function(){
|
||||
oTable.draw();
|
||||
});
|
||||
|
||||
$( document ).ready(function() {
|
||||
$('#modals-credit').on('show.bs.modal', function (event) {
|
||||
var button = $(event.relatedTarget);
|
||||
if(event.relatedTarget){
|
||||
$(this).find(".modal-content input[name='userid']").val(button.data('userid'));
|
||||
$(this).find(".modal-body #set_credit_send_mail").html(button.data('email'));
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
</td>
|
||||
<td>{{ $value->pos }}</td>
|
||||
<td>{{ $value->name }} ({{ $value->short }})</td>
|
||||
<td>{!! implode($value->getShowOnTypes(), '<br>') !!}</td>
|
||||
<td>{!! $value->getShowOnTypes('<br>') !!}</td>
|
||||
<td data-sort="{{ $value->default }}">{!! get_active_badge($value->default) !!}</td>
|
||||
<td data-sort="{{ $value->active }}">{!! get_active_badge($value->active) !!}</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -36,8 +36,9 @@
|
|||
</div>
|
||||
|
||||
{!! Form::close() !!}
|
||||
|
||||
|
||||
@include('admin.product.images')
|
||||
|
||||
@include('admin.product.upload_whitelabel')
|
||||
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -61,19 +61,19 @@
|
|||
{!! Form::checkbox('max_buy', 1, $product->max_buy, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Maximaler Kauf für einen Berater für dieses Produkt</span>
|
||||
</label>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<label class="form-label" for="max_buy_num">{{ __('Anzahl maximaler Kauf pro Berater') }}</label>
|
||||
{{ Form::text('max_buy_num', $product->max_buy_num, array('placeholder'=>__('in Stück'), 'class'=>'form-control', 'id'=>'max_buy_num')) }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -133,8 +133,10 @@
|
|||
{!! Form::checkbox('amount_commission', 1, $product->amount_commission, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Betrag zum Staffelumsatz addieren</span>
|
||||
</label>
|
||||
|
||||
|
||||
<label class="custom-control custom-checkbox mt-2">
|
||||
{!! Form::checkbox('exclude_stats_sales', 1, $product->exclude_stats_sales, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Produkt beim der Auswertung Absatzmengen ausschließen</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group col-sm-4">
|
||||
<label class="form-label" for="value_commission">{{ __('Einzelrabatt in %') }}</label>
|
||||
|
|
@ -145,6 +147,13 @@
|
|||
{{ Form::text('partner_commission', $product->getFormattedPartnerCommission(), array('placeholder'=>__('Vertriebspartner Einzelrabatt in %'), 'class'=>'form-control', 'id'=>'partner_commission')) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -201,7 +210,6 @@
|
|||
<div class="form-group col-sm-4 col-md-3">
|
||||
<label class="form-label">Preis VK in {{ $country->currency_unit }}</label>
|
||||
{{ Form::text('c_currency['.$country->id.']', formatNumber($product->getRealPrice($country) * $country->currency_faktor), array('class'=>'form-control', 'readonly')) }}
|
||||
|
||||
</div>
|
||||
@else
|
||||
{{--
|
||||
|
|
@ -236,13 +244,73 @@
|
|||
@endforeach
|
||||
<em class="float-right text-muted small">für die Einstellung von landesspezifischen Preisen müssen diese unter
|
||||
<a href="{{route('admin_countries')}}">Länder</a> -> Land aktiviert werden.</em>
|
||||
|
||||
<div class="form-group">
|
||||
<hr>
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-2">
|
||||
<h5 class="card-header">
|
||||
{{ __('White-Label') }}
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="custom-control custom-checkbox mt-2">
|
||||
{!! Form::checkbox('whitelabel', 1, $product->whitelabel, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">White-Label Produkt</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<label class="form-label" for="whitelabel_name">{{ __('White-Label Bezeichnung') }}</label>
|
||||
{{ Form::text('whitelabel_name', $product->whitelabel_name, array('placeholder'=>__('Bezeichnung'), 'class'=>'form-control', 'id'=>'whitelabel_name')) }}
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<label class="form-label" for="whitelabel_variants">Mögliche Varianten (<a href="{{ route('admin_product_attributes') }}">Anlage unter Attribute</a>)</label>
|
||||
<select class="selectpicker" name="whitelabel_variants[]" id="whitelabel_variants" data-style="btn-light" data-live-search="true" multiple>
|
||||
{!! HTMLHelper::getAttributesOptions($product->attribute_variants()->pluck('attribute_id')->toArray(), false, 1) !!}
|
||||
</select>
|
||||
<div class="mt-2">
|
||||
<em>Die nur die möglichen Varianten die ausgewählt sind, können einzelnen VP und Etiketten zugeordnet werden.</em>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
||||
@foreach($product->whitelabel_images as $image)
|
||||
<div class="col-md-12">
|
||||
<hr>
|
||||
</div>
|
||||
<div class="col-md-3 col-lg-2">
|
||||
<img class="img-fluid" alt="" style="max-height: 200px" src="{{ route('product_image', [$image->slug]) }}">
|
||||
</div>
|
||||
<div class="col-md-9 col-lg-10">
|
||||
<label class="form-label" for="image_wl_attributes_{{ $image->id }}">für {{ __('Varianten') }}</label>
|
||||
<select class="selectpicker" name="image_wl_attributes[{{ $image->id }}][]" id="image_wl_attributes_{{ $image->id }}" data-style="btn-light" data-live-search="true" multiple>
|
||||
{!! HTMLHelper::getProductAttributesOptions($product->attribute_variants, $image->attributes, false, 1) !!}
|
||||
</select>
|
||||
<a href="{{ route('admin_product_image_delete', [$image->id, $product->id]) }}" class="btn btn-sm btn-danger mt-2 mb-2" onclick="return confirm('Etikett wirklich löschen?');">Etikett löschen</a>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-upload-white-label"
|
||||
data-id="new">{{__('White Label Default Etikett hochladen')}}</button>
|
||||
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-2">
|
||||
<h5 class="card-header">
|
||||
{{ __('Inhalte') }}
|
||||
{{ __('Details') }}
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
|
|
@ -274,6 +342,7 @@
|
|||
{{ Form::text('icons', $product->icons, array('placeholder'=>__('icons'), 'class'=>'form-control', 'id'=>'icons')) }}
|
||||
|
||||
</div>
|
||||
{{--
|
||||
<div class="form-group col-sm-4">
|
||||
<label class="form-label" for="title">{{ __('Attribute') }}</label>
|
||||
<select class="selectpicker" name="attributes[]" id="attributes" data-style="btn-light"
|
||||
|
|
@ -281,6 +350,7 @@
|
|||
{!! HTMLHelper::getAttributesOptions($product->attributes()->pluck('attribute_id')->toArray()) !!}
|
||||
</select>
|
||||
</div>
|
||||
--}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
|
|
@ -295,12 +365,20 @@
|
|||
<label class="form-label" for="ingredients">{{ __('Hinweise') }}</label>
|
||||
{{ Form::textarea('ingredients', $product->ingredients , array('placeholder'=>__('ingredients'), 'class'=>'form-control summernote', 'id'=>'ingredients')) }}
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-2">
|
||||
<h5 class="card-header">
|
||||
{{ __('Inhalte') }}
|
||||
{{ __('Inhaltsstoffe') }}
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div class="card-datatable table-responsive pt-0">
|
||||
|
|
@ -333,10 +411,15 @@
|
|||
</select>
|
||||
<a class="btn btn-default btn-xs mt-2" href="{{route('admin_product_ingredients')}}">Inhaltsstoffe anlegen</a>
|
||||
</div>
|
||||
<div class="form-group col-sm-2">
|
||||
<button type="submit" class="btn btn-submit mt-0 mt-sm-4">{{ __('save') }}</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if(Auth::user()->isSySAdmin())
|
||||
|
|
@ -365,6 +448,13 @@
|
|||
{{ Form::text('wp_number', $product->wp_number, array('placeholder'=>__('WP Number'), 'class'=>'form-control', 'id'=>'wp_number')) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -50,6 +50,8 @@
|
|||
<form method="POST" action="{{ route('admin_product_image_upload') }}" accept-charset="UTF-8" class="avatar" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="hidden" name="product_id" value="{{$product->id}}">
|
||||
<input type="hidden" name="upload_type" value="product">
|
||||
|
||||
<div class="slim_holder text-center">
|
||||
<div class="slim" style="margin:20px auto;"
|
||||
data-label='<span class="text-green">Foto-Upload</span><br>(Datei suchen oder Drag & Drop)'
|
||||
|
|
|
|||
|
|
@ -26,9 +26,12 @@
|
|||
<th>{{__('Grundpreis')}}</th>
|
||||
<th>{{__('Gewicht')}}</th>
|
||||
<th>{{__('sichbar')}}</th>
|
||||
<th><div data-toggle="tooltip" title data-original-title="White Label">{{__('WL')}}</div></th>
|
||||
<th><div data-toggle="tooltip" title data-original-title="Kompensationsprodukt">{{__('KP')}}</div></th>
|
||||
<th><div data-toggle="tooltip" title data-original-title="Maximaler Kauf pro Berater">{{__('MK')}}</div></th>
|
||||
<th><div data-toggle="tooltip" title data-original-title="Einzelrabatt">{{__('ER')}}</div></th>
|
||||
<th><div data-toggle="tooltip" title data-original-title="Auswertung Absatzmengen ausschließen ">{{__('AA')}}</div></th>
|
||||
|
||||
<th>{{__('Status')}}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
|
|
@ -59,10 +62,12 @@
|
|||
<td>{{ $value->getUnitType() }}</td>
|
||||
<td>{{ $value->getBasePriceFormatted() }}</td>
|
||||
<td>{{ $value->weight }}</td>
|
||||
<td>{!! implode($value->getShowOnTypes(), '<br>') !!}</td>
|
||||
<td>{!! $value->getShowOnTypes('<br>') !!}</td>
|
||||
<td data-sort="{{ $value->whitelabel }}">{!! get_active_badge($value->whitelabel, $value->whitelabel_name) !!}</td>
|
||||
<td data-sort="{{ $value->shipping_addon }}">{!! get_active_badge($value->shipping_addon) !!}</td>
|
||||
<td data-sort="{{ $value->max_buy }}">{!! get_active_badge($value->max_buy) !!}</td>
|
||||
<td data-sort="{{ $value->single_commission }}">{!! get_active_badge($value->single_commission) !!}</td>
|
||||
<td data-sort="{{ $value->exclude_stats_sales }}">{!! get_active_badge($value->exclude_stats_sales) !!}</td>
|
||||
<td data-sort="{{ $value->active }}">{!! get_active_badge($value->active) !!}</td>
|
||||
<td><a class="text-info" href="{{ route('admin_product_copy', [$value->id]) }}" onclick="return confirm('{{__('Eintrag kopieren?')}}');"><i class="far fa-copy"></i></a>
|
||||
<a class="text-danger" href="{{ route('admin_product_delete', [$value->id]) }}" onclick="return confirm('{{__('Really delete entry?')}}');"><i class="far fa-trash-alt"></i></a></td>
|
||||
|
|
|
|||
68
resources/views/admin/product/upload_whitelabel.blade.php
Normal file
68
resources/views/admin/product/upload_whitelabel.blade.php
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modals-upload-white-label">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
@csrf
|
||||
<input type="hidden" name="id">
|
||||
<input type="hidden" name="action" value="attribute">
|
||||
|
||||
<style>
|
||||
/* Dropzone */
|
||||
.dropzone {
|
||||
min-height: 230px;
|
||||
border: 2px dashed rgba(0, 0, 0, 0.3);
|
||||
background: white;
|
||||
border-radius: 6px;
|
||||
}
|
||||
.dropzone .dz-message {
|
||||
font-size: 28px;
|
||||
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Upload Etikett White-Label Produkt</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('admin_product_image_upload') }}" accept-charset="UTF-8" class="avatar" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="hidden" name="product_id" value="{{$product->id}}">
|
||||
<input type="hidden" name="upload_type" value="wllogo">
|
||||
|
||||
<div class="slim_holder text-center">
|
||||
<div class="slim" style="margin:20px auto;"
|
||||
data-label='<span class="text-green">Foto-Upload</span><br>(Datei suchen oder Drag & Drop)'
|
||||
data-fetcher="fetch.php"
|
||||
data-size="600,600"
|
||||
data-min-size="200,200"
|
||||
data-max-file-size="10"
|
||||
data-status-image-too-small="Bild zu klein<br>min. $0 Pixel"
|
||||
data-status-file-type="Ungültige Datei<br>bitte nur: $0"
|
||||
data-status-file-size="Die Datei ist zu groß<br>max. $0 MB"
|
||||
data-button-confirm-label="bestätigen"
|
||||
data-button-cancel-label="abbrechen"
|
||||
data-button-confirm-title="bestätigen"
|
||||
data-button-cancel-title="abbrechen"
|
||||
data-button-rotate-title="drehen"
|
||||
data-ratio="1:1">
|
||||
<input type="file" name="images[]" required />
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<button class="btn btn-primary" type="submit">Bild speichern</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -3,13 +3,14 @@
|
|||
<!-- Status -->
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-1">
|
||||
<div class="col-md-3 mb-1">
|
||||
<strong class="mr-2">Status:</strong>
|
||||
<span class="text-big">
|
||||
{!! \App\Services\Payment::getShoppingOrderBadge($shopping_order); !!}
|
||||
</span>
|
||||
{!! \App\Services\Payment::getPaymentForTypeBadge($shopping_order) !!}
|
||||
{!! \App\Services\Payment::getShoppingOrderBadge($shopping_order) !!}
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-md-4 mb-1">
|
||||
<div class="col-md-3 mb-1">
|
||||
<strong class="mr-2">Versand:</strong>
|
||||
@if($isAdmin)
|
||||
<button type="button" class="btn btn-sm btn-{{$shopping_order->getShippedColor()}}" data-toggle="modal" data-target="#modals-shipped"
|
||||
|
|
@ -25,18 +26,18 @@
|
|||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-4 mb-1">
|
||||
<div class="col-md-3 mb-1">
|
||||
<strong class="mr-2">Rechnung:</strong>
|
||||
@if($isAdmin)
|
||||
@if(App\Services\Invoice::isInvoice($shopping_order))
|
||||
<a href="{{ route('storage_file', [$shopping_order->id, 'invoice', 'download']) }}" class="btn btn-primary btn-sm"><i class="fa fa-download"></i></a>
|
||||
<a href="{{ route('storage_file', [$shopping_order->id, 'invoice', 'stream']) }}" target="_blank" class="btn btn-warning btn-sm"><i class="fa fa-eye"></i></a>
|
||||
@if(false && Auth::user()->isSySAdmin())
|
||||
<button type="button" class="btn btn-sm btn-danger" data-toggle="modal" data-target="#modals-invoice"
|
||||
@if(Auth::user()->isSuperAdmin())
|
||||
<button type="button" class="btn btn-sm btn-danger" title="Rechnung überschreiben" data-toggle="modal" data-target="#modals-invoice"
|
||||
data-id="{{ $shopping_order->id }}"
|
||||
data-back="{{url()->current()}}"
|
||||
data-action="create_invoice">
|
||||
<span class="far fa-file-invoice"></span> <strong>Rechnung überschreiben</strong>
|
||||
<span class="far fa-file-invoice"></span></strong>
|
||||
</button>
|
||||
@endif
|
||||
@else
|
||||
|
|
@ -57,6 +58,22 @@
|
|||
@endif
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 mb-1">
|
||||
@if ($isAdmin)
|
||||
<strong class="mr-2">Lieferschein:</strong>
|
||||
@if (App\Services\Invoice::isDelivery($shopping_order))
|
||||
<a href="{{ route('storage_file', [$shopping_order->id, 'delivery', 'download']) }}"
|
||||
class="btn btn-primary btn-sm"><i class="fa fa-download"></i></a>
|
||||
<a href="{{ route('storage_file', [$shopping_order->id, 'delivery', 'stream']) }}"
|
||||
target="_blank" class="btn btn-warning btn-sm"><i class="fa fa-eye"></i></a>
|
||||
|
||||
<a href="{{ route('storage_file', [$shopping_order->id, 'invoice_delivery', 'download']) }}"
|
||||
class="btn btn-dark btn-sm"><i class="fa fa-file-download"></i><i class="fa fa-file-download"></i></a>
|
||||
@endif
|
||||
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -504,6 +521,45 @@
|
|||
</div>
|
||||
</div>
|
||||
<hr class="m-0">
|
||||
@if($shopping_order->shopping_order_margin)
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<h6 class="small font-weight-semibold">
|
||||
Provisionen / Handelspanne
|
||||
</h6>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">Einzelrabatt </div>
|
||||
{{ number_format( $shopping_order->shopping_order_margin->getRestoreContent('commission')->single_value_commission, 2, ",", ".") }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">Staffelrabatt</div>
|
||||
@foreach ($shopping_order->shopping_order_margin->getRestoreContent('items') as $item)
|
||||
ab {{ $item->price_from }} / {{ $item->trading_margin }}% :
|
||||
{{ number_format($item->value_margin , 2, ",", ".") }} €*<br>
|
||||
@endforeach
|
||||
</div>
|
||||
@if($isAdmin)
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">Provisionen Vertriebspartner<br> @if($shopping_order->member){{ $shopping_order->member->getFullName(false) }} @endif</div>
|
||||
{{$shopping_order->shopping_order_margin->getFormattedNetDiscount()}} €
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">Provisionen Sponsor<br> @if($shopping_order->member && $shopping_order->member->user_sponsor) {{ $shopping_order->member->user_sponsor->getFullName(false) }} @endif </div>
|
||||
@if($shopping_order->shopping_order_margin->net_partner_commission)
|
||||
{{ $shopping_order->shopping_order_margin->getFormattedNetPartnerCommission() }} €
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="m-0">
|
||||
|
||||
@endif
|
||||
|
||||
@if($shopping_order->txaction === 'extern')
|
||||
<div class="card-body">
|
||||
@if($shopping_order->wp_invoice_path)
|
||||
|
|
@ -669,7 +725,7 @@
|
|||
</div>
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="custom-control custom-checkbox">
|
||||
{!! Form::checkbox('invoice_send_mail', 1, true, ['class'=>'custom-control-input']) !!}
|
||||
{!! Form::checkbox('invoice_send_mail', 1, false, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Rechnung an {{ $shopping_order->shopping_user->billing_email }}</span>
|
||||
</label>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -66,6 +66,13 @@
|
|||
{{ Form::text('settings[pending_partner_commissions_in_days][val]', \App\Models\Setting::getContentBySlug('pending_partner_commissions_in_days'), array('class'=>'form-control')) }}
|
||||
{{ Form::hidden('settings[pending_partner_commissions_in_days][type]', 'int') }}
|
||||
</div>
|
||||
<div class="form-group col-sm-12">
|
||||
<label class="form-label">{{ __('Pending in Tagen nach Versand für die Shop Provision') }}*</label>
|
||||
{{ Form::text('settings[pending_order_margins_in_days][val]', \App\Models\Setting::getContentBySlug('pending_order_margins_in_days'), array('class'=>'form-control')) }}
|
||||
{{ Form::hidden('settings[pending_order_margins_in_days][type]', 'int') }}
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<button type="submit" name="action" value="save_prepayment" class="btn btn-primary btn-sm mb-2"><i class="ion ion-ios-save"></i> speichern</button>
|
||||
</div>
|
||||
|
|
@ -102,7 +109,7 @@
|
|||
|
||||
<div class="card mb-2">
|
||||
<div class="card-body">
|
||||
<h4>Promotion</h4>
|
||||
<h4>Promotion / Shop</h4>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-sm-12">
|
||||
<div class="form-group col-sm-12">
|
||||
|
|
|
|||
146
resources/views/admin/stats/salesvolume.blade.php
Executable file
146
resources/views/admin/stats/salesvolume.blade.php
Executable file
|
|
@ -0,0 +1,146 @@
|
|||
@extends('layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card">
|
||||
<h5 class="card-header">
|
||||
{{ __('navigation.products') }} {{ __('navigation.sales_volumes') }}
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
{!! Form::open(['url' => route('admin_stats_sales_volumes_download'), 'class' => '']) !!}
|
||||
{!! Form::hidden('key', 'value') !!}
|
||||
<button type="submit" name="action" value="export" class="btn btn-md btn-primary mb-2"><i class="ion ion-md-download"></i> Export als xls</button>
|
||||
<hr>
|
||||
<div class="form-row align-items-center px-0 pb-2 pt-0">
|
||||
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">
|
||||
<select class="custom-select on_change_select_filter" name="product_sales_vol_filter_month">
|
||||
@foreach($filter_months as $key=>$value)
|
||||
<option value="{{$key}}" @if(session('product_sales_vol_filter_month') == $key) selected @endif>{{$value}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">
|
||||
<select class="custom-select on_change_select_filter" name="product_sales_vol_filter_year">
|
||||
@foreach($filter_years as $key=>$value)
|
||||
<option value="{{$value}}" @if(session('product_sales_vol_filter_year') == $value) selected @endif>{{$value}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row align-items-center px-0 pb-2 pt-0">
|
||||
<div class="col-12 col-sm-6 col-md-4 col-lg-4 mb-1">
|
||||
<select class="selectpicker" name="product_sales_vol_filter_products[]" id="product_sales_vol_filter_products" data-style="btn-light" data-live-search="true" multiple>
|
||||
<option value="0" selected>Produkte ausschließen</option>
|
||||
@foreach($filter_products as $key=>$value)
|
||||
<option value="{{$key}}" @if(in_array($key, session('product_sales_vol_filter_products'))) selected @endif>{{$value}}</option>
|
||||
@endforeach
|
||||
</select> <br>
|
||||
<em class="">Die Produktliste erst nach der Filtern von Monat und Jahr aktualisieren</em>
|
||||
</div>
|
||||
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mt-1 mb-3">
|
||||
<button type="submit" name="action" value="filter" class="btn btn-md btn-primary mb-4"><i class="ion ion-md-refresh"></i> Filtern</button>
|
||||
</div>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
|
||||
<div class="card">
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="table table-striped table-bordered" id="datatable-sales-volume">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__('#') }}</th>
|
||||
<th>{{__('tables.product')}}</th>
|
||||
<th>{{__('tables.article_no')}}</th>
|
||||
<th>{{__('tables.quantity')}}</th>
|
||||
<th>{{__('tables.total')}} netto €</th>
|
||||
<th>Vorjahr {{__('tables.quantity')}}</th>
|
||||
<th>Vorjahr {{__('tables.total')}} netto €</th>
|
||||
<th>{{__('Einzelrabatt')}}</th>
|
||||
<th>{{__('Einzelrabatt %')}}</th>
|
||||
<th>{{__('VP Einzelrabatt in %')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<div class="alert alert-info m-2">
|
||||
Bei "Gesamter Umsatz", "Gesamte Rabatte", "Gesamt netto", sind die ausgeschlossenen Produkte einberechnet, da Rabatte auf Warenkorb-Ebene verrechnet werden und nicht auf Produkt-Ebene.
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
$( document ).ready(function() {
|
||||
|
||||
|
||||
var oTable = $('#datatable-sales-volume').DataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
"stateSave": true,
|
||||
"searching": false,
|
||||
ajax: {
|
||||
url: '{!! route('admin_stats_sales_volumes_datatable') !!}',
|
||||
data: function(d) {
|
||||
d.product_sales_vol_filter_month = $('select[name=product_sales_vol_filter_month]').val();
|
||||
d.product_sales_vol_filter_year = $('select[name=product_sales_vol_filter_year]').val();
|
||||
}
|
||||
},
|
||||
"order": [[0, "asc" ]],
|
||||
"columns": [
|
||||
{ data: 'id', orderable: true, searchable: false },
|
||||
{ data: 'name', name: 'name', orderable: true, searchable: false },
|
||||
{ data: 'number', name: 'number', orderable: true, searchable: false },
|
||||
{ data: 'qty', name: 'qty', orderable: true, searchable: false },
|
||||
{ data: 'total', name: 'total', orderable: true, searchable: false },
|
||||
{ data: 'pre_qty', name: 'pre_qty', orderable: true, searchable: false },
|
||||
{ data: 'pre_total', name: 'pre_total', orderable: true, searchable: false },
|
||||
{ data: 'single_commission', name: 'single_commission', orderable: true, searchable: false },
|
||||
{ data: 'value_commission', name: 'value_commission', orderable: true, searchable: false },
|
||||
{ data: 'partner_commission', name: 'partner_commission', orderable: true, searchable: false },
|
||||
|
||||
|
||||
],
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 100,
|
||||
"language": {
|
||||
"url": "/js/datatables-{{ \App::getLocale() }}.json"
|
||||
}
|
||||
});
|
||||
|
||||
$('select.on_change_select_filter').on('change', function(){
|
||||
// oTable.draw();
|
||||
});
|
||||
|
||||
$('input.on_keyup_input_filter').on('keyup', function(){
|
||||
// oTable.draw();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -18,10 +18,12 @@
|
|||
<th>{{__('Last name')}}</th>
|
||||
<th>{{__('E-Mail')}}</th>
|
||||
<th>{{__('Zugang')}}</th>
|
||||
<th>{{__('Rolle')}}</th>
|
||||
<th>{{__('verified')}} (seit)</th>
|
||||
<th>{{__('active')}} (seit)</th>
|
||||
<th>{{__('Account')}} (bis)</th>
|
||||
<th>{{__('Zahlungsarten')}}</th>
|
||||
<th>{{__('Land')}}</th>
|
||||
<th>{{__('Test Modus')}}</th>
|
||||
<th>{{__('login')}}</th>
|
||||
<th>{{__('delete')}}</th>
|
||||
|
|
@ -406,10 +408,12 @@
|
|||
{ data: 'last_name', name: 'account.last_name' },
|
||||
{ data: 'email', name: 'email' },
|
||||
{ data: 'admin', name: 'admin' },
|
||||
{ data: 'role', name: 'role' },
|
||||
{ data: 'confirmed', name: 'confirmed' },
|
||||
{ data: 'active', name: 'active' },
|
||||
{ data: 'account', name: 'account' },
|
||||
{ data: 'my_payment_methods', name: 'my_payment_methods' },
|
||||
{ data: 'country', name: 'country' },
|
||||
{ data: 'test_mode', name: 'test_mode' },
|
||||
{ data: 'action_login', orderable: false, searchable: false},
|
||||
{ data: 'action_delete', orderable: false, searchable: false},
|
||||
|
|
|
|||
50
resources/views/auth/existing.blade.php
Normal file
50
resources/views/auth/existing.blade.php
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<!-- Content -->
|
||||
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/back.jpg')}});">
|
||||
<div class="ui-bg-overlay bg-dark opacity-25"></div>
|
||||
|
||||
<div class="authentication-inner py-5">
|
||||
|
||||
<div class="card bg-body">
|
||||
<div class="p-4 p-sm-4" style="adding-bottom: 0.25rem !important;">
|
||||
<!-- Logo -->
|
||||
<div class="d-flex justify-content-center align-items-center pb-2 mb-4">
|
||||
<div class="">
|
||||
<div class="w-100 position-relative">
|
||||
<a href="/"><img src="{{ asset('/images/gruene-seele-logo.jpg') }}" alt="gruene-seele-logo" class=""></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- / Logo -->
|
||||
|
||||
<h5 class="text-center text-muted font-weight-normal mb-4">{{ __('Register') }}</h5>
|
||||
|
||||
<form method="POST" class="my-3" action="{{ route('user_register_again') }}" aria-label="{{ __('Register') }}">
|
||||
@csrf
|
||||
{!! Form::hidden('register_email', $register_email) !!}
|
||||
<p><strong>{{ __('register.verify_exists-info1', ['email'=> $register_email ]) }}</strong></p>
|
||||
<p>{{ __('register.verify_exists-info2') }}</p>
|
||||
<p>{{ __('register.verify_exists-info3') }}</p>
|
||||
<hr>
|
||||
<button type="submit" class="btn btn-primary btn-block mt-4">{{ __('register.verify_email_again') }}</button>
|
||||
</form>
|
||||
<!-- / Form -->
|
||||
|
||||
<div class="card-footer">
|
||||
<div class="text-center text-muted">
|
||||
<a href="{{route('login')}}" class="btn btn-outline-primary mt-2 btn-sm">{{__('Login')}}</a>
|
||||
</div>
|
||||
<div class="mt-3 text-center">
|
||||
<hr>
|
||||
<a href="https://www.gruene-seele.bio/datenschutzerklaerung/" class="btn btn-outline-secondary mt-0 btn-sm">{{__('data protection')}}</a>
|
||||
<a href="https://www.gruene-seele.bio/impressum/" class="btn btn-outline-secondary mt-0 btn-sm">{{__('imprint')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
|
||||
<div class="card-footer">
|
||||
<div class="text-center text-muted">
|
||||
<a href="{{route('register')}}" class="btn btn-outline-primary mt-2 btn-sm">{{__('Register')}}</a>
|
||||
<a href="{{route('register.consent')}}" class="btn btn-outline-primary mt-2 btn-sm">{{__('Register')}}</a>
|
||||
</div>
|
||||
<div class="mt-3 text-center">
|
||||
<hr>
|
||||
|
|
|
|||
68
resources/views/auth/recaptcha-consent.blade.php
Normal file
68
resources/views/auth/recaptcha-consent.blade.php
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<!-- Content -->
|
||||
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/back.jpg')}});">
|
||||
<div class="ui-bg-overlay bg-dark opacity-25"></div>
|
||||
|
||||
<div class="authentication-inner py-5">
|
||||
|
||||
<div class="card bg-body">
|
||||
<div class="p-4 p-sm-4" style="adding-bottom: 0.25rem !important;">
|
||||
<!-- Logo -->
|
||||
<div class="d-flex justify-content-center align-items-center pb-2 mb-4">
|
||||
<div class="">
|
||||
<div class="w-100 position-relative">
|
||||
<a href="/"><img src="{{ asset('/images/gruene-seele-logo.jpg') }}" alt="gruene-seele-logo" class=""></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- / Logo -->
|
||||
|
||||
<h5 class="text-center text-muted font-weight-normal mb-4">Einwilligung zur Verwendung von reCAPTCHA</h5>
|
||||
|
||||
<form method="POST" action="{{ route('register.consent.accept') }}">
|
||||
@csrf
|
||||
@if(isset($from_member_id))
|
||||
{!! Form::hidden('from_member_id', $from_member_id) !!}
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<p>Bevor Sie sich registrieren können, benötigen wir Ihre Einwilligung zur Verwendung von Google reCAPTCHA:</p>
|
||||
|
||||
<p>Diese Website verwendet den Dienst reCAPTCHA von Google Inc. (Google) zum Schutz vor Spam und Missbrauch. Die Verwendung von reCAPTCHA beinhaltet die Übermittlung von personenbezogenen Daten an Google, einschließlich Ihrer IP-Adresse.</p>
|
||||
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center m-0">
|
||||
<label class="custom-control custom-checkbox m-0">
|
||||
<input type="checkbox" class="custom-control-input{{ $errors->has('recaptcha_consent') ? ' is-invalid' : '' }}" name="recaptcha_consent">
|
||||
<span class="custom-control-label small" style="line-height: 1.2em !important;"> Ich stimme der Verwendung von Google reCAPTCHA und der damit verbundenen Datenübermittlung an Google zu.</span>
|
||||
</label>
|
||||
</div>
|
||||
<hr>
|
||||
@error('error')
|
||||
<span class="invalid-feedback d-block" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
<button type="submit" class="btn btn-primary btn-block mt-4">Einwilligung bestätigen und fortfahren</button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- / Form -->
|
||||
|
||||
<div class="card-footer">
|
||||
<div class="text-center text-muted">
|
||||
<a href="{{route('login')}}" class="btn btn-outline-primary mt-2 btn-sm">{{__('Login')}}</a>
|
||||
</div>
|
||||
<div class="mt-3 text-center">
|
||||
<hr>
|
||||
<a href="https://www.gruene-seele.bio/datenschutzerklaerung/" class="btn btn-outline-secondary mt-0 btn-sm">{{__('data protection')}}</a>
|
||||
<a href="https://www.gruene-seele.bio/impressum/" class="btn btn-outline-secondary mt-0 btn-sm">{{__('imprint')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
|
@ -101,7 +101,23 @@
|
|||
<strong>{{ $errors->first('accepted_data_protection') }}</strong>
|
||||
</div>
|
||||
@endif
|
||||
<button type="submit" class="btn btn-primary btn-block mt-4"> {{ __('Register') }}</button>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="g-recaptcha" data-sitekey="{{ config('services.recaptcha.site_key') }}"></div>
|
||||
@error('recaptcha')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
@if ($errors->has('g-recaptcha-response'))
|
||||
<div class="invalid-feedback d-block" role="alert">
|
||||
<strong>{{ $errors->first('g-recaptcha-response') }}</strong>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<hr>
|
||||
<p>{{ __('register.reg_verify_info') }}</p>
|
||||
<button type="submit" class="btn btn-primary btn-block mt-4"> {{ __('register.verify_email') }}</button>
|
||||
<div class="small text-muted mt-2 text-right">* {{trans('register.required_fields')}}</div>
|
||||
|
||||
</form>
|
||||
|
|
@ -121,4 +137,10 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
@if(session('recaptcha_consent'))
|
||||
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
|
||||
@endif
|
||||
@endsection
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
{{-- <img src="assets/img/avatars/1.png" alt="" class="ui-w-50 rounded-circle"> --}}
|
||||
<div class="media-body ml-3">
|
||||
Willkommen zurück, {{$user->account->first_name}}!
|
||||
<div class="text-muted text-tiny mt-1"><small class="font-weight-normal">Heute ist {{__('cal.weekdays.'.$now->format('l'))}}, {{$now->format('j')}}. {{__('cal.months.'.$now->format('F'))}} {{$now->format('Y')}}</small></div>
|
||||
<div class="text-muted text-tiny mt-1"><small class="font-weight-normal">Heute ist {{__('cal.weekdays.'.$now->format('l'))}} der {{$now->format('j')}}. {{__('cal.months.'.$now->format('F'))}} {{$now->format('Y')}}</small></div>
|
||||
</div>
|
||||
</h4>
|
||||
|
||||
|
|
@ -141,6 +141,25 @@
|
|||
<!-- / Stats + Links -->
|
||||
</div> --}}
|
||||
|
||||
@if($user->isActiveAccount())
|
||||
<div class="d-flex col-md-12 align-items-stretch">
|
||||
<!-- SHOP -->
|
||||
<div class="card w-100 mb-4">
|
||||
<h5 class="card-header with-elements">
|
||||
<div class="card-header-title">Mein Shop</div>
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
@if(!Auth::user()->shop)
|
||||
<a href="{{route('user_shop')}}" class="btn btn-primary"><i class="ion ion-ios-basket text-default mr-1"></i> Jetzt Deinen Shop einrichten</a>
|
||||
@else
|
||||
<a href="{{route('user_shop')}}" class="btn btn-secondary"><i class="ion ion-ios-basket text-default mr-1"></i> Deinen Shop verwalten</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
<div class="d-flex col-md-6 align-items-stretch">
|
||||
<!-- SHOP -->
|
||||
<div class="card w-100 mb-4">
|
||||
|
|
|
|||
|
|
@ -112,6 +112,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<!-- / Content -->
|
||||
<script src="{{ asset('/vendor/libs/autosize/autosize.js') }}?v=1"></script>
|
||||
|
||||
<script src="{{ mix('/vendor/libs/popper/popper.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/js/bootstrap.js') }}"></script>
|
||||
|
|
@ -123,7 +124,7 @@
|
|||
<script src="{{ mix('/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
|
||||
<script src="{{ asset('/js/custom.js') }}"></script>
|
||||
|
||||
|
||||
@yield('scripts')
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -29,7 +29,6 @@
|
|||
<li class="sidenav-item Request::is('user/payment/revenue') ? ' active' : '' }} {{ Request::is('user/payment/revenue') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_payment_revenue') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-trending-up"></i><div>{{ __('navigation.revenue') }}</div></a>
|
||||
</li>
|
||||
|
||||
<li class="sidenav-item{{ Request::is('user/edit') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_edit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-create"></i><div>{{ __('navigation.my_data') }}</div></a>
|
||||
</li>
|
||||
|
|
@ -42,6 +41,34 @@
|
|||
</ul>
|
||||
</li>
|
||||
|
||||
@if(Auth::user()->isActiveAccount())
|
||||
<li class="sidenav-item{{ Request::is('user/shop') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_shop') }}" class="sidenav-link">
|
||||
<i class="sidenav-icon ion ion-ios-basket"></i>
|
||||
<div>{{ __('navigation.my_shop') }}</div>
|
||||
<div class="pl-1 ml-auto">
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@if(Auth::user()->isActiveAccount())
|
||||
<li class="sidenav-item @if(Request::is('user/promotion', '/user/promotion/*')) open @endif">
|
||||
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
|
||||
<i class="sidenav-icon ion ion-md-rocket"></i>
|
||||
<div>{{ __('navigation.my_promotions') }}</div>
|
||||
</a>
|
||||
<ul class="sidenav-menu">
|
||||
<li class="sidenav-item{{ Request::is('user/promotion') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_promotion') }}" class="sidenav-link"><i class="sidenav-icon ion-md-rocket"></i><div>{{ __('navigation.overview') }}</div></a>
|
||||
</li>
|
||||
<li class="sidenav-item">
|
||||
<a href="{{ route('user_order_my_delivery', ['cr']) }}" class="sidenav-link"><i class="sidenav-icon ion-md-cash"></i><div>{{ __('navigation.recharge_credit') }}</div></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@if(Auth::user()->isActiveAccount())
|
||||
<li class="sidenav-item @if(Request::is('user/team/*')) open @endif">
|
||||
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
|
||||
|
|
@ -55,6 +82,7 @@
|
|||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@if(Auth::user()->isActiveAccount())
|
||||
<li class="sidenav-item @if(Request::is('user/customers', 'user/customer/*')) open @endif">
|
||||
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
|
||||
|
|
@ -68,42 +96,31 @@
|
|||
<li class="sidenav-item{{ Request::is('user/customer/add/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_customer_add', ['new']) }}" class="sidenav-link"><i class="sidenav-icon ion ion ion-md-person-add"></i><div>{{ __('navigation.add') }}</div></a>
|
||||
</li>
|
||||
<li class="sidenav-item{{ Request::is('user/sales/orders') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_sales_orders') }}" class="sidenav-link"><i class="sidenav-icon ion ion ion-ios-list"></i><div>{{ __('navigation.orders') }}</div></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@if(Auth::user()->isActiveAccount())
|
||||
<li class="sidenav-item @if(Request::is('user/orders', 'user/order/*')) open @endif">
|
||||
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
|
||||
<i class="sidenav-icon ion ion-ios-cart"></i>
|
||||
<div>{{ __('navigation.my_orders') }}</div>
|
||||
</a>
|
||||
<ul class="sidenav-menu">
|
||||
<li class="sidenav-item{{ Request::is('user/orders', 'user/order/detail/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_orders') }}" class="sidenav-link"><i class="sidenav-icon ion ion ion-ios-list"></i><div>{{ __('navigation.overview') }}</div></a>
|
||||
</li>
|
||||
<li class="sidenav-item{{ Request::is('user/order/my/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_order_my_delivery', ['me']) }}" class="sidenav-link"><i class="sidenav-icon ion ion ion-md-basket"></i><div>{{ __('navigation.do_order') }}</div></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="sidenav-item{{ Request::is('user/order/my/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_order_my_delivery', ['me']) }}" class="sidenav-link"><i class="sidenav-icon ion ion ion-md-basket"></i><div>{{ __('navigation.do_order') }}</div></a>
|
||||
</li>
|
||||
@endif
|
||||
{{-- TODO Remove isAdmin --}}
|
||||
|
||||
@if(Auth::user()->isActiveAccount())
|
||||
<li class="sidenav-item @if(Request::is('user/promotions', '/user/promotion/*')) open @endif">
|
||||
<li class="sidenav-item @if(Request::is('user/myorders', 'user/myorder/*', 'user/sales', 'user/sales/*')) open @endif">
|
||||
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
|
||||
<i class="sidenav-icon ion ion-md-rocket"></i>
|
||||
<div>{{ __('navigation.my_promotions') }}</div>
|
||||
<i class="sidenav-icon ion ion-ios-cart"></i>
|
||||
<div>{{ __('navigation.orders') }}</div>
|
||||
</a>
|
||||
<ul class="sidenav-menu">
|
||||
<li class="sidenav-item{{ Request::is('user/promotions') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_promotions') }}" class="sidenav-link"><i class="sidenav-icon ion-md-rocket"></i><div>{{ __('navigation.overview') }}</div></a>
|
||||
<li class="sidenav-item{{ Request::is('user/myorders', 'user/myorder/detail/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_myorders') }}" class="sidenav-link"><i class="sidenav-icon ion ion ion-ios-contact"></i><div>{{ __('navigation.my') }}</div></a>
|
||||
</li>
|
||||
<li class="sidenav-item">
|
||||
<a href="{{ route('user_order_my_delivery', ['cr']) }}" class="sidenav-link"><i class="sidenav-icon ion-md-cash"></i><div>{{ __('navigation.recharge_credit') }}</div></a>
|
||||
<li class="sidenav-item{{ Request::is('user/sales', 'user/sales/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_sales') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-contacts"></i><div>{{ __('navigation.clients') }}</div></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
|
|
@ -127,10 +144,10 @@
|
|||
<li class="sidenav-item{{ Request::is('admin/product/ingredients') ? ' active' : '' }}">
|
||||
<a href="{{ route('admin_product_ingredients') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-ice-cream"></i><div>{{ __('navigation.ingredients') }}</div></a>
|
||||
</li>
|
||||
{{--<li class="sidenav-item{{ Request::is('admin/product/attributes') ? ' active' : '' }}">
|
||||
<li class="sidenav-item{{ Request::is('admin/product/attributes') ? ' active' : '' }}">
|
||||
<a href="{{ route('admin_product_attributes') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-apps"></i><div>{{ __('navigation.attribute') }}</div></a>
|
||||
</li>
|
||||
--}}
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
|
@ -175,7 +192,6 @@
|
|||
<a href="{{ route('admin_payments_invoice') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-arrow-dropleft-circle"></i><div>{{ __('navigation.invoice') }}</div></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="sidenav-item @if(Request::is('admin/promotions', '/admin/promotion/*')) open @endif">
|
||||
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
|
||||
<i class="sidenav-icon ion ion-ios-rocket"></i>
|
||||
|
|
@ -187,7 +203,17 @@
|
|||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="sidenav-item @if(Request::is('admin/stats/*')) open @endif">
|
||||
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
|
||||
<i class="sidenav-icon ion ion-md-analytics"></i>
|
||||
<div>{{ __('navigation.evaluation') }}</div>
|
||||
</a>
|
||||
<ul class="sidenav-menu">
|
||||
<li class="sidenav-item{{ Request::is('admin/stats/sales/volumes') ? ' active' : '' }}">
|
||||
<a href="{{ route('admin_stats_sales_volumes') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-cart"></i><div>{{ __('navigation.sales_volumes') }}</div></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
{{--
|
||||
<li class="sidenav-item @if(Request::is('admin/sites/*')) open @endif">
|
||||
|
|
@ -237,11 +263,12 @@
|
|||
<li class="sidenav-item{{ Request::is('admin/levels') ? ' active' : '' }} {{ Request::is('admin/level/edit/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('admin_levels') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-trending-up"></i><div>{{ __('navigation.user_level') }}</div></a>
|
||||
</li>
|
||||
|
||||
<li class="sidenav-item{{ Request::is('admin/lead_types') ? ' active' : '' }}">
|
||||
<a href="{{ route('admin_lead_types') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-contacts"></i><div>Arten {{ __('navigation.member') }}</div></a>
|
||||
</li>
|
||||
<li class="sidenav-item{{ Request::is('admin/countries') ? ' active' : '' }} {{ Request::is('admin/country/edit/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('admin_countries') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-globe"></i><div>{{ __('navigation.countries') }}</div></a>
|
||||
</li>
|
||||
|
||||
<li class="sidenav-item{{ Request::is('admin/settings') ? ' active' : '' }} {{ Request::is('admin/setting/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('admin_settings') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-cog"></i><div>{{ __('navigation.settings') }}</div></a>
|
||||
</li>
|
||||
|
|
|
|||
424
resources/views/pdf/delivery.blade.php
Normal file
424
resources/views/pdf/delivery.blade.php
Normal file
|
|
@ -0,0 +1,424 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title>partner.gruene-seele.bio</title>
|
||||
<style>
|
||||
|
||||
/* roboto-300 - latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url('fonts/roboto-v20-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
}
|
||||
/* roboto-regular - latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('fonts/roboto-v20-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
}
|
||||
/* roboto-500 - latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: url('fonts/roboto-v20-latin-500.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
}
|
||||
/* roboto-700 - latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url('fonts/roboto-v20-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
}
|
||||
html {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
color: #000;
|
||||
background: #fff;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 8pt;
|
||||
font-weight: 400 ;
|
||||
}
|
||||
table {
|
||||
border: none;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
@page {
|
||||
margin: 0px;
|
||||
}
|
||||
@page {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
|
||||
@page {
|
||||
margin: 40mm 0 20mm 0;
|
||||
}
|
||||
|
||||
.font-weight-bold {
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
#title_box {
|
||||
position: absolute;
|
||||
top:0mm;
|
||||
left: 15mm;
|
||||
width: 180mm;
|
||||
height: 10mm;
|
||||
z-index: 1;
|
||||
text-align: left;
|
||||
}
|
||||
#title_box .title {
|
||||
font-size: 15pt;
|
||||
line-height: 12pt;
|
||||
}
|
||||
#title_box .subtitle {
|
||||
font-size: 9pt;
|
||||
line-height: 9pt;
|
||||
}
|
||||
|
||||
#address_box {
|
||||
position: absolute;
|
||||
top:10mm;
|
||||
left: 15mm;
|
||||
width: 90mm;
|
||||
height: 30mm;
|
||||
z-index: 2;
|
||||
font-size: 8pt;
|
||||
line-height: 9pt;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
#address_delivery_box {
|
||||
position: absolute;
|
||||
top:10mm;
|
||||
left: 105mm;
|
||||
width: 90mm;
|
||||
height: 30mm;
|
||||
z-index: 3;
|
||||
font-size: 8pt;
|
||||
line-height: 9pt;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
|
||||
#detail_box_left {
|
||||
position: absolute;
|
||||
top:40mm;
|
||||
left: 15mm;
|
||||
width: 90mm;
|
||||
height: 15mm;
|
||||
z-index: 3;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
#detail_box_right {
|
||||
position: absolute;
|
||||
top:40mm;
|
||||
left: 105mm;
|
||||
width: 90mm;
|
||||
height: 15mm;
|
||||
z-index: 4;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
#detail_box_left table, #detail_box_right table {
|
||||
width: 100%;
|
||||
line-height: 9pt;
|
||||
}
|
||||
|
||||
#detail_box_left table td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#detail_box_right table td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#relatve_box {
|
||||
position: relative;
|
||||
padding-top: 0mm;
|
||||
width: 180mm;
|
||||
height: 30mm;
|
||||
font-size: 8pt;
|
||||
line-height: 8pt;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#invoice_box {
|
||||
position: relative;
|
||||
padding-top: 20mm;
|
||||
margin-left: 15mm;
|
||||
width: 180mm;
|
||||
font-size: 8pt;
|
||||
z-index: 10;
|
||||
line-height: 8pt;
|
||||
}
|
||||
|
||||
#invoice_box table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
|
||||
#invoice_box table tfoot tr {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
|
||||
#invoice_box table tr td {
|
||||
vertical-align: top;
|
||||
padding-top: 2mm;
|
||||
padding-bottom: 2mm;
|
||||
padding-left: 1.5mm;
|
||||
padding-right: 1.5mm;
|
||||
border-top: 0.5pt dotted #1a1a18;
|
||||
}
|
||||
|
||||
#invoice_box table tfoot tr td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
#invoice_box table tfoot tr.fullline td {
|
||||
border-top: 0.3pt solid #575755;
|
||||
}
|
||||
|
||||
#invoice_box table tfoot tr.fullline td.no-border {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
#invoice_box table tfoot tr td {
|
||||
padding-top: 1.2mm;
|
||||
padding-bottom: 1.2mm;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#invoice_box table td.small {
|
||||
width: 1%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#invoice_box table tr th {
|
||||
line-height: 12pt;
|
||||
padding-bottom: 1mm;
|
||||
padding-left: 1mm;
|
||||
padding-right: 1mm;
|
||||
background-color: rgb(212, 212, 212);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#invoice_box table td .title {
|
||||
font-size: 10pt;
|
||||
}
|
||||
#invoice_box table td .description {
|
||||
padding-top: 1mm;
|
||||
font-size: 9pt;
|
||||
|
||||
}
|
||||
|
||||
#invoice_box table td .price_net {
|
||||
padding-top: 1mm;
|
||||
font-size: 10pt;
|
||||
padding-bottom: 1mm;
|
||||
}
|
||||
|
||||
#invoice_box table td .price_tax {
|
||||
padding-top: 0.7mm;
|
||||
padding-bottom: 0.7mm;
|
||||
}
|
||||
|
||||
#invoice_box table td .price_total {
|
||||
padding-top: 2mm;
|
||||
font-size: 11pt;
|
||||
}
|
||||
.singel-line-top {
|
||||
border-top: 1pt solid #1a1a18;
|
||||
}
|
||||
.double-line {
|
||||
border-bottom: 2.5pt double #1a1a18;
|
||||
}
|
||||
.dotted-line {
|
||||
border-bottom: 0.8pt dotted #1a1a18;
|
||||
}
|
||||
|
||||
#footer_box {
|
||||
position: relative;
|
||||
top:0mm;
|
||||
left: 15mm;
|
||||
width: 180mm;
|
||||
height: 20mm;
|
||||
z-index: 6;
|
||||
font-size: 8pt;
|
||||
line-height: 8pt;
|
||||
}
|
||||
|
||||
.text-right {
|
||||
text-align: right;
|
||||
}
|
||||
.text-left {
|
||||
text-align: left;
|
||||
}
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
.img-responsive { width: 100%; height: 100%; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="relatve_box">
|
||||
|
||||
<div id="title_box">
|
||||
<div class="title">Lieferschein</div>
|
||||
</div>
|
||||
|
||||
<div id="address_box">
|
||||
<strong>Rechnungsadresse</strong><br>
|
||||
@if($shopping_order->shopping_user->billing_company)
|
||||
{{ $shopping_order->shopping_user->billing_company }}<br>
|
||||
@else
|
||||
@if($shopping_order->payment_for !== 7)
|
||||
Firma <br>
|
||||
@endif
|
||||
@endif
|
||||
{{ \App\Services\HTMLHelper::getSalutationLang($shopping_order->shopping_user->billing_salutation) }}
|
||||
{{ $shopping_order->shopping_user->billing_firstname }} {{ $shopping_order->shopping_user->billing_lastname }}<br>
|
||||
{{ $shopping_order->shopping_user->billing_address }}<br>
|
||||
@if($shopping_order->shopping_user->billing_address_2)
|
||||
{{ $shopping_order->shopping_user->billing_address_2 }}<br>
|
||||
@endif
|
||||
{{ $shopping_order->shopping_user->billing_zipcode }} {{ $shopping_order->shopping_user->billing_city }}<br>
|
||||
@if($shopping_order->shopping_user->billing_country)
|
||||
{{ $shopping_order->shopping_user->billing_country->getLocated() }}
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div id="address_delivery_box">
|
||||
<strong>Lieferadresse</strong><br>
|
||||
@if($shopping_order->shopping_user->same_as_billing)
|
||||
|
||||
{{__('email.checkout_mail_same_address')}}
|
||||
@else
|
||||
|
||||
@if($shopping_order->shopping_user->shipping_company)
|
||||
{{ $shopping_order->shopping_user->shipping_company }}<br>
|
||||
@else
|
||||
@if($shopping_order->payment_for !== 7)
|
||||
Firma <br>
|
||||
@endif
|
||||
@endif
|
||||
{{ \App\Services\HTMLHelper::getSalutationLang($shopping_order->shopping_user->shipping_salutation) }}
|
||||
{{ $shopping_order->shopping_user->shipping_firstname }} {{ $shopping_order->shopping_user->shipping_lastname }}<br>
|
||||
{{ $shopping_order->shopping_user->shipping_address }}<br>
|
||||
@if($shopping_order->shopping_user->shipping_address_2)
|
||||
{{ $shopping_order->shopping_user->shipping_address_2 }}<br>
|
||||
@endif
|
||||
{{ $shopping_order->shopping_user->shipping_zipcode }} {{ $shopping_order->shopping_user->shipping_city }}<br>
|
||||
@if($shopping_order->shopping_user->shipping_country)
|
||||
{{ $shopping_order->shopping_user->shipping_country->getLocated() }}
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
<div id="detail_box_left">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
{{ __('Rechnungsnummer') }}: {{ $invoice_number }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{{ __('Bestellnummer') }}: {{ $shopping_order->getLastShoppingPayment('reference') }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="detail_box_right">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
{{ __('Datum') }}: {{ $invoice_date }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{{ __(' Umsatzsteuer-ID') }}: DE296797691
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="invoice_box">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-left" style="width: auto">Etikett</th>
|
||||
<th class="text-left" style="width: auto">Bezeichnung</th>
|
||||
<th class="text-right" style="width: 2cm">Anzahl</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if($delivery_items)
|
||||
@foreach($delivery_items as $shopping_order_item)
|
||||
@php($varinations = "")
|
||||
<tr class="item">
|
||||
<td class="small text-left">
|
||||
@if(isset($shopping_order_item->labels) && is_array($shopping_order_item->labels))
|
||||
@foreach($shopping_order_item->labels as $product_image)
|
||||
<div style="width: {{ $product_image->varinat['size'] }}cm; height: {{ $product_image->varinat['size'] }}cm;">
|
||||
<img src="{{ $product_image->getBaseImagePath() }}" class="img-responsive">
|
||||
</div>
|
||||
{{ $product_image->varinat['size'] }}cm / {{ $product_image->varinat['vol'] }}ml
|
||||
@php($varinations .= "<br>Tiegel: ".$product_image->varinat['name'])
|
||||
@endforeach
|
||||
@endif
|
||||
</td>
|
||||
<td class="small text-left">
|
||||
<strong>
|
||||
{{ $shopping_order_item->product->getWhiteLableName() }}
|
||||
</strong>
|
||||
{!! $varinations !!}
|
||||
</td>
|
||||
<td class="text-right small">
|
||||
<strong>
|
||||
{{ $shopping_order_item->qty }}
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr class="fullline">
|
||||
<td class="text-right" colspan="2">
|
||||
Gesamt:
|
||||
</td>
|
||||
<td class="text-right">
|
||||
{{ $shopping_order->getItemsCount() }}
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -476,10 +476,42 @@
|
|||
</div>
|
||||
<div id="footer_box">
|
||||
<div class="text">
|
||||
<p>Lieferdatum entspricht dem Rechnungsdatum.<br>
|
||||
Verwendungszweck: <b>{{ $shopping_order->getLastShoppingPayment('reference') }}</b> / Status der Rechnung: <b>{{ App\Services\Payment::getFormattedTxaction($shopping_order->txaction) }}</b> / Zahlungsart: <b>{{ $shopping_order->getLastShoppingPayment('getPaymentType') }}</b><br>
|
||||
Bei Kauf auf Rechnung / Vorauskasse, bitte den Gesamtbetrag innerhalb von 5 Werktagen auf unten stehendes Konto überweisen. </p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer_box">
|
||||
<div class="text">
|
||||
<p>{{ __('pdf.delivery_date_is_invoice_date') }}<br>
|
||||
{{ __('pdf.intended_use') }}: <b>{{ $shopping_order->getLastShoppingPayment('reference') }}</b>
|
||||
/ {{ __('pdf.status_of_invoice') }}: <b>{{ App\Services\Payment::getFormattedTxaction($shopping_order->txaction) }}</b>
|
||||
/ {{ __('pdf.payment_type') }}: <b>{{ $shopping_order->getLastShoppingPayment('getPaymentType') }}</b><br>
|
||||
{{ __('pdf.invoice_footer_info') }}</p>
|
||||
</p>
|
||||
|
||||
@if(isset($shopping_order->shopping_user->auth_user))
|
||||
<p>
|
||||
@if(isset($shopping_order->shopping_user->auth_user->account->tax_identification_number) && $shopping_order->shopping_user->auth_user->account->tax_identification_number !== '')
|
||||
<b>{{ __('pdf.vat_id_of_the_recipient_of_the_service') }}: {{ $shopping_order->shopping_user->auth_user->account->tax_identification_number }}</b><br>
|
||||
@else
|
||||
@if(isset($shopping_order->shopping_user->auth_user->account->tax_number) && $shopping_order->shopping_user->auth_user->account->tax_number !== '')
|
||||
{{ __('pdf.vat_of_the_recipient_of_the_service') }}: {{ $shopping_order->shopping_user->auth_user->account->tax_number }}<br>
|
||||
@endif
|
||||
@endif
|
||||
@if(isset($user_reverse_charge) && $user_reverse_charge)
|
||||
<br>{{ __('pdf.invoice_does_not_include_vat') }}<br>
|
||||
{{ __('pdf.vat_is_declared_and_paid_by_recipient') }}<br>
|
||||
{{ __('pdf.tax_free_export_delivery_eu') }} / {{ $shopping_order->shopping_user->billing_country->getLocated() }}
|
||||
@endif
|
||||
|
||||
@if((isset($user_tax_free) && $user_tax_free) && (!isset($user_reverse_charge) || $user_reverse_charge == false))
|
||||
<br><b>{{ __('pdf.tax_free_export_delivery_noteu') }} / {{ $shopping_order->shopping_user->billing_country->getLocated() }}</b>
|
||||
@endif
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -62,8 +62,8 @@
|
|||
{{ Form::text('address_2', $user->account->address_2, array('placeholder'=>__('Wohnung / Gebäude (optional)'), 'class'=>'form-control', 'id'=>'address_2', 'tabindex' => 6)) }}
|
||||
</div>
|
||||
<div class="form-group col-md-5">
|
||||
<label for="birthday" class="form-label">{{ __('Geburtsdatum') }}*</label>
|
||||
{{ Form::text('birthday', $user->account->birthday, array('placeholder'=>Util::formatDate(), 'data-date-format'=>Util::formatDate(), 'data-start_view'=>2, 'required'=>true, 'class'=>'form-control datepicker-birthday')) }}
|
||||
<label for="birthday" class="form-label">{{ __('Geburtsdatum') }}</label>
|
||||
{{ Form::text('birthday', $user->account->birthday, array('placeholder'=>Util::formatDate(), 'data-date-format'=>Util::formatDate(), 'data-start_view'=>2, 'required'=>false, 'class'=>'form-control datepicker-birthday')) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
|
@ -170,6 +170,69 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="form-label" for="taxable_sales">{{ __('account.VAT_liability') }} @if($user->account->getCountryAttrAs('taxable_sales'))* @endif</label>
|
||||
<select class="selectpicker" name="taxable_sales" id="taxable_sales" data-style="btn-light" @if($user->account->getCountryAttrAs('taxable_sales')) required @endif>
|
||||
{!! HTMLHelper::getTaxSaleOptions($user->account->taxable_sales) !!}
|
||||
</select>
|
||||
<p class="badge">{{ __('account.VAT_copy_1') }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-6">
|
||||
<label class="form-label" for="tax_number">{{ __('account.tax_number') }} @if($user->account->getCountryAttrAs('tax_number'))* @endif</label>
|
||||
{{ Form::text('tax_number', $user->account->tax_number, array('placeholder'=>__('account.tax_number'), 'class'=>'form-control', 'id'=>'tax_number', $user->account->getCountryAttrAs('tax_number','required'))) }}
|
||||
</div>
|
||||
{{-- !isset($step) && --}}
|
||||
@if($user->account->country_id && $user->account->country->eu_country)
|
||||
<div class="col-sm-12">
|
||||
<hr>
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('tax_identification_number') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="tax_identification_number">{{ __('account.VAT_ID_number') }} @if($user->account->getCountryAttrAs('tax_id_number'))* @endif</label>
|
||||
|
||||
{{ Form::text('tax_identification_number', $user->account-> tax_identification_number, array('placeholder'=>__('account.VAT_ID_number'), 'class'=>'form-control', 'id'=>'tax_identification_number', $user->account->getCountryAttrAs('tax_id_number','required'), ($user->account->reverse_charge_valid ? 'readonly' : ''))) }}
|
||||
@if ($errors->has('tax_identification_number'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('tax_identification_number') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group col-sm-12 {{ $errors->has('reverse_charge') ? 'has-error' : '' }}">
|
||||
<label class="custom-control custom-checkbox">
|
||||
{!! Form::checkbox('reverse_charge', 1, $user->account->reverse_charge, ['class'=>'custom-control-input']) !!}
|
||||
<span class="custom-control-label">{{ __('account.reverse_charge_procedure') }}</span><br>
|
||||
<em>{{ __('account.reverse_charge_copy_1') }}
|
||||
<strong>{{ __('account.reverse_charge_note_1') }}</strong></em>
|
||||
</label>
|
||||
@if($user->account->reverse_charge_valid)
|
||||
<div class="badge badge-secondary">Aktiv seit: {{ $user->account->getReverseChargeValidFormat() }}</div>
|
||||
<button type="submit" class="btn btn-xs btn-danger" name="reverse_charge_delete" value="1"><i class="fa fa-trash"></i> {{ __('account.reverse_charge_action_1') }}</button>
|
||||
|
||||
@endif
|
||||
@if ($errors->has('reverse_charge'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('reverse_charge') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
@if(!$user->account->reverse_charge_valid)
|
||||
<button type="submit" class="btn btn-sm btn-primary" name="reverse_charge_validate" value="1">{{ __('account.reverse_charge_action_2') }}</button>
|
||||
@endif
|
||||
@else
|
||||
<div class="form-group col-md-6">
|
||||
<label class="form-label" for="tax_identification_number">{{ __('account.VAT_ID_number') }} @if($user->account->getCountryAttrAs('tax_id_number'))* @endif</label>
|
||||
{{ Form::text('tax_identification_number', $user->account-> tax_identification_number, array('placeholder'=>__('account.VAT_ID_number'), 'class'=>'form-control', 'id'=>'tax_identification_number', $user->account->getCountryAttrAs('tax_id_number','required'))) }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
|
|
|
|||
|
|
@ -450,13 +450,19 @@
|
|||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_country_id') ? 'has-error' : '' }}">
|
||||
<label class="form-label">{{ __('Lieferland') }}*</label>
|
||||
<select class="selectpicker" name="shipping_country_id" id="shipping_country_id" data-style="btn-light" data-live-search="false" tabindex="24">
|
||||
{!! HTMLHelper::getCountriesForShipping($shopping_user->shipping_state) !!}
|
||||
</select>
|
||||
@if($is_from === 'shopping')
|
||||
<select class="custom-select" name="shipping_country_id" id="shipping_country_id">
|
||||
{!! HTMLHelper::getCountriesForShipping($shopping_user->shipping_state) !!}
|
||||
</select>
|
||||
@else
|
||||
{{ Form::hidden('shipping_country_id', $shopping_user->shipping_state) }}
|
||||
{{ Form::text('shipping_country_show', $shopping_user->shipping_country->getLocated(), array('readonly'=>true, 'class'=>'form-control', 'id'=>'shipping_country_show')) }}
|
||||
<p class="text-muted small mb-0"><i>Dei das Lieferland kann nur vor der Bestellung in den Daten geändert werden.</i></p>
|
||||
@endif
|
||||
@if ($errors->has('shipping_country_id'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_country_id') }}</strong>
|
||||
</span>
|
||||
<strong>{{ $errors->first('shipping_country_id') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,4 +26,45 @@
|
|||
<a href="{{route('home')}}" class="btn btn-default">{{ __('back') }}</a>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modal-user-vat-validation">
|
||||
<div class="modal-dialog">
|
||||
{!! Form::open(['url' => route('user_edit'), 'class' => 'modal-content']) !!}
|
||||
<input type="hidden" name="user_id" id="user_id" value="@if($user->id>0){{$user->id}}@else new @endif">
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Neue UST-ID validieren und Reverse Charge Verfahren aktivieren</span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-12">
|
||||
<p>Umkehrung der Steuerschuldnerschaft oder auch Abzugsverfahren. In diesem Spezialfall muss der Leistungsempfänger (Vertriebspartner) und nicht der leistende Unternehmer (Grüne Seele) die Umsatzsteuer entrichten.</p>
|
||||
<p>Bei der Aktivierung wird die USt-ID benötigt und validiert.</p>
|
||||
</div>
|
||||
<div class="form-group col-sm-12 {{ $errors->has('reverse_charge') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="tax_identification_number">{{ __('USt-ID Nummer') }} *</label>
|
||||
{{ Form::text('tax_identification_number', $user->account-> tax_identification_number, array('placeholder'=>__('USt-ID Nummer'), 'class'=>'form-control', 'id'=>'tax_identification_number', 'required'=>true)) }}
|
||||
|
||||
@if ($errors->has('reverse_charge'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('reverse_charge') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
<button type="submit" class="btn btn-primary" name="action" value="reverse_charge_validate">USt-ID Nummer validieren</button>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@
|
|||
</div>
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="birthday" class="form-label">{{ __('Geburtsdatum') }}*</label>
|
||||
{{ Form::text('birthday', $user->account->birthday, array('placeholder'=>Util::formatDate(), 'data-date-format'=>Util::formatDate(), 'data-start_view'=>2, 'required'=>true, 'class'=>'form-control datepicker-birthday')) }}
|
||||
<label for="birthday" class="form-label">{{ __('Geburtsdatum') }}</label>
|
||||
{{ Form::text('birthday', $user->account->birthday, array('placeholder'=>Util::formatDate(), 'data-date-format'=>Util::formatDate(), 'data-start_view'=>2, 'required'=>false, 'class'=>'form-control datepicker-birthday')) }}
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
|
|
|||
|
|
@ -48,7 +48,13 @@
|
|||
</label>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
@if(Session::has('custom-error'))
|
||||
<div class="alert alert-dark-warning alert-dismissible fade show">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>{{ Session::get('custom-error') }}</strong>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div id="show-is-for-customer" @if(!$shopping_user) style="display: none" @endif >
|
||||
<div class="form-row">
|
||||
<div class="form-group col-sm-6">
|
||||
|
|
@ -64,13 +70,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
@if($shopping_user)
|
||||
@if(Session::has('custom-error'))
|
||||
<div class="alert alert-dark-warning alert-dismissible fade show">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>{{ Session::get('custom-error') }}</strong>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="show-is-for-customer">
|
||||
<h4>An diesen Kunde versenden</h4>
|
||||
<p>Sollten unten stehende Angaben nicht korrekt sein oder aktualisiert werden müssen, ändere diese bitte vorerst unter:
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
@section('content')
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
<a href="{{route('user_orders')}}" class="btn btn-sm btn-default float-right">zurück</a>
|
||||
<a href="{{route('user_myorders')}}" class="btn btn-sm btn-default float-right">zurück</a>
|
||||
{{ __('Bestellung Kunde') }} <span class="text-muted">#{{$shopping_order->id}}</span>
|
||||
</h4>
|
||||
@include('admin.sales._detail')
|
||||
<a href="{{route('user_orders')}}" class="btn btn-sm btn-default mt-2 float-right">zurück</a>
|
||||
<a href="{{route('user_myorders')}}" class="btn btn-sm btn-default mt-2 float-right">zurück</a>
|
||||
|
||||
@endsection
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
$('.datatable-users').dataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
"ajax": '{!! route('user_orders_datatable') !!}',
|
||||
"ajax": '{!! route('user_myorder_datatable') !!}',
|
||||
"order": [[0, "desc" ]],
|
||||
"columns": [
|
||||
{ data: 'id', searchable: false },
|
||||
|
|
|
|||
|
|
@ -80,6 +80,36 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card mt-2 mb-2">
|
||||
<div class="card-body">
|
||||
<h4>{{ __('order.delivery_to_me') }}</h4>
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('payment.ordering_country') }}</div>
|
||||
{{ App\Services\UserService::getOrderInfo('billing_state') }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('payment.country_of_delivery') }}</div>
|
||||
{{ App\Services\UserService::getOrderInfo('shipping_state') }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('payment.VAT') }}</div>
|
||||
{{ App\Services\UserService::getOrderInfo('tax_free') }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('payment.reverse_charge_procedure') }}</div>
|
||||
{{ App\Services\UserService::getOrderInfo('user_reverse_charge') }}
|
||||
</div>
|
||||
</div>
|
||||
<i>{!! __('order.delivery_country_changed_info', ['link'=> route('user_edit')]) !!}</i>
|
||||
<hr>
|
||||
@if($user->user_level)
|
||||
<p>{!! __('order.product_prices_career_level_info', ['user_level_name'=>$user->user_level->getLang('name'), 'user_level_margin'=>$user->user_level->getFormattedMargin()]) !!}</p>
|
||||
@else
|
||||
<p>{{ __('order.no_career_level_info') }}</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-datatable table-responsive">
|
||||
|
|
@ -118,7 +148,6 @@
|
|||
@if($for === 'me' || $for === 'mp')
|
||||
<h4>Mein Lieferland</h4>
|
||||
@include('user.order.shipping_me')
|
||||
<i>Kann bei der Zahlung/Checkout nicht mehr geändert werden.</i>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -10,21 +10,6 @@
|
|||
{{ Form::hidden('shipping_zipcode', $user->account->zipcode) }}
|
||||
{{ Form::hidden('shipping_city', $user->account->city) }}
|
||||
{{ Form::hidden('shipping_phone', $user->account->phone) }}
|
||||
|
||||
<div class="">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_state') ? 'has-error' : '' }}">
|
||||
<select name="shipping_state" class="selectpicker" id="change_shipping_state" data-is-for="me">
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId()) !!}
|
||||
</select>
|
||||
@if ($errors->has('shipping_state'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_state') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
{{ Form::hidden('shipping_company', $user->account->shipping_company) }}
|
||||
{{ Form::hidden('shipping_salutation', $user->account->shipping_salutation) }}
|
||||
|
|
@ -35,29 +20,38 @@
|
|||
{{ Form::hidden('shipping_zipcode', $user->account->shipping_zipcode) }}
|
||||
{{ Form::hidden('shipping_city', $user->account->shipping_city) }}
|
||||
{{ Form::hidden('shipping_phone', $user->account->shipping_phone) }}
|
||||
@endif
|
||||
|
||||
<div class="">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_state') ? 'has-error' : '' }}">
|
||||
<select name="shipping_state" class="selectpicker" id="change_shipping_state" data-is-for="me">
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId()) !!}
|
||||
</select>
|
||||
@if ($errors->has('shipping_state'))
|
||||
@if(!App\Services\UserService::getTaxFree())
|
||||
<select name="shipping_state" class="selectpicker" id="change_shipping_state" data-is-for="me">
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId()) !!}
|
||||
</select>
|
||||
<p class="text-muted small mt-1"<i>Lieferadresse kann bei der Zahlung im Checkout nicht mehr geändert werden.</i></p>
|
||||
|
||||
@else
|
||||
{{ Form::hidden('shipping_state', Yard::instance('shopping')->getShippingCountryId()) }}
|
||||
{{ Form::text('shipping_state_show', App\Services\UserService::getShippingCountryNameById(Yard::instance('shopping')->getShippingCountryId()), array('readonly'=>true, 'class'=>'form-control')) }}
|
||||
<p class="text-muted small mt-1"><i>Dei das Lieferland kann nur vor der Bestellung in den Daten geändert werden.</i></p>
|
||||
@endif
|
||||
@if($errors->has('shipping_state'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_state') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="form-label" for="shipping_phone">{{ __('Phone') }}</label>
|
||||
{{ Form::text('shipping_phone', $user->account->shipping_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control')) }}
|
||||
@if(!$user->account->same_as_billing)
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="form-label" for="shipping_phone">Lieferadresse {{ __('Phone') }}</label>
|
||||
{{ Form::text('shipping_phone', $user->account->shipping_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control')) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
@else
|
||||
<h4>Fehler: Keine Adressdaten gefunden!</h4>
|
||||
@endif
|
||||
|
|
@ -1,6 +1,4 @@
|
|||
@if($shopping_user->same_as_billing)
|
||||
<!-- Billing -->
|
||||
|
||||
{{ Form::hidden('shipping_company', $shopping_user->billing_company) }}
|
||||
{{ Form::hidden('shipping_salutation', $shopping_user->billing_salutation) }}
|
||||
{{ Form::hidden('shipping_firstname', $shopping_user->billing_firstname) }}
|
||||
|
|
@ -10,23 +8,6 @@
|
|||
{{ Form::hidden('shipping_zipcode', $shopping_user->billing_zipcode) }}
|
||||
{{ Form::hidden('shipping_city', $shopping_user->billing_city) }}
|
||||
{{ Form::hidden('shipping_phone', $shopping_user->billing_phone) }}
|
||||
|
||||
|
||||
<div class="">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_state') ? 'has-error' : '' }}">
|
||||
<select name="shipping_state" class="selectpicker" id="change_shipping_state" data-is-for="ot">
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId()) !!}
|
||||
</select>
|
||||
@if ($errors->has('shipping_state'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_state') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- / Billing -->
|
||||
@else
|
||||
|
||||
{{ Form::hidden('shipping_company', $shopping_user->shipping_company) }}
|
||||
|
|
@ -38,18 +19,38 @@
|
|||
{{ Form::hidden('shipping_zipcode', $shopping_user->shipping_zipcode) }}
|
||||
{{ Form::hidden('shipping_city', $shopping_user->shipping_city) }}
|
||||
{{ Form::hidden('shipping_phone', $shopping_user->shipping_phone) }}
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
<div class="">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_state') ? 'has-error' : '' }}">
|
||||
<select name="shipping_state" class="selectpicker" id="change_shipping_state" data-is-for="ot">
|
||||
@if(!App\Services\UserService::getTaxFree())
|
||||
<select name="shipping_state" class="selectpicker" id="change_shipping_state" data-is-for="ot">
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId()) !!}
|
||||
</select>
|
||||
@if ($errors->has('shipping_state'))
|
||||
</select>
|
||||
<p class="text-muted small mt-1"<i>Lieferadresse kann bei der Zahlung im Checkout nicht mehr geändert werden.</i></p>
|
||||
|
||||
@else
|
||||
{{ Form::hidden('shipping_state', Yard::instance('shopping')->getShippingCountryId()) }}
|
||||
{{ Form::text('shipping_state_show', App\Services\UserService::getShippingCountryNameById(Yard::instance('shopping')->getShippingCountryId()), array('readonly'=>true, 'class'=>'form-control')) }}
|
||||
<p class="text-muted small mt-1"><i>Dei das Lieferland kann nur vor der Bestellung in den Daten geändert werden.</i></p>
|
||||
@endif
|
||||
@if($errors->has('shipping_state'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_state') }}</strong>
|
||||
</span>
|
||||
<strong>{{ $errors->first('shipping_state') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@if(!$shopping_user->same_as_billing)
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="form-label" for="shipping_phone">Lieferadresse {{ __('Phone') }}</label>
|
||||
{{ Form::text('shipping_phone', $shopping_user->shipping_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control')) }}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
|
@ -92,13 +92,13 @@
|
|||
<div class="form-group col-12">
|
||||
<label class="form-label" for="about_you">Kurzer Text über Dich (erscheint auf Deiner Promotion Seite) max. 600 Zeichen</label>
|
||||
{{ Form::textarea('about_you', $user_promotion->about_you, ['placeholder' => __('Über dich'), 'class' => 'form-control bootstrap-maxlength text-autosize', 'maxlength'=>600, 'rows' => 1, 'id' => 'about_you']) }}
|
||||
<p class="mt-1 mb-0"><i>Einen kurzen Text über Dich kannst Du in <a class="btn btn-xs btn-outline-primary" href="{{ route('user_profile') }}">"Mein Konto - Mein Profil"</a> hinterlegen, dieser wird automatisch hier eingefügt, kann aber abgeändert werden.</i></p>
|
||||
<p class="mt-2 mb-0"><i>Einen kurzen Text über Dich kannst Du in <a class="btn btn-xs btn-outline-primary" href="{{ route('user_profile') }}">"Mein Konto - Mein Profil"</a> hinterlegen, dieser wird automatisch hier eingefügt, kann aber abgeändert werden.</i></p>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('internal_name') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="internal_name">Interner Titel*</label>
|
||||
<label class="form-label" for="internal_name">Interner Titel (erscheint auf Deiner Übersichtsseite)*</label>
|
||||
{{ Form::text('internal_name', $user_promotion->internal_name, ['placeholder' => __('Promotion Interner Titel'), 'class' => 'form-control', 'id' => 'internal_name', 'required' => true]) }}
|
||||
@if ($errors->has('internal_name'))
|
||||
<span class="help-block">
|
||||
|
|
@ -107,8 +107,8 @@
|
|||
@endif
|
||||
</div>
|
||||
<div class="form-group col-12">
|
||||
<label class="form-label" for="description">Internere Kurzbeschreibung</label>
|
||||
{{ Form::textarea('internal_description', $user_promotion->internal_description, ['placeholder' => __('Internere Kurzbeschreibung'), 'class' => 'form-control text-autosize', 'rows' => 1, 'id' => 'internal_description']) }}
|
||||
<label class="form-label" for="description">Interne Kurzbeschreibung (erscheint auf Deiner Übersichtsseite)</label>
|
||||
{{ Form::textarea('internal_description', $user_promotion->internal_description, ['placeholder' => __('Interne Kurzbeschreibung'), 'class' => 'form-control text-autosize', 'rows' => 1, 'id' => 'internal_description']) }}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
|
@ -117,7 +117,7 @@
|
|||
<div class="input-group mt-2 mb-2 ">
|
||||
<span class="input-group-prepend">
|
||||
<div class="py-2 px-1">
|
||||
<strong>www.testemich.jetzt/ </strong>
|
||||
<strong>{{ config('app.promo_domain') }} / </strong>
|
||||
</div>
|
||||
</span>
|
||||
{{ Form::text('user_promotion_url', $user_promotion->url, ['placeholder' => 'z.B. "thomas" oder "dani21" o.ä.', 'class' => 'form-control' . ($errors->has('user_promotion_url') ? ' is-invalid' : ''), 'id' => 'user_promotion_url', 'required' => true]) }}
|
||||
|
|
@ -142,10 +142,12 @@
|
|||
<label class="form-label">Vorschau Domain / URL für Deine Promotion</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-prepend">
|
||||
<button class="btn btn-sm btn-secondary" type="button" title="Kopiert!" data-clipboard-demo data-clipboard-target="#promotion_link"><i class="ion ion-ios-copy"></i> Domain kopieren</button>
|
||||
<button class="btn btn-sm btn-secondary" type="button" title="Kopiert!" data-clipboard-demo data-clipboard-target="#preview_user_promotion_url"><i class="ion ion-ios-copy"></i> Domain kopieren</button>
|
||||
</span>
|
||||
{{ Form::text('preview_user_promotion_url', $user_promotion->getUrlPreview(), ['placeholder' => __('Vorschau Shop-Internet Adresse'), 'class' => 'form-control', 'id' => 'preview_user_promotion_url', 'readonly']) }}
|
||||
</div>
|
||||
<p class="mt-2 mb-0"><i>Wird die Domain für die Promotion geändert, ist die aktuelle Domain ab sofort nicht mehr aufrufbar, bitte denkt daran Eure Kunden zu informieren.</i></p>
|
||||
|
||||
</div>
|
||||
<div class="form-group col-sm-2 mb-0">
|
||||
<label class="form-label"> </label>
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
@section('content')
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
<a href="{{route('user_sales_orders')}}" class="btn btn-sm btn-default float-right">zurück</a>
|
||||
<a href="{{route('user_sales')}}" class="btn btn-sm btn-default float-right">zurück</a>
|
||||
{{ __('Bestellung Kunde') }} <span class="text-muted">#{{$shopping_order->id}}</span>
|
||||
</h4>
|
||||
@include('admin.sales._detail')
|
||||
<a href="{{route('user_sales_orders')}}" class="btn btn-sm btn-default mt-2 float-right">zurück</a>
|
||||
<a href="{{route('user_sales')}}" class="btn btn-sm btn-default mt-2 float-right">zurück</a>
|
||||
@endsection
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
$('.datatable-customers').dataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
"ajax": '{!! route('user_sales_orders_datatable') !!}',
|
||||
"ajax": '{!! route('user_sales_datatable') !!}',
|
||||
"order": [[0, "desc" ]],
|
||||
"columns": [
|
||||
{ data: 'id', searchable: false },
|
||||
|
|
@ -2,11 +2,38 @@
|
|||
|
||||
@section('content')
|
||||
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
<a href="{{route('admin_customers')}}" class="btn btn-sm btn-default float-right">zurück</a>
|
||||
{{ __('Kunden Details') }} <span class="text-muted">#{{$shopping_user->id}}</span>
|
||||
</h4>
|
||||
@include('admin.customer._detail')
|
||||
<a href="{{route('admin_customers')}}" class="btn btn-sm btn-default mt-2 float-right">zurück</a>
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@endsection
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
<div>{{ __('navigation.my_shop') }} / {{ __('navigation.settings') }}</div>
|
||||
</h4>
|
||||
|
||||
{!! Form::open(['url' => route('user_shop_store'), 'class' => 'form-horizontal', 'id'=>"user-shop-form-validations"]) !!}
|
||||
|
||||
@include('user.shop.form')
|
||||
|
||||
<div class="text-left mt-0 mb-2">
|
||||
<button type="submit" class="btn btn-submit" name="action" value="save-user-shop">Shop {{ __('navigation.settings') }} {{ __('save') }}</button>
|
||||
</div>
|
||||
|
||||
{!! Form::close() !!}
|
||||
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
|
|||
292
resources/views/user/shop/form.blade.php
Normal file
292
resources/views/user/shop/form.blade.php
Normal file
|
|
@ -0,0 +1,292 @@
|
|||
|
||||
<style>
|
||||
|
||||
table.table-product,
|
||||
table.table-product tr td,
|
||||
table.table-product tr th {
|
||||
border: none;
|
||||
}
|
||||
|
||||
table.table-product tr.border-top td {
|
||||
border-top: 1px solid #b8b8b9;
|
||||
}
|
||||
|
||||
table.table-product tr.border-bottom td,
|
||||
table.table-product tr.border-bottom th {
|
||||
border-bottom: 1px solid #b8b8b9;
|
||||
}
|
||||
|
||||
|
||||
.btn-md-extra {
|
||||
padding: 0.3rem 0.6rem;
|
||||
font-size: 0.8rem;
|
||||
line-height: 1.5;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.md-btn-extra {
|
||||
width: calc(1.7rem + 2px) !important;
|
||||
line-height: 1.5rem;
|
||||
}
|
||||
|
||||
.form-control.input-extra {
|
||||
padding: 0.28rem 0.6rem;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 500;
|
||||
min-height: calc(1.8rem + 2px);
|
||||
height: calc(1.8rem + 2px);
|
||||
width: 44px;
|
||||
}
|
||||
|
||||
.input-group-min-w {
|
||||
min-width: 102px;
|
||||
}
|
||||
|
||||
.img-extra {
|
||||
min-width: 55px;
|
||||
max-height: 160px;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.default-style:not([dir=rtl]) div.card-datatable table.dataTable thead th:first-child, .default-style:not([dir=rtl]) div.card-datatable table.dataTable tbody td:first-child, .default-style:not([dir=rtl]) div.card-datatable table.dataTable tfoot th:first-child {
|
||||
padding-left: 0.6rem !important;
|
||||
}
|
||||
|
||||
.img-extra {
|
||||
min-width: 35px;
|
||||
max-height: 160px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
<div class="card mb-2">
|
||||
<h5 class="card-header">
|
||||
Deine Shop Domain
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-8">
|
||||
<div class="input-group mt-2 mb-2 ">
|
||||
<span class="input-group-prepend">
|
||||
<div class="py-2 px-1">
|
||||
<strong>{{ config('app.shop_domain') }} </strong>
|
||||
</div>
|
||||
</span>
|
||||
{{ Form::text('user_shop_url', $user_shop->url, ['placeholder' => 'z.B. "thomas" oder "dani21" o.ä.', 'class' => 'form-control' . ($errors->has('user_shop_url') ? ' is-invalid' : ''), 'id' => 'user_shop_url', 'required' => true]) }}
|
||||
</div>
|
||||
@if ($errors->has('user_shop_url'))
|
||||
<span class="invalid-feedback" style="display: inline-block;">
|
||||
<strong>{{ $errors->first('user_shop_url') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<div class="px-3 py-0 py-md-3">
|
||||
<div class="badge badge-success" style="display: none" id="user_shop_url_success"><i
|
||||
class="fa fa-check"></i> ist noch frei</div>
|
||||
<div class="badge badge-danger" style="display: none" id="user_shop_url_error"><i
|
||||
class="fa fa-times"></i> nicht verfügbar/Fehler</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-sm-10 mb-0">
|
||||
<label class="form-label">Vorschau Domain / URL für Deinen Shop</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-prepend">
|
||||
<button class="btn btn-sm btn-secondary" type="button" title="Kopiert!" data-clipboard-demo data-clipboard-target="#preview_user_shop_url"><i class="ion ion-ios-copy"></i> Domain kopieren</button>
|
||||
</span>
|
||||
{{ Form::text('preview_user_shop_url', $user_shop->getUrlPreview(), ['placeholder' => __('Vorschau Shop-Internet Adresse'), 'class' => 'form-control', 'id' => 'preview_user_shop_url', 'readonly']) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-2 mb-0">
|
||||
<label class="form-label"> </label>
|
||||
<div>
|
||||
<a class="btn btn-sm btn-outline-primary mt-1" href="{{ $user_shop->getUrlPreview() }}" target="_blank"><i class="ion ion-ios-share-alt"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="mt-2 mb-0"><i>Wird die Domain für den Shop geändert, ist die aktuelle Domain ab sofort nicht mehr aufrufbar, bitte denke daran Deine Kunden zu informieren.</i></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card mb-2">
|
||||
<h5 class="card-header">
|
||||
Deine Shop Inhalte
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('name') ? 'has-error' : '' }}">
|
||||
<label class="custom-control custom-checkbox float-right">
|
||||
{!! Form::checkbox('active', 1, $user_shop->active, ['class' => 'custom-control-input']) !!}
|
||||
<span class="custom-control-label">{{ __('Shop aktiv') }}</span>
|
||||
</label>
|
||||
<label class="form-label" for="name">Dein angezeigter Name (erscheint auf Deiner Shop Seite) max. 50 Zeichen*</label>
|
||||
{{ Form::text('name', $user_shop->name, ['placeholder' => __('Shop Titel'), 'class' => 'form-control bootstrap-maxlength', 'maxlength'=>50, 'id' => 'name', 'required' => true]) }}
|
||||
@if ($errors->has('name'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('name') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
{{--
|
||||
<div class="form-group col-12">
|
||||
<label class="form-label" for="description">Kurzbeschreibung Deines Shops (erscheint auf Deiner Shop Seite) max. 600 Zeichen</label>
|
||||
{{ Form::textarea('description', $user_shop->description, ['placeholder' => __('Kurzbeschreibung'), 'class' => 'form-control bootstrap-maxlength text-autosize', 'maxlength'=>600, 'rows' => 1, 'id' => 'description']) }}
|
||||
</div>
|
||||
--}}
|
||||
|
||||
<div class="form-group col-12">
|
||||
<label class="form-label" for="about_you">Kurzer Text über Dich (erscheint auf Deiner Shop Seite) max. 600 Zeichen</label>
|
||||
{{ Form::textarea('about_you', $user_shop->about_you, ['placeholder' => __('Über dich'), 'class' => 'form-control bootstrap-maxlength text-autosize', 'maxlength'=>600, 'rows' => 1, 'id' => 'about_you']) }}
|
||||
<p class="mt-2 mb-0"><i>Einen kurzen Text über Dich kannst Du in <a class="btn btn-xs btn-outline-primary" href="{{ route('user_profile') }}">"Mein Konto - Mein Profil"</a> hinterlegen, dieser wird automatisch hier eingefügt, kann aber abgeändert werden.</i></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
{{-- <div class="form-group col-sm-12">
|
||||
<hr>
|
||||
<label class="custom-control custom-checkbox mt-2">
|
||||
{!! Form::checkbox('pick_up', 1, $user_shop->pick_up, ['class' => 'custom-control-input']) !!}
|
||||
<span class="custom-control-label">Kunden können bei mir persönlich abholen.</span>
|
||||
</label>
|
||||
</div>
|
||||
--}}
|
||||
<div class="from-group mb-2 col-md-6">
|
||||
<label class="form-label">Deine Kontaktadresse</label>
|
||||
{{ Form::textarea('user_address', $user_shop->user_address, ['class' => 'form-control', 'rows' => 5, 'id' => 'user_address']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="application/javascript">
|
||||
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
var clipboardDemos = new ClipboardJS('[data-clipboard-demo]');
|
||||
clipboardDemos.on('success', function (e) {
|
||||
e.clearSelection();
|
||||
$(e.trigger).tooltip('enable').tooltip('show');
|
||||
});
|
||||
clipboardDemos.on('error', function (e) {
|
||||
console.error('Action:', e.action);
|
||||
console.error('Trigger:', e.trigger);
|
||||
});
|
||||
|
||||
$('button[data-clipboard-demo]').on('mouseout', function () {
|
||||
$(this).tooltip('disable');
|
||||
});
|
||||
$.extend($.validator.messages, {
|
||||
required: "Dieses Feld ist ein Pflichtfeld.",
|
||||
maxlength: $.validator.format("Gib bitte maximal {0} Zeichen ein."),
|
||||
minlength: $.validator.format("Gib bitte mindestens {0} Zeichen ein."),
|
||||
rangelength: $.validator.format("Gib bitte mindestens {0} und maximal {1} Zeichen ein."),
|
||||
email: "Gib bitte eine gültige E-Mail Adresse ein.",
|
||||
url: "Gib bitte eine gültige URL ein.",
|
||||
date: "Bitte gib ein gültiges Datum ein.",
|
||||
number: "Gib bitte eine Nummer ein.",
|
||||
digits: "Gib bitte nur Ziffern ein.",
|
||||
equalTo: "Bitte denselben Wert wiederholen.",
|
||||
range: $.validator.format("Gib bitte einen Wert zwischen {0} und {1} ein."),
|
||||
max: $.validator.format("Gib bitte einen Wert kleiner oder gleich {0} ein."),
|
||||
min: $.validator.format("Gib bitte einen Wert größer oder gleich {0} ein."),
|
||||
creditcard: "Gib bitte eine gültige Kreditkarten-Nummer ein.",
|
||||
|
||||
});
|
||||
// Set up validator
|
||||
var message = 'Default error message';
|
||||
$('#user-shop-form-validations').validate({
|
||||
rules: {
|
||||
'user_shop_url': {
|
||||
required: true,
|
||||
remote: {
|
||||
url: "{{ route('user_shop_load') }}",
|
||||
type: "post",
|
||||
data: {
|
||||
user_shop_url: function() {
|
||||
return $(
|
||||
'#user-shop-form-validations :input[name="user_shop_url"]'
|
||||
).val();
|
||||
},
|
||||
action: 'validate_url',
|
||||
usid: '{{ $user_shop->id }}',
|
||||
},
|
||||
encode: true,
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
dataFilter: function(response) {
|
||||
response = $.parseJSON(response);
|
||||
console.log(response);
|
||||
$('#user_shop_url_success').hide();
|
||||
$('#user_shop_url_error').hide();
|
||||
if (response.success === true) {
|
||||
$('#user_shop_url_success').show();
|
||||
$('#preview_user_shop_url').val(response
|
||||
.preview_user_shop_url);
|
||||
return true;
|
||||
} else {
|
||||
$('#user_shop_url_error').show();
|
||||
message = response.errors.user_shop_url;
|
||||
console.log(message);
|
||||
|
||||
$('#preview_user_shop_url').val('');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
//console.log(error);
|
||||
$(element).parents('.form-group').find('.input-group').after(
|
||||
error.addClass('invalid-feedback d-block font-weight-bold')
|
||||
)
|
||||
},
|
||||
highlight: function(element) {
|
||||
if($(element).attr('required')){
|
||||
$(element).parent().find('button').removeClass('btn-success');
|
||||
$(element).parent().find('button').addClass('btn-danger');
|
||||
$(element).parent().find('button i').removeClass('fa-check');
|
||||
$(element).parent().find('button i').addClass('fa-times');
|
||||
$(element).removeClass('is-valid');
|
||||
$(element).addClass('is-invalid');
|
||||
}
|
||||
},
|
||||
unhighlight: function(element) {
|
||||
if($(element).attr('required')){
|
||||
$(element).removeClass('is-invalid');
|
||||
$(element).addClass('is-valid');
|
||||
$(element).parent().find('button').removeClass('btn-danger');
|
||||
$(element).parent().find('button').addClass('btn-success');
|
||||
$(element).parent().find('button i').removeClass('fa-times');
|
||||
$(element).parent().find('button i').addClass('fa-check');
|
||||
$(element).parents('.form-group').find('.is-invalid').removeClass('is-invalid');
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
required: "{{ __('This field is required.') }}",
|
||||
user_shop_url: {
|
||||
email: "{{ __('Please enter a valid email address.') }}",
|
||||
remote: function() {
|
||||
return message;
|
||||
}
|
||||
},
|
||||
},
|
||||
onkeyup: function(element) {
|
||||
$(element).valid()
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@section('scripts')
|
||||
@endsection
|
||||
|
|
@ -139,21 +139,21 @@
|
|||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-4">
|
||||
<label for="birthday_day" class="form-label">{{ __('Geburtsdatum') }}*</label>
|
||||
<select class="selectpicker" name="birthday_day" id="birthday_day" data-style="btn-light" data-live-search="false" required>
|
||||
<label for="birthday_day" class="form-label">{{ __('Geburtsdatum') }}</label>
|
||||
<select class="selectpicker" name="birthday_day" id="birthday_day" data-style="btn-light" data-live-search="false">
|
||||
{!! HTMLHelper::getCustomListOf('day', $user->getBirthdayFormat('d')) !!}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label for="birthday_month" class="form-label"> </label>
|
||||
<select class="selectpicker" name="birthday_month" id="birthday_month" data-style="btn-light" data-live-search="false" required>
|
||||
<select class="selectpicker" name="birthday_month" id="birthday_month" data-style="btn-light" data-live-search="false">
|
||||
{!! HTMLHelper::getCustomListOf('month', $user->getBirthdayFormat('m')) !!}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label for="birthday_year" class="form-label"> </label>
|
||||
<select class="selectpicker" name="birthday_year" id="birthday_year" data-style="btn-light" data-live-search="false" required>
|
||||
<select class="selectpicker" name="birthday_year" id="birthday_year" data-style="btn-light" data-live-search="false">
|
||||
{!! HTMLHelper::getCustomListOf('year', $user->getBirthdayFormat('Y')) !!}
|
||||
</select>
|
||||
|
||||
|
|
@ -319,6 +319,14 @@
|
|||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -364,19 +372,26 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
Steuerdaten
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div class="card-body" id="user-vat-validation">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="form-label" for="taxable_sales">{{ __('Umsatzsteuerpflicht') }} @if($user->account->getCountryAttrAs('taxable_sales'))* @endif</label>
|
||||
|
|
@ -385,27 +400,89 @@
|
|||
</select>
|
||||
<p class="badge">Wähle Kleinunternehmer, wenn Du nicht mehr als 22.000 EUR Umsatz pro Jahr mit Deinem Gewerbe erwirtschaftest.</p>
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
|
||||
<div class="form-group col-md-6 {{ $errors->has('tax_number') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="tax_number">{{ __('Steuernummer') }} @if($user->account->getCountryAttrAs('tax_number'))* @endif</label>
|
||||
{{ Form::text('tax_number', $user->account->tax_number, array('placeholder'=>__('Steuernummer'), 'class'=>'form-control', 'id'=>'tax_number', $user->account->getCountryAttrAs('tax_number','required'))) }}
|
||||
@if ($errors->has('tax_number'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('tax_number') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
@if($user->account->country_id && $user->account->country->eu_country)
|
||||
<div class="col-sm-12">
|
||||
<hr>
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('tax_identification_number') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="tax_identification_number">{{ __('USt-ID Nummer') }} @if($user->account->getCountryAttrAs('tax_id_number'))* @endif</label>
|
||||
{{ Form::text('tax_identification_number', $user->account-> tax_identification_number, array('placeholder'=>__('USt-ID Nummer'), 'class'=>'form-control', 'id'=>'tax_identification_number', $user->account->getCountryAttrAs('tax_id_number','required'), 'readonly')) }}
|
||||
@if ($errors->has('tax_identification_number'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('tax_identification_number') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
@if($user->account->reverse_charge_valid)
|
||||
<div class="mt-3">
|
||||
<div class="badge badge-primary">Aktiv seit: {{ $user->account->getReverseChargeValidFormat() }}</div>
|
||||
<button type="submit" class="btn btn-xs btn-default" name="action" value="reverse_charge_delete"><i class="fa fa-trash"></i> {{ __('account.reverse_charge_action_1') }}</button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{-- ($user->account->reverse_charge_valid ? 'readonly' : '') --}}
|
||||
@if(!$user->account->reverse_charge_valid)
|
||||
<button type="button" class="btn btn-primary btn-sm mt-3" data-toggle="modal" data-target="#modal-user-vat-validation">
|
||||
<span class="ion ion-md-add"></span> Neue USt-ID Nummer anlegen und Reverse Charge Verfahren aktivieren
|
||||
</button>
|
||||
@endif
|
||||
</div>
|
||||
@else
|
||||
<div class="form-group col-md-6">
|
||||
<label class="form-label" for="tax_identification_number">{{ __('USt-ID Nummer') }} @if($user->account->getCountryAttrAs('tax_id_number'))* @endif</label>
|
||||
{{ Form::text('tax_identification_number', $user->account->tax_identification_number, array('placeholder'=>__('USt-ID Nummer'), 'class'=>'form-control', 'id'=>'tax_identification_number', $user->account->getCountryAttrAs('tax_id_number','required'))) }}
|
||||
{{ Form::text('tax_identification_number', $user->account-> tax_identification_number, array('placeholder'=>__('USt-ID Nummer'), 'class'=>'form-control', 'id'=>'tax_identification_number', $user->account->getCountryAttrAs('tax_id_number','required'))) }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="form-group col-md-12">
|
||||
@if($errors->has('tax_number') || $errors->has('tax_identification_number'))
|
||||
<div class="alert badge-danger block p-2">Fehler: Bitte {{ __('Steuernummer') }} und/oder {{ __('USt-ID Nummer') }} angeben!*</div>
|
||||
|
||||
@if($errors->has('tax_identification_number_validated'))
|
||||
<div class="alert badge-danger block p-2">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@else
|
||||
<div class="badge badge-default">Hinweis: Bitte {{ __('Steuernummer') }} und/oder {{ __('USt-ID Nummer') }} angeben!*</div>
|
||||
@if(!$user->account-> tax_identification_number && !$user->account->tax_number)
|
||||
<div class="badge badge-default">Hinweis: Bitte {{ __('Steuernummer') }} und/oder {{ __('USt-ID Nummer') }} angeben!*</div>
|
||||
@endif
|
||||
{{-- @if($errors->has('tax_number') || $errors->has('tax_identification_number'))
|
||||
<div class="alert badge-danger block p-2">Fehler: Bitte {{ __('Steuernummer') }} und/oder {{ __('USt-ID Nummer') }} angeben!*</div>
|
||||
@else
|
||||
<div class="badge badge-default">Hinweis: Bitte {{ __('Steuernummer') }} und/oder {{ __('USt-ID Nummer') }} angeben!*</div>
|
||||
@endif
|
||||
--}}
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<hr>
|
||||
<button type="submit" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript">
|
||||
|
||||
$( document ).ready(function() {
|
||||
|
|
|
|||
|
|
@ -119,6 +119,40 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modal-user-vat-validation">
|
||||
<div class="modal-dialog">
|
||||
{!! Form::open(['url' => route('wizard_store_register', [1]), 'class' => 'modal-content']) !!}
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">{{ __('account.new_vat_validate') }}</span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-12">
|
||||
<p>{{ __('account.reverse_charge_copy_1') }}</p>
|
||||
<p>{{ __('account.reverse_charge_note_1') }}</p>
|
||||
</div>
|
||||
<div class="form-group col-sm-12 {{ $errors->has('reverse_charge') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="tax_identification_number">{{ __('account.VAT_ID_number') }} *</label>
|
||||
{{ Form::text('tax_identification_number', $user->account-> tax_identification_number, array('placeholder'=>__('account.VAT_ID_number'), 'class'=>'form-control', 'id'=>'tax_identification_number', 'required'=>true)) }}
|
||||
|
||||
@if ($errors->has('reverse_charge'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('reverse_charge') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
<button type="submit" class="btn btn-primary" name="action" value="reverse_charge_validate">{{ __('account.btn_vat_validate') }}n</button>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/smartwizard/smartwizard.css') }}">
|
||||
<script src="{{ mix('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
<a href="#smartwizard-3-step-3" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">3</span>
|
||||
Ausweis
|
||||
Gewerbeschein
|
||||
<div class="text-muted small">hochladen</div>
|
||||
|
||||
</a>
|
||||
|
|
@ -52,15 +52,6 @@
|
|||
<a href="#smartwizard-3-step-4" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">4</span>
|
||||
Gewerbeschein
|
||||
<div class="text-muted small">hochladen</div>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#smartwizard-3-step-5" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">5</span>
|
||||
Registrierung
|
||||
<div class="text-muted small">abschließen</div>
|
||||
</a>
|
||||
|
|
@ -89,6 +80,8 @@
|
|||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{--
|
||||
<div id="smartwizard-3-step-3" class="card animated fadeIn">
|
||||
<div class="card-body">
|
||||
<div class="card mb-4">
|
||||
|
|
@ -143,8 +136,9 @@
|
|||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="smartwizard-3-step-4" class="card animated fadeIn">
|
||||
</div>
|
||||
--}}
|
||||
<div id="smartwizard-3-step-3" class="card animated fadeIn">
|
||||
<div class="card-body">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header">
|
||||
|
|
@ -154,7 +148,7 @@
|
|||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="mt-4">
|
||||
{!! Form::open([ 'url' => route('wizard_store_register', [3]), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'businesslDropzone' ]) !!}
|
||||
{!! Form::open([ 'url' => route('wizard_store_register', [2]), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'businesslDropzone' ]) !!}
|
||||
<div class="fallback">
|
||||
<input name="file" type="file" multiple>
|
||||
</div>
|
||||
|
|
@ -191,7 +185,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{!! Form::open(['url' => route('wizard_store_register', [3])]) !!}
|
||||
{!! Form::open(['url' => route('wizard_store_register', [2])]) !!}
|
||||
@php($business_license_choose = $user->account->getNotice('business_license'))
|
||||
<div class="card-body pt-0">
|
||||
<div class="row">
|
||||
|
|
@ -231,10 +225,10 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="smartwizard-3-step-5" class="card animated fadeIn">
|
||||
<div id="smartwizard-3-step-4" class="card animated fadeIn">
|
||||
<div class="card-body">
|
||||
<h4>{{ trans('register.wizard_finish_hl') }}</h4>
|
||||
{!! Form::open(['url' => route('wizard_store_register', [4])]) !!}
|
||||
{!! Form::open(['url' => route('wizard_store_register', [3])]) !!}
|
||||
@include('user.wizard._change')
|
||||
<p>{{ trans('register.wizard_finish_line_1') }}.</p>
|
||||
<button type="submit" name="submit" value="do" class="btn btn-primary">{{ __('Registrierung abschließen') }}</button>
|
||||
|
|
@ -243,6 +237,49 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modal-user-vat-validation">
|
||||
<div class="modal-dialog">
|
||||
{!! Form::open(['url' => route('wizard_store_register', [1]), 'class' => 'modal-content']) !!}
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">{{ __('account.new_vat_validate') }}</span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-12">
|
||||
<p>{{ __('account.reverse_charge_copy_1') }}</p>
|
||||
<p>{{ __('account.reverse_charge_note_1') }}</p>
|
||||
</div>
|
||||
<div class="form-group col-sm-12 {{ $errors->has('reverse_charge') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="tax_identification_number">{{ __('account.VAT_ID_number') }} *</label>
|
||||
{{ Form::text('tax_identification_number', $user->account-> tax_identification_number, array('placeholder'=>__('account.VAT_ID_number'), 'class'=>'form-control', 'id'=>'tax_identification_number', 'required'=>true)) }}
|
||||
|
||||
@if ($errors->has('reverse_charge'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('reverse_charge') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
<button type="submit" class="btn btn-primary" name="action" value="reverse_charge_validate">{{ __('account.btn_vat_validate') }}n</button>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hidden">
|
||||
{!! Form::open(['url' => route('wizard_store_register', [7]), 'id' => 'user-change-country']) !!}
|
||||
<input type="hidden" name="user_country_id" id="user_country_id" value="">
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
|
|
@ -261,6 +298,12 @@
|
|||
showPreviousButton: false,
|
||||
}
|
||||
});
|
||||
|
||||
$('#lead-form-validation #country_id').on('change', function(e) {
|
||||
var $country_id = $(this).val();
|
||||
$('#user-change-country #user_country_id').val($country_id);
|
||||
$('#user-change-country').submit();
|
||||
});
|
||||
});
|
||||
|
||||
var real_dropzone = {
|
||||
|
|
|
|||
167
resources/views/web/components/_checkout.blade.php
Normal file
167
resources/views/web/components/_checkout.blade.php
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
@if (isset($shopping_mode) && $shopping_mode === 'test')
|
||||
<strong>#### TEST MODE #### TEST MODE ####</strong>
|
||||
@endif
|
||||
<div class="checkout-order mt-4">
|
||||
@if(Yard::instance('shopping')->isWithPayments())
|
||||
<h3 class="">Zahlungsart auswählen</h3>
|
||||
<div id="error-payment_method"></div>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table table-payment m-0" id="">
|
||||
<tbody class="switchers-stacked">
|
||||
@if (true || \App\Models\PaymentMethod::isShowPaymentMethod('PP', $user_payment_methods, 0))
|
||||
<tr>
|
||||
<td class="align-middle px-0 pl-1p">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::radio('payment_method', 'pp', '', ['class' => 'switcher-input', 'data-error'=>'#error-payment_method', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label font-weight-bold text-left">PayPal</span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right align-middle px-0 py-3 ui-w-100">
|
||||
<img class="float-right" width="90"
|
||||
src="{{ asset('images/payments-assets/paypal.png') }}" alt="PayPal">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@endif
|
||||
{{--
|
||||
@if (true || \App\Models\PaymentMethod::isShowPaymentMethod('SB', $user_payment_methods, 0))
|
||||
<tr>
|
||||
<td class="align-middle px-0 pl-1p">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::radio('payment_method', 'sb', '', ['class' => 'switcher-input', 'data-error'=>'#error-payment_method', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label font-weight-bold text-left">Sofort
|
||||
Überweisung</span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right align-middle px-0 py-3 ui-w-100">
|
||||
<img class="float-right" width="90"
|
||||
src="{{ asset('images/payments-assets/sofort.png') }}" alt="Sofort">
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@if (true || \App\Models\PaymentMethod::isShowPaymentMethod('CC', $user_payment_methods, 0))
|
||||
<tr>
|
||||
<td class="align-middle px-0 pl-1p">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::radio('payment_method', 'cc', '', ['class' => 'switcher-input', 'data-error'=>'#error-payment_method', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label font-weight-bold text-left">Kreditkarte</span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right align-middle px-0 py-3 ui-w-100">
|
||||
<img class="float-right" width="90"
|
||||
src="{{ asset('images/payments-assets/creditcard.png') }}" alt="Mastercard + Visa">
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
--}}
|
||||
@if (true || \App\Models\PaymentMethod::isShowPaymentMethod('VOR', $user_payment_methods, 0))
|
||||
<tr>
|
||||
<td class="align-middle px-0 pl-1p">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::radio('payment_method', 'vor', '', ['class' => 'switcher-input', 'data-error'=>'#error-payment_method', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label font-weight-bold text-left">Vorkasse</span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right align-middle px-0 py-3 ui-w-100">
|
||||
<img class="float-right" width="90" src="{{ asset('images/payments-assets/vor.png') }}"
|
||||
alt="Vorkasse">
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endif
|
||||
<h3 class="">Warenkorb</h3>
|
||||
<div class="checkout-cart">
|
||||
<div class="mb-2">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->total() }} €</span>
|
||||
<strong class="">Zwischensumme:</strong>
|
||||
</div>
|
||||
<hr class="light">
|
||||
<div class="mb-2">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->shipping() }} €</span>
|
||||
<span class="">Versandkosten:</span>
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->getShippingCountryName() }}</span>
|
||||
<span class="">Lieferland:</span>
|
||||
</div>
|
||||
<hr class="light">
|
||||
<div class="mb-2" style="font-size: 90%">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->subtotalWithShipping() }} €</span>
|
||||
<span class="">Summe ohne MwSt:</span>
|
||||
</div>
|
||||
<div class="mb-2" style="font-size: 90%">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->taxWithShipping() }} €</span>
|
||||
<span class=""> zzgl. {{-- Yard::getTaxRate() --}} MwSt:</span>
|
||||
</div>
|
||||
<hr class="light">
|
||||
<div class="">
|
||||
<span class="float-right"><strong>{{ Yard::instance('shopping')->totalWithShipping() }} €</strong></span>
|
||||
<strong class="">Gesamtsumme:</strong>
|
||||
</div>
|
||||
<hr class="light">
|
||||
<div class="form-group">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::checkbox('accepted_data', 1, '', ['id' => 'accepted_data', 'class' => 'switcher-input', 'data-error'=>'#error-accepted_data', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no">
|
||||
</span>
|
||||
</span>
|
||||
<span class="switcher-label">Mit Klick auf "Jetzt kaufen" akzeptiere ich die
|
||||
<a href="https://www.gruene-seele.bio/agb/" target="_blank" class="text-secondary">Allgemeinen
|
||||
Geschäftsbedingungen</a> und die
|
||||
<a href="https://www.gruene-seele.bio/datenschutzerklaerung/" target="_bank"
|
||||
class="text-secondary">Datenschutzbelehrung</a>, damit für die Bestellung
|
||||
meine Daten verarbeitet werden können. <span class="required">*</span>
|
||||
</label>
|
||||
<div id="error-accepted_data"></div>
|
||||
|
||||
</div>
|
||||
{!! Form::hidden("action", "submit-order") !!}
|
||||
<button type="submit" class="btn btn-primary btn-lg btn-block mt-4 button-prevent-multiple-submits">
|
||||
<i class="ion ion-ios-share-alt"></i> Jetzt kaufen <i class="spinner fa fa-spinner fa-spin"></i>
|
||||
</button>
|
||||
<hr class="light">
|
||||
@if(Yard::instance('shopping')->isWithPayments())
|
||||
<p class="text-center" style="line-height: 1.2em;"><em class="small text-center"> <i
|
||||
class="fa fa-lock"></i> Sind alle Deine Angaben vollständig ausgefüllt,
|
||||
klicke auf "Jetzt kaufen" und Du wirst zu unserer Zahlung/Zahlungsabieter weitergeleitet,
|
||||
die Verbindungen sind SSL verschlüsselt.</em></p>
|
||||
@else
|
||||
<p class="text-center" style="line-height: 1.2em;"><em class="small text-center"> <i
|
||||
class="fa fa-lock"></i> Sind alle Deine Angaben vollständig ausgefüllt,
|
||||
klicke auf "Jetzt kaufen" und die Bestellung wird abgeschlossen,
|
||||
die Verbindungen sind SSL verschlüsselt.</em></p>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
</div>
|
||||
334
resources/views/web/components/_invoice_details.blade.php
Normal file
334
resources/views/web/components/_invoice_details.blade.php
Normal file
|
|
@ -0,0 +1,334 @@
|
|||
<h2 class="mt-3">Rechnungsdetails</h2>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::checkbox('is_invoice_details_private', 1, true, ['id' => 'switch_invoice_details_private', 'class' => 'switcher-input']) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no">
|
||||
</span>
|
||||
</span>
|
||||
<span class="switcher-label">Privat (keine Firma)</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::checkbox('is_invoice_details_germany', 1, (Yard::instance('shopping')->getShippingCountryId() == 1 ? true : false), ['id' => 'switch_invoice_details_germany', 'class' => 'switcher-input']) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no">
|
||||
</span>
|
||||
</span>
|
||||
<span class="switcher-label">aus Deutschland</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group {{ $errors->has('billing_salutation') ? 'error' : '' }}">
|
||||
<label for="billing_salutation">Anrede <span class="required">*</span></label>
|
||||
<select id="billing_salutation" name="billing_salutation"
|
||||
class="form-control selectpicker revalidat" data-style="btn-default" data-error="#error-billing_salutation" required>
|
||||
{!! HTMLHelper::getSalutation(old('billing_salutation')) !!}
|
||||
</select>
|
||||
<div id="error-billing_salutation" class="text-left"></div>
|
||||
@if ($errors->has('billing_salutation'))
|
||||
<label for="billing_salutation" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_salutation') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_firstname">Vorname <span class="required">*</span></label>
|
||||
{!! Form::text('billing_firstname', '', ['class' => 'form-control ' . ($errors->has('billing_firstname') ? 'error' : ''), 'id' => 'billing_firstname', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_firstname'))
|
||||
<label for="billing_firstname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_firstname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_lastname">Nachname <span class="required">*</span></label>
|
||||
{!! Form::text('billing_lastname', '', ['class' => 'form-control ' . ($errors->has('billing_lastname') ? 'error' : ''), 'id' => 'billing_lastname', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_lastname'))
|
||||
<label for="billing_lastname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_lastname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 not-show show_invoice_details_private">
|
||||
<div class="form-group">
|
||||
<label for="billing_company">Firmenname (optional)</label>
|
||||
{!! Form::text('billing_company', '', ['class' => 'form-control', 'id' => 'billing_company']) !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 not-show show_invoice_details_germany">
|
||||
<div class="form-group">
|
||||
<label for="billing_state">Land / Region <span class="required">*</span></label>
|
||||
<select id="billing_state" name="billing_state" class="form-control selectpicker"
|
||||
data-style="btn-default">
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId(), false, 2) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_address">Straße + Hausnummer <span
|
||||
class="required">*</span></label>
|
||||
{!! Form::text('billing_address', '', ['class' => 'form-control ' . ($errors->has('billing_address') ? 'error' : ''), 'id' => 'billing_address', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_address'))
|
||||
<label for="billing_address" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_address') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
{!! Form::text('billing_address_2', '', ['placeholder' => 'Zusätzliche Angaben / Hinweise (optional)', 'class' => 'form-control ' . ($errors->has('billing_address_2') ? 'error' : ''), 'id' => 'billing_address_2']) !!}
|
||||
@if ($errors->has('billing_address_2'))
|
||||
<label for="billing_address_2" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_address_2') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_zipcode">PLZ <span class="required">*</span></label>
|
||||
{!! Form::text('billing_zipcode', '', ['class' => 'form-control ' . ($errors->has('billing_zipcode') ? 'error' : ''), 'id' => 'billing_zipcode', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_zipcode'))
|
||||
<label for="billing_zipcode" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_zipcode') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_city">Stadt <span class="required">*</span></label>
|
||||
{!! Form::text('billing_city', '', ['class' => 'form-control ' . ($errors->has('billing_city') ? 'error' : ''), 'id' => 'billing_city', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_city'))
|
||||
<label for="billing_city" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_city') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_email">E-Mail <span class="required">*</span></label>
|
||||
{!! Form::email('billing_email', '', ['class' => 'form-control ' . ($errors->has('billing_email') ? 'error' : ''), 'id' => 'billing_email', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_email'))
|
||||
<label for="billing_email" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_email') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::checkbox('same_as_billing', 1, '', ['id' => 'shipping_address_switch', 'class' => 'switcher-input']) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no">
|
||||
</span>
|
||||
</span>
|
||||
<span class="switcher-label">Lieferung an eine andere Adresse senden?</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" id="shipping_address">
|
||||
<div class="col-12">
|
||||
<hr class="">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<h2 class="mt-3">Lieferadresse</h2>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group {{ $errors->has('shipping_salutation') ? 'error' : '' }}">
|
||||
<label for="shipping_salutation">Anrede <span class="required">*</span></label>
|
||||
<select id="shipping_salutation" name="shipping_salutation"
|
||||
class="form-control selectpicker revalidat" data-style="btn-default" data-error="#error-shipping_salutation" required>
|
||||
{!! HTMLHelper::getSalutation(old('shipping_salutation')) !!}
|
||||
</select>
|
||||
<div id="error-shipping_salutation" class="text-left"></div>
|
||||
@if ($errors->has('shipping_salutation'))
|
||||
<label for="shipping_salutation" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_salutation') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="shipping_firstname">Vorname <span class="required">*</span></label>
|
||||
{!! Form::text('shipping_firstname', '', ['class' => 'form-control ' . ($errors->has('shipping_firstname') ? 'error' : ''), 'id' => 'shipping_firstname', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_firstname'))
|
||||
<label for="shipping_firstname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_firstname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="shipping_lastname">Nachname <span class="required">*</span></label>
|
||||
{!! Form::text('shipping_lastname', '', ['class' => 'form-control ' . ($errors->has('shipping_lastname') ? 'error' : ''), 'id' => 'shipping_lastname', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_lastname'))
|
||||
<label for="shipping_lastname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_lastname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 not-show show_invoice_details_private">
|
||||
<div class="form-group">
|
||||
<label for="shipping_company">Firmenname (optional)</label>
|
||||
{!! Form::text('shipping_company', '', ['class' => 'form-control', 'id' => 'shipping_company']) !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 not-show show_invoice_details_germany">
|
||||
<div class="form-group">
|
||||
<label for="shipping_state">Land / Region <span class="required">*</span></label>
|
||||
<select id="shipping_state" name="shipping_state" class="form-control selectpicker"
|
||||
data-style="btn-default">
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId(), false, 2) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="shipping_address">Straße + Hausnummer <span
|
||||
class="required">*</span></label>
|
||||
{!! Form::text('shipping_address', '', ['class' => 'form-control ' . ($errors->has('shipping_address') ? 'error' : ''), 'id' => 'shipping_address', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_address'))
|
||||
<label for="shipping_address" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_address') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
{!! Form::text('shipping_address_2', '', ['placeholder' => 'Zusätzliche Angaben / Hinweise (optional)', 'class' => 'form-control ' . ($errors->has('shipping_address_2') ? 'error' : ''), 'id' => 'shipping_address_2']) !!}
|
||||
@if ($errors->has('shipping_address_2'))
|
||||
<label for="shipping_address_2" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_address_2') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="shipping_zipcode">PLZ <span class="required">*</span></label>
|
||||
{!! Form::text('shipping_zipcode', '', ['class' => 'form-control ' . ($errors->has('shipping_zipcode') ? 'error' : ''), 'id' => 'shipping_zipcode', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_zipcode'))
|
||||
<label for="shipping_zipcode" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_zipcode') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="shipping_city">Stadt <span class="required">*</span></label>
|
||||
{!! Form::text('shipping_city', '', ['class' => 'form-control ' . ($errors->has('shipping_city') ? 'error' : ''), 'id' => 'shipping_city', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_city'))
|
||||
<label for="shipping_city" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_city') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$('#invoice_details_holder select').selectpicker();
|
||||
|
||||
var validator = $("#shop-form-validations").validate({
|
||||
submitHandler: function(form) {
|
||||
$('.button-prevent-multiple-submits').attr('disabled', true);
|
||||
$('.button-prevent-multiple-submits').find('.spinner').show();
|
||||
form.submit();
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
var placement = $(element).data('error');
|
||||
if (placement) {
|
||||
$(placement).append(error.addClass('invalid-feedback d-block'));
|
||||
} else {
|
||||
error.insertAfter(element).addClass('invalid-feedback small d-block');
|
||||
}
|
||||
},
|
||||
highlight: function( element, errorClass, validClass ) {
|
||||
if($(element).hasClass('selectpicker')){
|
||||
$(element).parent('.form-control').find('.dropdown-toggle').addClass( errorClass ).removeClass( validClass );
|
||||
}else if ( element.type === "radio" ) {
|
||||
this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
|
||||
} else {
|
||||
$( element ).addClass( errorClass ).removeClass( validClass );
|
||||
}
|
||||
},
|
||||
unhighlight: function( element, errorClass, validClass ) {
|
||||
if($(element).hasClass('selectpicker')){
|
||||
$(element).parent('.form-control').find('.dropdown-toggle').removeClass( errorClass ).addClass( validClass );
|
||||
} else if ( element.type === "radio" ) {
|
||||
this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
|
||||
} else {
|
||||
$( element ).removeClass( errorClass ).addClass( validClass );
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
user_free_product_id: {
|
||||
required: "Bitte ein Produkt auswählen.",
|
||||
},
|
||||
switchers_shipping: {
|
||||
required: "Bitte eine Auswahl treffen.",
|
||||
},
|
||||
payment_method: {
|
||||
required: "Bitte eine Zahlungsart auswählen.",
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('select.revalidat').on('change', function () {
|
||||
validator.element($(this));
|
||||
});
|
||||
|
||||
function switch_invoice_details_germany(){
|
||||
if($('input#switch_invoice_details_germany').is(':checked')){
|
||||
$('.show_invoice_details_germany').hide('slow');
|
||||
}else{
|
||||
$('.show_invoice_details_germany').show('slow');
|
||||
}
|
||||
}
|
||||
switch_invoice_details_germany();
|
||||
$('input#switch_invoice_details_private').on('change', function () {
|
||||
if($(this).is(':checked')){
|
||||
$('.show_invoice_details_private').hide('slow');
|
||||
}else{
|
||||
$('.show_invoice_details_private').show('slow');
|
||||
}
|
||||
});
|
||||
$('input#switch_invoice_details_germany').on('change', function () {
|
||||
switch_invoice_details_germany();
|
||||
});
|
||||
|
||||
// Shipping Address show|hide
|
||||
$("#shipping_address_switch").bind("change", function() {
|
||||
$('#shipping_address').slideToggle(200, function() {
|
||||
if ($('#shipping_address').is(":visible")) {
|
||||
_scrollTo('#shipping_address', 60);
|
||||
}
|
||||
});
|
||||
});
|
||||
if ($('#shipping_address_switch').is(':checked')) {
|
||||
$('#shipping_address').show();
|
||||
} else {
|
||||
$('#shipping_address').hide();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
132
resources/views/web/components/_invoice_details_quick.blade.php
Normal file
132
resources/views/web/components/_invoice_details_quick.blade.php
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
<h2 class="mt-3">Rechnungsdetails</h2>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_firstname">Vorname <span class="required">*</span></label>
|
||||
{!! Form::text('billing_firstname', '', ['class' => 'form-control ' . ($errors->has('billing_firstname') ? 'error' : ''), 'id' => 'billing_firstname', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_firstname'))
|
||||
<label for="billing_firstname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_firstname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_lastname">Nachname <span class="required">*</span></label>
|
||||
{!! Form::text('billing_lastname', '', ['class' => 'form-control ' . ($errors->has('billing_lastname') ? 'error' : ''), 'id' => 'billing_lastname', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_lastname'))
|
||||
<label for="billing_lastname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_lastname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_state">Land / Region <span class="required">*</span></label>
|
||||
<select id="billing_state" name="billing_state" class="form-control selectpicker"
|
||||
data-style="btn-default" required>
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId(), false, 2) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_address">Straße + Hausnummer <span
|
||||
class="required">*</span></label>
|
||||
{!! Form::text('billing_address', '', ['class' => 'form-control ' . ($errors->has('billing_address') ? 'error' : ''), 'id' => 'billing_address', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_address'))
|
||||
<label for="billing_address" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_address') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_zipcode">PLZ <span class="required">*</span></label>
|
||||
{!! Form::text('billing_zipcode', '', ['class' => 'form-control ' . ($errors->has('billing_zipcode') ? 'error' : ''), 'id' => 'billing_zipcode', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_zipcode'))
|
||||
<label for="billing_zipcode" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_zipcode') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_city">Stadt <span class="required">*</span></label>
|
||||
{!! Form::text('billing_city', '', ['class' => 'form-control ' . ($errors->has('billing_city') ? 'error' : ''), 'id' => 'billing_city', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_city'))
|
||||
<label for="billing_city" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_city') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_email">E-Mail <span class="required">*</span></label>
|
||||
{!! Form::email('billing_email', '', ['class' => 'form-control ' . ($errors->has('billing_email') ? 'error' : ''), 'id' => 'billing_email', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_email'))
|
||||
<label for="billing_email" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_email') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$('#invoice_details_holder select').selectpicker();
|
||||
|
||||
var validator = $("#shop-form-validations").validate({
|
||||
submitHandler: function(form) {
|
||||
$('.button-prevent-multiple-submits').attr('disabled', true);
|
||||
$('.button-prevent-multiple-submits').find('.spinner').show();
|
||||
form.submit();
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
var placement = $(element).data('error');
|
||||
if (placement) {
|
||||
$(placement).append(error.addClass('invalid-feedback d-block'));
|
||||
} else {
|
||||
error.insertAfter(element).addClass('invalid-feedback small d-block');
|
||||
}
|
||||
},
|
||||
highlight: function( element, errorClass, validClass ) {
|
||||
if($(element).hasClass('selectpicker')){
|
||||
$(element).parent('.form-control').find('.dropdown-toggle').addClass( errorClass ).removeClass( validClass );
|
||||
}else if ( element.type === "radio" ) {
|
||||
this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
|
||||
} else {
|
||||
$( element ).addClass( errorClass ).removeClass( validClass );
|
||||
}
|
||||
},
|
||||
unhighlight: function( element, errorClass, validClass ) {
|
||||
if($(element).hasClass('selectpicker')){
|
||||
$(element).parent('.form-control').find('.dropdown-toggle').removeClass( errorClass ).addClass( validClass );
|
||||
} else if ( element.type === "radio" ) {
|
||||
this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
|
||||
} else {
|
||||
$( element ).removeClass( errorClass ).addClass( validClass );
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
user_free_product_id: {
|
||||
required: "Bitte ein Produkt auswählen.",
|
||||
},
|
||||
switchers_shipping: {
|
||||
required: "Bitte eine Auswahl treffen.",
|
||||
},
|
||||
payment_method: {
|
||||
required: "Bitte eine Zahlungsart auswählen.",
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('select.revalidat').on('change', function () {
|
||||
validator.element($(this));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
62
resources/views/web/components/_margin_cart.blade.php
Normal file
62
resources/views/web/components/_margin_cart.blade.php
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
@if(config('app.debug'))
|
||||
|
||||
|
||||
@if(isset($userMargin))
|
||||
<div class="row">
|
||||
<div class="col-12 text-left">
|
||||
<h2 class="mt-3">Provision / DEBUG</h2>
|
||||
|
||||
<div class="text-left mt-2">
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-left no-border-top">Summe netto:</td>
|
||||
<td class="no-border-top">
|
||||
{{ Yard::instance('shopping')->subtotal(null, null, null, false) }} €*
|
||||
</td>
|
||||
</tr>
|
||||
@dump($userMargin)
|
||||
@if($userMargin->yard_margin && $userMargin->yard_margin->isMargin())
|
||||
@foreach($userMargin->yard_margin->items as $item)
|
||||
<tr>
|
||||
<td class="text-left">Staffelrabatt
|
||||
<br>ab {{ $item->getFormatted('price_from') }} / {{ $item->getFormatted('trading_margin') }}% :</td>
|
||||
<td>
|
||||
- {{ $item->getFormatted('value_margin') }} €*
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
@if($userMargin->yard_commission && $userMargin->yard_commission->isCommission())
|
||||
<tr>
|
||||
<td class="text-left">Einzelrabatt:</td>
|
||||
<td>
|
||||
- {{ $userMargin->yard_commission->getFormatted('single_value_commission') }} €*
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
<tr>
|
||||
<td class="text-left"><strong>Summe (Netto):</strong></td>
|
||||
<td>
|
||||
<strong>{{ Yard::instance('shopping')->subtotal() }} €*</strong>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@if($userMargin->yard_margin && $userMargin->yard_margin->net_partner_commission > 0)
|
||||
<tr>
|
||||
<td class="text-left"><em>Provision Vertriebspartern:</em></td>
|
||||
<td>
|
||||
<em>{{ $userMargin->yard_margin->getFormatted('net_partner_commission') }} €*</em>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
@endif
|
||||
|
||||
@endif
|
||||
|
|
@ -25,25 +25,28 @@
|
|||
<link rel="stylesheet" href="{{ asset('/css/shop.css') }}?v=1{{ get_file_last_time('/css/shop.css') }}">
|
||||
|
||||
@yield('styles')
|
||||
<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="2d880847-55f3-426a-85bb-7f694b544f69" data-blockingmode="auto" type="text/javascript"></script>
|
||||
|
||||
@if(Util::isPromotionUrl(true))
|
||||
<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="2d880847-55f3-426a-85bb-7f694b544f69" data-blockingmode="auto" type="text/javascript"></script>
|
||||
@endif
|
||||
<script src="{{ mix('/vendor/js/layout-helpers.js') }}"></script>
|
||||
<script src="{{ asset('/js/jquery.min.js') }}"></script>
|
||||
<!-- Meta Pixel Code -->
|
||||
<script>
|
||||
!function(f,b,e,v,n,t,s)
|
||||
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
||||
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
||||
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
||||
n.queue=[];t=b.createElement(e);t.async=!0;
|
||||
t.src=v;s=b.getElementsByTagName(e)[0];
|
||||
s.parentNode.insertBefore(t,s)}(window, document,'script',
|
||||
'https://connect.facebook.net/en_US/fbevents.js');
|
||||
fbq('init', '2086559178174067');
|
||||
fbq('track', 'PageView');
|
||||
</script>
|
||||
<noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=2086559178174067&ev=PageView&noscript=1" /></noscript>
|
||||
<!-- End Meta Pixel Code -->
|
||||
@if(Util::isPromotionUrl(true))
|
||||
<!-- Meta Pixel Code -->
|
||||
<script>
|
||||
!function(f,b,e,v,n,t,s)
|
||||
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
||||
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
||||
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
||||
n.queue=[];t=b.createElement(e);t.async=!0;
|
||||
t.src=v;s=b.getElementsByTagName(e)[0];
|
||||
s.parentNode.insertBefore(t,s)}(window, document,'script',
|
||||
'https://connect.facebook.net/en_US/fbevents.js');
|
||||
fbq('init', '2086559178174067');
|
||||
fbq('track', 'PageView');
|
||||
</script>
|
||||
<noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=2086559178174067&ev=PageView&noscript=1" /></noscript>
|
||||
<!-- End Meta Pixel Code -->
|
||||
@endif
|
||||
</head>
|
||||
<body class="custom-background">
|
||||
@yield('layout-content')
|
||||
|
|
@ -58,6 +61,7 @@
|
|||
<script src="{{ asset('/vendor/libs/jquery-validation/dist/localization/messages_de.min.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/bootstrap-select/bootstrap-select.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/swiper/swiper-bundle.min.js') }}"></script>
|
||||
<script src="{{ asset('/js/jquery.lazyload.js?v=1.9.1') }}"></script>
|
||||
<script src="{{ asset('/js/shop.js') }}?v=1{{ get_file_last_time('/js/shop.js') }}"></script>
|
||||
@yield('scripts')
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
<!-- Footer -->
|
||||
<nav class="footer bp-3 pt-4">
|
||||
<hr class="m-0">
|
||||
<div class="container px-3 pt-4">
|
||||
<div class="row">
|
||||
<div class="col-lg-4 col-md-6 text-center text-md-left">
|
||||
|
|
@ -25,6 +24,7 @@
|
|||
<div class="col-lg-4 col-md-12">
|
||||
<div class="navbar-nav text-center text-lg-right ml-auto mt-3">
|
||||
<a class="anchor-link nav-item nav-link" href="https://www.gruene-seele.bio/vertriebspartner/" target="_blank">Vertriebspartner werden</a>
|
||||
<a class="anchor-link nav-item nav-link" href="{{ url('versandarten') }}" target="">Versandarten</a>
|
||||
<a class="anchor-link nav-item nav-link" href="{{ url('impressum') }}" target="">Impressum</a>
|
||||
<a class="anchor-link nav-item nav-link" href="{{ url('datenschutzerklaerung') }}" target="">Datenschutz</a>
|
||||
<a class="anchor-link nav-item nav-link" href="{{ url('widerrufsbelehrung') }}" target="">Widerrufsbelehrung</a>
|
||||
|
|
@ -38,3 +38,19 @@
|
|||
<div class="text-center pl-2 mt-2">Copyright since 2019 • GRÜNE SEELE GmbH</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="shop-action">
|
||||
<div class="group-action @if(!isset($categories_by_show_on)) small @endif ">
|
||||
@if(isset($categories_by_show_on))
|
||||
<a href="javascript:void(0)" class="shop-action-btn open-icon-menu" tabindex="-1"><i class="ion ion-md-menu navbar-icon align-middle"></i></a>
|
||||
<a href="javascript:void(0)" class="shop-action-btn scroll-to-basket" tabindex="-1"><i class="ion ion-md-basket navbar-icon align-middle"></i>
|
||||
<span class="badge badge-cart indicator" id="badge_basket_indicator">{{ Yard::instance('shopping')->count() }}</span>
|
||||
@endif
|
||||
<a href="tel:+4922031869014" class="shop-action-btn" tabindex="-1"><i class="ion ion-ios-call navbar-icon align-middle"></i></a>
|
||||
<a href="mailto:service@gruene-seele.bio" class="shop-action-btn" tabindex="-1"><i class="ion ion-ios-mail navbar-icon align-middle"></i></a>
|
||||
<a href="javascript:void(0)" class="shop-action-btn scroll-to-top" tabindex="-1"><i class="ion ion-ios-arrow-dropup-circle navbar-icon align-middle"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="anywhere-home" class=""></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<nav class="landing-navbar navbar1 pt-md-4">
|
||||
<div class="container px-3 pt-4">
|
||||
<div class="row">
|
||||
<div class="col-lg-4 col-md-6 text-left d-none d-md-block ">
|
||||
{{-- <div class="col-lg-4 col-md-6 text-left ">
|
||||
<div class="contact-box box-min-width">
|
||||
<div class="contact-phone-box">
|
||||
<div class="contact-phone-icon">
|
||||
|
|
@ -19,13 +19,31 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col-md-6 text-center text-md-right text-lg-center">
|
||||
--}}
|
||||
<div class="col-12 text-center">
|
||||
<img src="https://www.gruene-seele.bio/wp-content/uploads/2019/10/gruene-seele-logo_beige.jpg" class="img-brand" alt="Grüne Seele Logo">
|
||||
</div>
|
||||
<div class="col-lg-4 col-md-12">
|
||||
<div class="navbar-nav text-center text-lg-right ml-auto mt-3">
|
||||
<div class="col-12">
|
||||
<div class="navbar-nav text-center ml-auto mt-3 d-none d-md-block">
|
||||
<a class="anchor-link nav-item nav-link" href="https://www.gruene-seele.bio/vertriebspartner/" target="_blank">Vertriebspartner werden</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</nav>
|
||||
|
||||
@if(isset($categories_by_show_on))
|
||||
<div id="side-bar" class="side-bar">
|
||||
<button class="close-icon-menu"><i class="fa fa-times"></i></button>
|
||||
<div class="inner-main-wrapper-desk">
|
||||
<div class="inner-content">
|
||||
<h4 class="title">Kategorie filtern</h4>
|
||||
<ul class="list-group">
|
||||
@foreach (HTMLHelper::getCategoriesByShowOn([$categories_by_show_on]) as $catId => $catValue)
|
||||
<a href="{{url()->current()}}?catid={{ $catId }}" class="list-group-item d-flex justify-content-between align-items-center">{{ $catValue['name'] }}
|
||||
<span class="badge badge-default">{{ $catValue['count'] }}</span>
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
|
|||
448
resources/views/web/legal/datenschutzerklaerung.blade.php
Normal file
448
resources/views/web/legal/datenschutzerklaerung.blade.php
Normal file
|
|
@ -0,0 +1,448 @@
|
|||
@extends('web.layouts.layout')
|
||||
|
||||
@section('content')
|
||||
<div class="layout-content">
|
||||
|
||||
<div class="container px-3">
|
||||
|
||||
|
||||
<section>
|
||||
<h1 class="mt-4 mb-4 text-center">Datenschutzerklärung</h1>
|
||||
<hr>
|
||||
<div class="entry-content">
|
||||
<h2><strong>Stand: 01. April 2022</strong></h2>
|
||||
<h2>Einleitung</h2>
|
||||
<p>Mit der folgenden Datenschutzerklärung möchten wir Sie darüber aufklären, welche Arten Ihrer personenbezogenen Daten (nachfolgend auch kurz als “Daten“ bezeichnet) wir zu welchen Zwecken und in welchem Umfang verarbeiten. Die Datenschutzerklärung gilt für alle von uns durchgeführten Verarbeitungen personenbezogener Daten, sowohl im Rahmen der Erbringung unserer Leistungen als auch insbesondere auf unseren Webseiten, in mobilen Applikationen sowie innerhalb externer Onlinepräsenzen, wie z.B. unserer Social-Media-Profile (nachfolgend zusammenfassend bezeichnet als “Onlineangebot“).</p>
|
||||
<p>Die verwendeten Begriffe sind nicht geschlechtsspezifisch.</p>
|
||||
<h2>Inhaltsübersicht</h2>
|
||||
<ul class="index">
|
||||
<li><a class="index-link" href="#m14">Einleitung</a></li>
|
||||
<li><a class="index-link" href="#m3">Verantwortlicher</a></li>
|
||||
<li><a class="index-link" href="#mOverview">Übersicht der Verarbeitungen</a></li>
|
||||
<li><a class="index-link" href="#m13">Maßgebliche Rechtsgrundlagen</a></li>
|
||||
<li><a class="index-link" href="#m27">Sicherheitsmaßnahmen</a></li>
|
||||
<li><a class="index-link" href="#m25">Übermittlung und Offenbarung von personenbezogenen Daten</a></li>
|
||||
<li><a class="index-link" href="#m24">Datenverarbeitung in Drittländern</a></li>
|
||||
<li><a class="index-link" href="#m134">Einsatz von Cookies</a></li>
|
||||
<li><a class="index-link" href="#m828">Wir sind vertraglicher Vertriebspartner im Auftrag der</a></li>
|
||||
<li><a class="index-link" href="#m317">Kommerzielle und geschäftliche Leistungen</a></li>
|
||||
<li><a class="index-link" href="#m605">Nutzung von Online-Marktplätzen für E-Commerce</a></li>
|
||||
<li><a class="index-link" href="#m326">Zahlungsdienstleister</a></li>
|
||||
<li><a class="index-link" href="#m225">Bereitstellung des Onlineangebotes und Webhosting</a></li>
|
||||
<li><a class="index-link" href="#m367">Registrierung, Anmeldung und Nutzerkonto</a></li>
|
||||
<li><a class="index-link" href="#m104">Blogs und Publikationsmedien</a></li>
|
||||
<li><a class="index-link" href="#m182">Kontaktaufnahme</a></li>
|
||||
<li><a class="index-link" href="#m735">Videokonferenzen, Onlinemeetings, Webinare und Bildschirm-Sharing</a></li>
|
||||
<li><a class="index-link" href="#m29">Cloud-Dienste</a></li>
|
||||
<li><a class="index-link" href="#m17">Newsletter und elektronische Benachrichtigungen</a></li>
|
||||
<li><a class="index-link" href="#m638">Werbliche Kommunikation via E-Mail, Post, Fax oder Telefon</a></li>
|
||||
<li><a class="index-link" href="#m264">Onlinemarketing</a></li>
|
||||
<li><a class="index-link" href="#m299">Bewertungsplattformen</a></li>
|
||||
<li><a class="index-link" href="#m136">Präsenzen in sozialen Netzwerken (Social Media)</a></li>
|
||||
<li><a class="index-link" href="#m328">Plugins und eingebettete Funktionen sowie Inhalte</a></li>
|
||||
<li><a class="index-link" href="#m12">Löschung von Daten</a></li>
|
||||
<li><a class="index-link" href="#m15">Änderung und Aktualisierung der Datenschutzerklärung</a></li>
|
||||
<li><a class="index-link" href="#m10">Rechte der betroffenen Personen</a></li>
|
||||
<li><a class="index-link" href="#m42">Begriffsdefinitionen</a></li>
|
||||
</ul>
|
||||
<h2 id="m3">Verantwortlicher</h2>
|
||||
<p><strong>GRÜNE SEELE GmbH</strong><br>
|
||||
Hauptstr. 174<br>
|
||||
51143 Köln<br>
|
||||
Nordrhein-Westfalen<br>
|
||||
Deutschland</p>
|
||||
<p><strong>Geschaftsführung:<br>
|
||||
</strong>Ruth Krummel</p>
|
||||
<p><strong>Registereintrag</strong><br>
|
||||
Eintragung im Handelsregister<br>
|
||||
Registergericht: Amtsgericht Köln<br>
|
||||
Registernummer: HRB87173</p>
|
||||
<p><strong>UST-ID:</strong><br>
|
||||
DE296797691</p>
|
||||
<p><strong>E-Mail-Adresse:</strong> service@gruene-seele.bio</p>
|
||||
<p><strong>Telefon:</strong> +491622514871 • +4922031869014</p>
|
||||
<p><strong>Impressum:</strong> <a href="https://testemich.test/impressum/" target="_blank" rel="noopener noreferrer">https://testemich.test/impressum/</a></p>
|
||||
<h2 id="mOverview">Übersicht der Verarbeitungen</h2>
|
||||
<p>Die nachfolgende Übersicht fasst die Arten der verarbeiteten Daten und die Zwecke ihrer Verarbeitung zusammen und verweist auf die betroffenen Personen.</p>
|
||||
<h3>Arten der verarbeiteten Daten</h3>
|
||||
<ul>
|
||||
<li>Bestandsdaten (z.B. Namen, Adressen).</li>
|
||||
<li>Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos).</li>
|
||||
<li>Kontaktdaten (z.B. E-Mail, Telefonnummern).</li>
|
||||
<li>Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li>Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten).</li>
|
||||
<li>Standortdaten (Daten, die den Standort des Endgeräts eines Endnutzers angeben).</li>
|
||||
<li>Vertragsdaten (z.B. Vertragsgegenstand, Laufzeit, Kundenkategorie).</li>
|
||||
<li>Zahlungsdaten (z.B. Bankverbindungen, Rechnungen, Zahlungshistorie).</li>
|
||||
</ul>
|
||||
<h3>Kategorien betroffener Personen</h3>
|
||||
<ul>
|
||||
<li>Beschäftigte (z.B. Angestellte, Bewerber, ehemalige Mitarbeiter).</li>
|
||||
<li>Geschäfts- und Vertragspartner.</li>
|
||||
<li>Interessenten.</li>
|
||||
<li>Kommunikationspartner.</li>
|
||||
<li>Kunden.</li>
|
||||
<li>Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
</ul>
|
||||
<h3>Zwecke der Verarbeitung</h3>
|
||||
<ul>
|
||||
<li>Affiliate-Nachverfolgung.</li>
|
||||
<li>Bereitstellung unseres Onlineangebotes und Nutzerfreundlichkeit.</li>
|
||||
<li>Besuchsaktionsauswertung.</li>
|
||||
<li>Büro- und Organisationsverfahren.</li>
|
||||
<li>Direktmarketing (z.B. per E-Mail oder postalisch).</li>
|
||||
<li>Feedback (z.B. Sammeln von Feedback via Online-Formular).</li>
|
||||
<li>Interessenbasiertes und verhaltensbezogenes Marketing.</li>
|
||||
<li>Kontaktanfragen und Kommunikation.</li>
|
||||
<li>Konversionsmessung (Messung der Effektivität von Marketingmaßnahmen).</li>
|
||||
<li>Profiling (Erstellen von Nutzerprofilen).</li>
|
||||
<li>Remarketing.</li>
|
||||
<li>Reichweitenmessung (z.B. Zugriffsstatistiken, Erkennung wiederkehrender Besucher).</li>
|
||||
<li>Sicherheitsmaßnahmen.</li>
|
||||
<li>Tracking (z.B. interessens-/verhaltensbezogenes Profiling, Nutzung von Cookies).</li>
|
||||
<li>Vertragliche Leistungen und Service.</li>
|
||||
<li>Verwaltung und Beantwortung von Anfragen.</li>
|
||||
</ul>
|
||||
<h3 id="m13">Maßgebliche Rechtsgrundlagen</h3>
|
||||
<p>Im Folgenden teilen wir die Rechtsgrundlagen der Datenschutzgrundverordnung (DSGVO), auf deren Basis wir die personenbezogenen Daten verarbeiten, mit. Bitte beachten Sie, dass zusätzlich zu den Regelungen der DSGVO die nationalen Datenschutzvorgaben in Ihrem bzw. unserem Wohn- und Sitzland gelten können. Sollten ferner im Einzelfall speziellere Rechtsgrundlagen maßgeblich sein, teilen wir Ihnen diese in der Datenschutzerklärung mit.</p>
|
||||
<ul>
|
||||
<li><strong>Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO)</strong> – Die betroffene Person hat ihre Einwilligung in die Verarbeitung der sie betreffenden personenbezogenen Daten für einen spezifischen Zweck oder mehrere bestimmte Zwecke gegeben.</li>
|
||||
<li><strong>Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO)</strong> – Die Verarbeitung ist für die Erfüllung eines Vertrags, dessen Vertragspartei die betroffene Person ist, oder zur Durchführung vorvertraglicher Maßnahmen erforderlich, die auf Anfrage der betroffenen Person erfolgen.</li>
|
||||
<li><strong>Rechtliche Verpflichtung (Art. 6 Abs. 1 S. 1 lit. c. DSGVO)</strong> – Die Verarbeitung ist zur Erfüllung einer rechtlichen Verpflichtung erforderlich, der der Verantwortliche unterliegt.</li>
|
||||
<li><strong>Schutz lebenswichtiger Interessen (Art. 6 Abs. 1 S. 1 lit. d. DSGVO)</strong> – Die Verarbeitung ist erforderlich, um lebenswichtige Interessen der betroffenen Person oder einer anderen natürlichen Person zu schützen.</li>
|
||||
<li><strong>Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO)</strong> – Die Verarbeitung ist zur Wahrung der berechtigten Interessen des Verantwortlichen oder eines Dritten erforderlich, sofern nicht die Interessen oder Grundrechte und Grundfreiheiten der betroffenen Person, die den Schutz personenbezogener Daten erfordern, überwiegen.</li>
|
||||
</ul>
|
||||
<p><strong>Nationale Datenschutzregelungen in Deutschland</strong>: Zusätzlich zu den Datenschutzregelungen der Datenschutz-Grundverordnung gelten nationale Regelungen zum Datenschutz in Deutschland. Hierzu gehört insbesondere das Gesetz zum Schutz vor Missbrauch personenbezogener Daten bei der Datenverarbeitung (Bundesdatenschutzgesetz – BDSG). Das BDSG enthält insbesondere Spezialregelungen zum Recht auf Auskunft, zum Recht auf Löschung, zum Widerspruchsrecht, zur Verarbeitung besonderer Kategorien personenbezogener Daten, zur Verarbeitung für andere Zwecke und zur Übermittlung sowie automatisierten Entscheidungsfindung im Einzelfall einschließlich Profiling. Des Weiteren regelt es die Datenverarbeitung für Zwecke des Beschäftigungsverhältnisses (§ 26 BDSG), insbesondere im Hinblick auf die Begründung, Durchführung oder Beendigung von Beschäftigungsverhältnissen sowie die Einwilligung von Beschäftigten. Ferner können Landesdatenschutzgesetze der einzelnen Bundesländer zur Anwendung gelangen.</p>
|
||||
<h2 id="m27">Sicherheitsmaßnahmen</h2>
|
||||
<p>Wir treffen nach Maßgabe der gesetzlichen Vorgaben unter Berücksichtigung des Stands der Technik, der Implementierungskosten und der Art, des Umfangs, der Umstände und der Zwecke der Verarbeitung sowie der unterschiedlichen Eintrittswahrscheinlichkeiten und des Ausmaßes der Bedrohung der Rechte und Freiheiten natürlicher Personen geeignete technische und organisatorische Maßnahmen, um ein dem Risiko angemessenes Schutzniveau zu gewährleisten.</p>
|
||||
<p>Zu den Maßnahmen gehören insbesondere die Sicherung der Vertraulichkeit, Integrität und Verfügbarkeit von Daten durch Kontrolle des physischen und elektronischen Zugangs zu den Daten als auch des sie betreffenden Zugriffs, der Eingabe, der Weitergabe, der Sicherung der Verfügbarkeit und ihrer Trennung. Des Weiteren haben wir Verfahren eingerichtet, die eine Wahrnehmung von Betroffenenrechten, die Löschung von Daten und Reaktionen auf die Gefährdung der Daten gewährleisten. Ferner berücksichtigen wir den Schutz personenbezogener Daten bereits bei der Entwicklung bzw. Auswahl von Hardware, Software sowie Verfahren entsprechend dem Prinzip des Datenschutzes, durch Technikgestaltung und durch datenschutzfreundliche Voreinstellungen.</p>
|
||||
<p><strong>SSL-Verschlüsselung (https)</strong>: Um Ihre via unser Online-Angebot übermittelten Daten zu schützen, nutzen wir eine SSL-Verschlüsselung. Sie erkennen derart verschlüsselte Verbindungen an dem Präfix https:// in der Adresszeile Ihres Browsers.</p>
|
||||
<h2 id="m25">Übermittlung und Offenbarung von personenbezogenen Daten</h2>
|
||||
<p>Im Rahmen unserer Verarbeitung von personenbezogenen Daten kommt es vor, dass die Daten an andere Stellen, Unternehmen, rechtlich selbstständige Organisationseinheiten oder Personen übermittelt oder sie ihnen gegenüber offengelegt werden. Zu den Empfängern dieser Daten können z.B. Zahlungsinstitute im Rahmen von Zahlungsvorgängen, mit IT-Aufgaben beauftragte Dienstleister oder Anbieter von Diensten und Inhalten, die in eine Webseite eingebunden werden, gehören. In solchen Fall beachten wir die gesetzlichen Vorgaben und schließen insbesondere entsprechende Verträge bzw. Vereinbarungen, die dem Schutz Ihrer Daten dienen, mit den Empfängern Ihrer Daten ab.</p>
|
||||
<p><strong>DHL und Deutsche Post</strong><br>
|
||||
Die Zustellung der Ware erfolgt durch die Transportdienstleister DHL oder Deutsche Post (Deutsche Post AG, Charles-de-Gaulle-Straße 20, 53113 Bonn), womit wir Ihre E-Mail- und Lieferadresse gemäß Art. 6 Abs. 1 lit. a DSGVO vor der Zustellung der Ware zum Zweck der Abstimmung eines Liefertermins bzw. zur Lieferankündigung an DHL weitergeben. Im Zuge des Abschlusses des Bestellprozess geben Sie Ihre ausdrückliche Einwilligung dafür ab. Die Weitergabe erfolgt nur, soweit dies für die Warenlieferung notwendig ist.</p>
|
||||
<p>Die Einwilligung zur Weitergabe der Email-Adresse kann jederzeit mit Wirkung für die Zukunft gegenüber dem oben bezeichneten Verantwortlichen oder gegenüber dem Transportdienstleister DHL widerrufen werden. In dem Falle ist eine Benachrichtigung über die Zustellung bzw. den Zustelltermin nicht möglich.</p>
|
||||
<p><strong>Datenübermittlung innerhalb der Unternehmensgruppe</strong>: Wir können personenbezogene Daten an andere Unternehmen innerhalb unserer Unternehmensgruppe übermitteln oder ihnen den Zugriff auf diese Daten gewähren. Sofern diese Weitergabe zu administrativen Zwecken erfolgt, beruht die Weitergabe der Daten auf unseren berechtigten unternehmerischen und betriebswirtschaftlichen Interessen oder erfolgt, sofern sie zur Erfüllung unserer vertragsbezogenen Verpflichtungen erforderlich ist oder wenn eine Einwilligung der Betroffenen oder eine gesetzliche Erlaubnis vorliegt.</p>
|
||||
<p id="m826"><strong>Wir sind vertraglicher Vertriebspartner im Auftrag der </strong>mivita e.K. • Leinfeld 2 • 87755 Kirchhaslach</p>
|
||||
<p>Teile eingehender Bestellungen inkl. der für die Bestellabwicklung erforderlichen Kundendaten (Rechnungsadresse, Lieferadresse, Email-Adresse) gehen systemseitig an die MIVITA e. K. für die Abwicklung des Warenversandes.</p>
|
||||
<h2 id="m24">Datenverarbeitung in Drittländern</h2>
|
||||
<p>Sofern wir Daten in einem Drittland (d.h., außerhalb der Europäischen Union (EU), des Europäischen Wirtschaftsraums (EWR)) verarbeiten oder die Verarbeitung im Rahmen der Inanspruchnahme von Diensten Dritter oder der Offenlegung bzw. Übermittlung von Daten an andere Personen, Stellen oder Unternehmen stattfindet, erfolgt dies nur im Einklang mit den gesetzlichen Vorgaben.</p>
|
||||
<p>Vorbehaltlich ausdrücklicher Einwilligung oder vertraglich oder gesetzlich erforderlicher Übermittlung verarbeiten oder lassen wir die Daten nur in Drittländern mit einem anerkannten Datenschutzniveau, vertraglichen Verpflichtung durch sogenannte Standardschutzklauseln der EU-Kommission, beim Vorliegen von Zertifizierungen oder verbindlicher internen Datenschutzvorschriften verarbeiten (Art. 44 bis 49 DSGVO, Informationsseite der EU-Kommission: <a href="https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection_de" target="_blank" rel="noopener noreferrer">https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection_de</a> ).</p>
|
||||
<h2 id="m134">Einsatz von Cookies</h2>
|
||||
<p>Cookies sind Textdateien, die Daten von besuchten Websites oder Domains enthalten und von einem Browser auf dem Computer des Benutzers gespeichert werden. Ein Cookie dient in erster Linie dazu, die Informationen über einen Benutzer während oder nach seinem Besuch innerhalb eines Onlineangebotes zu speichern. Zu den gespeicherten Angaben können z.B. die Spracheinstellungen auf einer Webseite, der Loginstatus, ein Warenkorb oder die Stelle, an der ein Video geschaut wurde, gehören. Zu dem Begriff der Cookies zählen wir ferner andere Technologien, die die gleichen Funktionen wie Cookies erfüllen (z.B., wenn Angaben der Nutzer anhand pseudonymer Onlinekennzeichnungen gespeichert werden, auch als “Nutzer-IDs” bezeichnet)</p>
|
||||
<p><strong>Die folgenden Cookie-Typen und Funktionen werden unterschieden:</strong></p>
|
||||
<ul>
|
||||
<li><strong>Temporäre Cookies (auch: Session- oder Sitzungs-Cookies):</strong> Temporäre Cookies werden spätestens gelöscht, nachdem ein Nutzer ein Online-Angebot verlassen und seinen Browser geschlossen hat.</li>
|
||||
<li><strong>Permanente Cookies:</strong> Permanente Cookies bleiben auch nach dem Schließen des Browsers gespeichert. So kann beispielsweise der Login-Status gespeichert oder bevorzugte Inhalte direkt angezeigt werden, wenn der Nutzer eine Website erneut besucht. Ebenso können die Interessen von Nutzern, die zur Reichweitenmessung oder zu Marketingzwecken verwendet werden, in einem solchen Cookie gespeichert werden.</li>
|
||||
<li><strong>First-Party-Cookies:</strong> First-Party-Cookies werden von uns selbst gesetzt.</li>
|
||||
<li><strong>Third-Party-Cookies (auch: Drittanbieter-Cookies)</strong>: Drittanbieter-Cookies werden hauptsächlich von Werbetreibenden (sog. Dritten) verwendet, um Benutzerinformationen zu verarbeiten.</li>
|
||||
<li><strong>Notwendige (auch: essentielle oder unbedingt erforderliche) Cookies:</strong> Cookies können zum einen für den Betrieb einer Webseite unbedingt erforderlich sein (z.B. um Logins oder andere Nutzereingaben zu speichern oder aus Gründen der Sicherheit).</li>
|
||||
<li><strong>Statistik-, Marketing- und Personalisierungs-Cookies</strong>: Ferner werden Cookies im Regelfall auch im Rahmen der Reichweitenmessung eingesetzt sowie dann, wenn die Interessen eines Nutzers oder sein Verhalten (z.B. Betrachten bestimmter Inhalte, Nutzen von Funktionen etc.) auf einzelnen Webseiten in einem Nutzerprofil gespeichert werden. Solche Profile dienen dazu, den Nutzern z.B. Inhalte anzuzeigen, die ihren potentiellen Interessen entsprechen. Dieses Verfahren wird auch als “Tracking”, d.h., Nachverfolgung der potentiellen Interessen der Nutzer bezeichnet. . Soweit wir Cookies oder “Tracking”-Technologien einsetzen, informieren wir Sie gesondert in unserer Datenschutzerklärung oder im Rahmen der Einholung einer Einwilligung.</li>
|
||||
</ul>
|
||||
<p><strong>Hinweise zu Rechtsgrundlagen: </strong> Auf welcher Rechtsgrundlage wir Ihre personenbezogenen Daten mit Hilfe von Cookies verarbeiten, hängt davon ab, ob wir Sie um eine Einwilligung bitten. Falls dies zutrifft und Sie in die Nutzung von Cookies einwilligen, ist die Rechtsgrundlage der Verarbeitung Ihrer Daten die erklärte Einwilligung. Andernfalls werden die mithilfe von Cookies verarbeiteten Daten auf Grundlage unserer berechtigten Interessen (z.B. an einem betriebswirtschaftlichen Betrieb unseres Onlineangebotes und dessen Verbesserung) verarbeitet oder, wenn der Einsatz von Cookies erforderlich ist, um unsere vertraglichen Verpflichtungen zu erfüllen.</p>
|
||||
<p><strong>Speicherdauer: </strong>Sofern wir Ihnen keine expliziten Angaben zur Speicherdauer von permanenten Cookies mitteilen (z. B. im Rahmen eines sog. Cookie-Opt-Ins), gehen Sie bitte davon aus, dass die Speicherdauer bis zu zwei Jahre betragen kann.</p>
|
||||
<p><strong>Allgemeine Hinweise zum Widerruf und Widerspruch (Opt-Out): </strong> Abhängig davon, ob die Verarbeitung auf Grundlage einer Einwilligung oder gesetzlichen Erlaubnis erfolgt, haben Sie jederzeit die Möglichkeit, eine erteilte Einwilligung zu widerrufen oder der Verarbeitung Ihrer Daten durch Cookie-Technologien zu widersprechen (zusammenfassend als “Opt-Out” bezeichnet). Sie können Ihren Widerspruch zunächst mittels der Einstellungen Ihres Browsers erklären, z.B., indem Sie die Nutzung von Cookies deaktivieren (wobei hierdurch auch die Funktionsfähigkeit unseres Onlineangebotes eingeschränkt werden kann). Ein Widerspruch gegen den Einsatz von Cookies zu Zwecken des Onlinemarketings kann auch mittels einer Vielzahl von Diensten, vor allem im Fall des Trackings, über die Webseiten <a href="https://optout.aboutads.info" target="_blank" rel="noopener noreferrer">https://optout.aboutads.info</a> und <a href="https://www.youronlinechoices.com/" target="_blank" rel="noopener noreferrer">https://www.youronlinechoices.com/</a> erklärt werden. Daneben können Sie weitere Widerspruchshinweise im Rahmen der Angaben zu den eingesetzten Dienstleistern und Cookies erhalten.</p>
|
||||
<p><strong>Verarbeitung von Cookie-Daten auf Grundlage einer Einwilligung</strong>: Bevor wir Daten im Rahmen der Nutzung von Cookies verarbeiten oder verarbeiten lassen, bitten wir die Nutzer um eine jederzeit widerrufbare Einwilligung. Bevor die Einwilligung nicht ausgesprochen wurde, werden allenfalls Cookies eingesetzt, die für den Betrieb unseres Onlineangebotes unbedingt erforderlich sind.</p>
|
||||
<p><strong>Cookie-Einstellungen/ -Widerspruchsmöglichkeit:</strong></p>
|
||||
<a href="#" class="_brlbs-btn-cookie-preference borlabs-cookie-preference">Cookie Einstellungen</a>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<script id="CookieDeclaration" src="https://consent.cookiebot.com/2d880847-55f3-426a-85bb-7f694b544f69/cd.js" type="text/javascript" async></script>
|
||||
<p>………………………………</p>
|
||||
<h2 id="m317">Kommerzielle und geschäftliche Leistungen</h2>
|
||||
<p>Wir verarbeiten Daten unserer Vertrags- und Geschäftspartner, z.B. Kunden und Interessenten (zusammenfassend bezeichnet als “Vertragspartner”) im Rahmen von vertraglichen und vergleichbaren Rechtsverhältnissen sowie damit verbundenen Maßnahmen und im Rahmen der Kommunikation mit den Vertragspartnern (oder vorvertraglich), z.B., um Anfragen zu beantworten.</p>
|
||||
<p>Diese Daten verarbeiten wir zur Erfüllung unserer vertraglichen Pflichten, zur Sicherung unserer Rechte und zu Zwecken der mit diesen Angaben einhergehenden Verwaltungsaufgaben sowie der unternehmerischen Organisation. Die Daten der Vertragspartner geben wir im Rahmen des geltenden Rechts nur insoweit an Dritte weiter, als dies zu den vorgenannten Zwecken oder zur Erfüllung gesetzlicher Pflichten erforderlich ist oder mit Einwilligung der betroffenen Personen erfolgt (z.B. an beteiligte Telekommunikations-, Transport- und sonstige Hilfsdienste sowie Subunternehmer, Banken, Steuer- und Rechtsberater, Zahlungsdienstleister oder Steuerbehörden). Über weitere Verarbeitungsformen, z.B. zu Zwecken des Marketings, werden die Vertragspartner im Rahmen dieser Datenschutzerklärung informiert.</p>
|
||||
<p>Welche Daten für die vorgenannten Zwecke erforderlich sind, teilen wir den Vertragspartnern vor oder im Rahmen der Datenerhebung, z.B. in Onlineformularen, durch besondere Kennzeichnung (z.B. Farben) bzw. Symbole (z.B. Sternchen o.ä.), oder persönlich mit.</p>
|
||||
<p>Wir löschen die Daten nach Ablauf gesetzlicher Gewährleistungs- und vergleichbarer Pflichten, d.h., grundsätzlich nach Ablauf von 4 Jahren, es sei denn, dass die Daten in einem Kundenkonto gespeichert werden, z.B., solange sie aus gesetzlichen Gründen der Archivierung aufbewahrt werden müssen (z.B. für Steuerzwecke im Regelfall 10 Jahre). Daten, die uns im Rahmen eines Auftrags durch den Vertragspartner offengelegt wurden, löschen wir entsprechend den Vorgaben des Auftrags, grundsätzlich nach Ende des Auftrags.</p>
|
||||
<p>Soweit wir zur Erbringung unserer Leistungen Drittanbieter oder Plattformen einsetzen, gelten im Verhältnis zwischen den Nutzern und den Anbietern die Geschäftsbedingungen und Datenschutzhinweise der jeweiligen Drittanbieter oder Plattformen.</p>
|
||||
<p><strong>Kundenkonto</strong>: Vertragspartner können innerhalb unseres Onlineangebotes ein Konto anlegen (z.B. Kunden- bzw. Nutzerkonto, kurz “Kundenkonto”). Falls die Registrierung eines Kundenkontos erforderlich ist, werden Vertragspartner hierauf ebenso hingewiesen wie auf die für die Registrierung erforderlichen Angaben. Die Kundenkonten sind nicht öffentlich und können von Suchmaschinen nicht indexiert werden. Im Rahmen der Registrierung sowie anschließender Anmeldungen und Nutzungen des Kundenkontos speichern wir die IP-Adressen der Kunden nebst den Zugriffszeitpunkten, um die Registrierung nachweisen und etwaigem Missbrauch des Kundenkontos vorbeugen zu können.</p>
|
||||
<p>Wenn Kunden ihr Kundenkonto gekündigt haben, werden die das Kundenkonto betreffenden Daten gelöscht, vorbehaltlich, deren Aufbewahrung ist aus gesetzlichen Gründen erforderlich. Es obliegt den Kunden, ihre Daten bei erfolgter Kündigung des Kundenkontos zu sichern.</p>
|
||||
<p><strong>Shop und E-Commerce</strong>: Wir verarbeiten die Daten unserer Kunden, um ihnen die Auswahl, den Erwerb, bzw. die Bestellung der gewählten Produkte, Waren sowie verbundener Leistungen, als auch deren Bezahlung und Zustellung, bzw. Ausführung zu ermöglichen.</p>
|
||||
<p>Die erforderlichen Angaben sind als solche im Rahmen des Bestell- bzw. vergleichbaren Erwerbsvorgangs gekennzeichnet und umfassen die zur Auslieferung, bzw. Zurverfügungstellung und Abrechnung benötigten Angaben sowie Kontaktinformationen, um etwaige Rücksprache halten zu können.</p>
|
||||
<p><strong>Weitere Informationen zu kommerziellen Dienstleistungen</strong>: Wir verarbeiten die Daten unserer Kunden sowie Auftraggeber (nachfolgend einheitlich als “Kunden” bezeichnet), um ihnen die Auswahl, den Erwerb bzw. die Beauftragung der gewählten Leistungen oder Werke sowie verbundener Tätigkeiten als auch deren Bezahlung und Zustellung bzw. Ausführung oder Erbringung zu ermöglichen.</p>
|
||||
<p>Die erforderlichen Angaben sind als solche im Rahmen des Auftrags-, Bestell- bzw. vergleichbaren Vertragsschlusses gekennzeichnet und umfassen die zur Leistungserbringung und Abrechnung benötigten Angaben sowie Kontaktinformationen, um etwaige Rücksprachen halten zu können.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Zahlungsdaten (z.B. Bankverbindungen, Rechnungen, Zahlungshistorie), Kontaktdaten (z.B. E-Mail, Telefonnummern), Vertragsdaten (z.B. Vertragsgegenstand, Laufzeit, Kundenkategorie), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Interessenten, Geschäfts- und Vertragspartner, Kunden.</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Vertragliche Leistungen und Service, Kontaktanfragen und Kommunikation, Büro- und Organisationsverfahren, Verwaltung und Beantwortung von Anfragen, Sicherheitsmaßnahmen.</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Rechtliche Verpflichtung (Art. 6 Abs. 1 S. 1 lit. c. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<h2 id="m605">Nutzung von Online-Marktplätzen für E-Commerce</h2>
|
||||
<p>Wir bieten unsere Leistungen auf Online-Plattformen, die von anderen Dienstanbietern betrieben werden, an. In diesem Zusammenhang gelten zusätzlich zu unseren Datenschutzhinweisen die Datenschutzhinweise der jeweiligen Plattformen. Dies gilt insbesondere im Hinblick auf die auf den Plattformen eingesetzten Verfahren zur Reichweitemessung und zum interessensbezogenen Marketing.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Zahlungsdaten (z.B. Bankverbindungen, Rechnungen, Zahlungshistorie), Kontaktdaten (z.B. E-Mail, Telefonnummern), Vertragsdaten (z.B. Vertragsgegenstand, Laufzeit, Kundenkategorie), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Kunden.</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Vertragliche Leistungen und Service.</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<p><a href="https://biodaloe.mivita.care" target="_blank" rel="noopener noreferrer">https://biodaloe.mivita.care</a></p>
|
||||
<p><a href="https://ruth.mivita.care" target="_blank" rel="noopener noreferrer">https://ruth.mivita.care</a></p>
|
||||
<p><a href="https://thomas.mivita.care" target="_blank" rel="noopener noreferrer">https://thomas.mivita.care</a></p>
|
||||
<h2 id="m326">Zahlungsdienstleister</h2>
|
||||
<p>Im Rahmen von Vertrags- und sonstigen Rechtsbeziehungen, aufgrund gesetzlicher Pflichten oder sonst auf Grundlage unserer berechtigten Interessen bieten wir den betroffenen Personen effiziente und sichere Zahlungsmöglichkeiten an und setzen hierzu neben Banken und Kreditinstituten weitere Zahlungsdienstleister ein (zusammenfassend “Zahlungsdienstleister”).</p>
|
||||
<p>Zu den durch die Zahlungsdienstleister verarbeiteten Daten gehören Bestandsdaten, wie z.B. der Name und die Adresse, Bankdaten, wie z.B. Kontonummern oder Kreditkartennummern, Passwörter, TANs und Prüfsummen sowie die Vertrags-, Summen- und empfängerbezogenen Angaben. Die Angaben sind erforderlich, um die Transaktionen durchzuführen. Die eingegebenen Daten werden jedoch nur durch die Zahlungsdienstleister verarbeitet und bei diesen gespeichert. D.h., wir erhalten keine konto- oder kreditkartenbezogenen Informationen, sondern lediglich Informationen mit Bestätigung oder Negativbeauskunftung der Zahlung. Unter Umständen werden die Daten seitens der Zahlungsdienstleister an Wirtschaftsauskunfteien übermittelt. Diese Übermittlung bezweckt die Identitäts- und Bonitätsprüfung. Hierzu verweisen wir auf die AGB und die Datenschutzhinweise der Zahlungsdienstleister.</p>
|
||||
<p>Für die Zahlungsgeschäfte gelten die Geschäftsbedingungen und die Datenschutzhinweise der jeweiligen Zahlungsdienstleister, welche innerhalb der jeweiligen Webseiten bzw. Transaktionsapplikationen abrufbar sind. Wir verweisen auf diese ebenfalls zwecks weiterer Informationen und Geltendmachung von Widerrufs-, Auskunfts- und anderen Betroffenenrechten.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Zahlungsdaten (z.B. Bankverbindungen, Rechnungen, Zahlungshistorie), Vertragsdaten (z.B. Vertragsgegenstand, Laufzeit, Kundenkategorie), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Kunden, Interessenten.</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Vertragliche Leistungen und Service, Kontaktanfragen und Kommunikation, Affiliate-Nachverfolgung.</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<p><strong>Eingesetzte Dienste und Diensteanbieter:</strong></p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>PayPal:</strong> Zahlungsdienstleistungen und -Lösungen (z.B. PayPal, PayPal Plus, Braintree); Dienstanbieter: PayPal (Europe) S.à r.l. et Cie, S.C.A., 22-24 Boulevard Royal, L-2449 Luxembourg; Website: <a href="https://www.paypal.com/de" target="_blank" rel="noopener noreferrer">https://www.paypal.com/de</a>; Datenschutzerklärung: <a href="https://www.paypal.com/de/webapps/mpp/ua/privacy-full" target="_blank" rel="noopener noreferrer">https://www.paypal.com/de/webapps/mpp/ua/privacy-full</a>.</li>
|
||||
</ul>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Novalnet AG:</strong> Novalnet AG • Zahlungsinstitut (ZAG); Feringastraße 4 • 85774 Unterföhring • Deutschland (sh. im Folgenden)</li>
|
||||
</ul>
|
||||
<p><strong>Zusammenarbeit mit dem Zahlungsanbieter Novalnet und Paypal:</strong></p>
|
||||
<p>Der für die Verarbeitung Verantwortliche hat auf dieser Internetseite Komponenten von der Novalnet AG und der PayPal (Europe) S.à r.l. et Cie, S.C.A. integriert. Die Novalnet AG und PayPal (Europe) S.à r.l. et Cie, S.C.A. sind Full Payment Service Provider, die u.a. die Zahlungsabwicklung übernehmen.</p>
|
||||
<p>Wählt die betroffene Person während des Bestellvorgangs in dem Online-Shop eine Zahlungsart aus, werden bei bestimmten Zahlungsarten automatisiert Daten der betroffenen Person an die Novalnet AG bzw. der PayPal (Europe) S.à r.l. et Cie, S.C.A. übermittelt. Mit der Auswahl einer Zahlungsoption willigt die betroffene Person in diese, zur Abwicklung der Zahlung, Übermittlung personenbezogener Daten ein.</p>
|
||||
<p>Bei den an Novalnet übermittelten personenbezogenen Daten handelt es sich in der Regel um Vorname, Nachname, Adresse, Geburtsdatum, Geschlecht, Email-Adresse, IP-Adresse, Telefonnummer, Mobiltelefonnummer sowie um andere Daten, die zur Abwicklung einer Zahlung notwendig sind. Zur Abwicklung des Kaufvertrages notwendig sind auch solche personenbezogenen Daten, die im Zusammenhang mit der jeweiligen Bestellung stehen. Insbesondere kann es zum wechselseitigen Austausch von Zahlungsinformationen, wie Bankverbindung, Kartennummer, Gültigkeitsdatum und CVC-Code, Daten zu Waren und Dienstleistungen, Preise kommen.</p>
|
||||
<p>Die Übermittlung der Daten bezweckt insbesondere die Identitätsüberprüfung, die Zahlungsadministration und die Betrugsprävention. Der für die Verarbeitung Verantwortliche wird der Novalnet AG personenbezogene Daten insbesondere dann übermitteln, wenn ein berechtigtes Interesse für die Übermittlung gegeben ist. Die zwischen der Novalnet AG bzw. der PayPal (Europe) S.à r.l. et Cie, S.C.A. und dem für die Verarbeitung Verantwortlichen ausgetauschten personenbezogenen Daten werden ggfs. an Wirtschaftsauskunfteien übermittelt. Diese Übermittlung bezweckt die Identitäts- und Bonitätsprüfung.</p>
|
||||
<p>Die Novalnet AG gibt die personenbezogenen Daten auch an Leistungserbringer oder Subunternehmer weiter, soweit dies zur Erfüllung der vertraglichen Verpflichtungen erforderlich ist oder die Daten verarbeitet werden sollen.</p>
|
||||
<p>Bei Bezahlung über die Zahlungsarten „Kauf auf Rechnung“, „Lastschrift“, (je nachdem welche Zahlungsart(en) angeboten werden) wird die Kaufpreisforderung über die Novalnet AG als Zahlungsinstitut an die Financial Management Solutions GmbH (unter der Marke InfinitePay), (im Folgenden „InfinitePay“ genannt) abgetreten. Die zur Zahlungsabwicklung erforderlichen Daten werden dabei an die InfinitePay übermittelt. Die Datenübermittelung dient u a dem Zweck , dass InfinitePay zur Abwicklung Ihres Einkaufs mit der von Ihnen gewünschten Zahlungsart eine Identitäts- und Bonitätsprüfung durchführen kann. Die Verarbeitung erfolgt auf Grundlage des Art. 6 Abs. 1 lit. f DSGVO aus dem berechtigten Interesse an einem Angebot von verschiedenen Zahlarten sowie dem berechtigten Interesse am Schutz vor Zahlungsausfall. Sie haben das Recht aus Gründen, die sich aus Ihrer besonderen Situation ergeben, jederzeit gegen diese auf Art. 6 Abs. 1 lit. f DSGVO beruhende Verarbeitung der Sie betreffenden personenbezogenen Daten durch eine Mitteilung an uns zu widersprechen. Die Datenschutzerklärung von InfinitePay finden Sie hier: <a href="https://www.infinitepay.de/datenschutzhinweise" target="_blank" rel="noopener noreferrer">https://www.infinitepay.de/datenschutzhinweise</a></p>
|
||||
<p>Sollten Sie Auskunft über die Verwendung der Sie betreffenden personenbezogenen Daten erhalten wollen, können Sie sich jederzeit an datenschutz@fms-mainz.de wenden. Die Bereitstellung der Daten ist für den Vertragsschluss mit der von Ihnen gewünschten Zahlungsart erforderlich. Eine Nichtbereitstellung hat zur Folge, dass der Vertrag nicht mit der von Ihnen gewünschten Zahlungsart geschlossen werden kann.</p>
|
||||
<p>Die betroffene Person hat die Möglichkeit, die Einwilligung zum Umgang mit personenbezogenen Daten jederzeit gegenüber der Novalnet AG oder der PayPal (Europe) S.à r.l. et Cie, S.C.A. zu widerrufen. Ein Widerruf wirkt sich nicht auf personenbezogene Daten aus, die zwingend zur (vertragsgemäßen) Zahlungsabwicklung verarbeitet, genutzt oder übermittelt werden müssen.</p>
|
||||
<h2 id="m225">Bereitstellung des Onlineangebotes und Webhosting</h2>
|
||||
<p>Um unser Onlineangebot sicher und effizient bereitstellen zu können, nehmen wir die Leistungen von einem oder mehreren Webhosting-Anbietern in Anspruch, von deren Servern (bzw. von ihnen verwalteten Servern) das Onlineangebot abgerufen werden kann. Zu diesen Zwecken können wir Infrastruktur- und Plattformdienstleistungen, Rechenkapazität, Speicherplatz und Datenbankdienste sowie Sicherheitsleistungen und technische Wartungsleistungen in Anspruch nehmen.</p>
|
||||
<p>Zu den im Rahmen der Bereitstellung des Hostingangebotes verarbeiteten Daten können alle die Nutzer unseres Onlineangebotes betreffenden Angaben gehören, die im Rahmen der Nutzung und der Kommunikation anfallen. Hierzu gehören regelmäßig die IP-Adresse, die notwendig ist, um die Inhalte von Onlineangeboten an Browser ausliefern zu können, und alle innerhalb unseres Onlineangebotes oder von Webseiten getätigten Eingaben.</p>
|
||||
<p><strong>E-Mail-Versand und -Hosting</strong>: Die von uns in Anspruch genommenen Webhosting-Leistungen umfassen ebenfalls den Versand, den Empfang sowie die Speicherung von E-Mails. Zu diesen Zwecken werden die Adressen der Empfänger sowie Absender als auch weitere Informationen betreffend den E-Mailversand (z.B. die beteiligten Provider) sowie die Inhalte der jeweiligen E-Mails verarbeitet. Die vorgenannten Daten können ferner zu Zwecken der Erkennung von SPAM verarbeitet werden. Wir bitten darum, zu beachten, dass E-Mails im Internet grundsätzlich nicht verschlüsselt versendet werden. Im Regelfall werden E-Mails zwar auf dem Transportweg verschlüsselt, aber (sofern kein sogenanntes Ende-zu-Ende-Verschlüsselungsverfahren eingesetzt wird) nicht auf den Servern, von denen sie abgesendet und empfangen werden. Wir können daher für den Übertragungsweg der E-Mails zwischen dem Absender und dem Empfang auf unserem Server keine Verantwortung übernehmen.</p>
|
||||
<p><strong>Erhebung von Zugriffsdaten und Logfiles</strong>: Wir selbst (bzw. unser Webhostinganbieter) erheben Daten zu jedem Zugriff auf den Server (sogenannte Serverlogfiles). Zu den Serverlogfiles können die Adresse und Name der abgerufenen Webseiten und Dateien, Datum und Uhrzeit des Abrufs, übertragene Datenmengen, Meldung über erfolgreichen Abruf, Browsertyp nebst Version, das Betriebssystem des Nutzers, Referrer URL (die zuvor besuchte Seite) und im Regelfall IP-Adressen und der anfragende Provider gehören.</p>
|
||||
<p>Die Serverlogfiles können zum einen zu Zwecken der Sicherheit eingesetzt werden, z.B., um eine Überlastung der Server zu vermeiden (insbesondere im Fall von missbräuchlichen Angriffen, sogenannten DDoS-Attacken) und zum anderen, um die Auslastung der Server und ihre Stabilität sicherzustellen.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<h2 id="m367">Registrierung, Anmeldung und Nutzerkonto</h2>
|
||||
<p>Nutzer können ein Nutzerkonto anlegen. Im Rahmen der Registrierung werden den Nutzern die erforderlichen Pflichtangaben mitgeteilt und zu Zwecken der Bereitstellung des Nutzerkontos auf Grundlage vertraglicher Pflichterfüllung verarbeitet. Zu den verarbeiteten Daten gehören insbesondere die Login-Informationen (Name, Passwort sowie eine E-Mail-Adresse). Die im Rahmen der Registrierung eingegebenen Daten werden für die Zwecke der Nutzung des Nutzerkontos und dessen Zwecks verwendet.</p>
|
||||
<p>Die Nutzer können über Vorgänge, die für deren Nutzerkonto relevant sind, wie z.B. technische Änderungen, per E-Mail informiert werden. Wenn Nutzer ihr Nutzerkonto gekündigt haben, werden deren Daten im Hinblick auf das Nutzerkonto, vorbehaltlich einer gesetzlichen Aufbewahrungspflicht, gelöscht. Es obliegt den Nutzern, ihre Daten bei erfolgter Kündigung vor dem Vertragsende zu sichern. Wir sind berechtigt, sämtliche während der Vertragsdauer gespeicherte Daten des Nutzers unwiederbringlich zu löschen.</p>
|
||||
<p>Im Rahmen der Inanspruchnahme unserer Registrierungs- und Anmeldefunktionen sowie der Nutzung des Nutzerkontos speichern wir die IP-Adresse und den Zeitpunkt der jeweiligen Nutzerhandlung. Die Speicherung erfolgt auf Grundlage unserer berechtigten Interessen als auch jener der Nutzer an einem Schutz vor Missbrauch und sonstiger unbefugter Nutzung. Eine Weitergabe dieser Daten an Dritte erfolgt grundsätzlich nicht, es sei denn, sie ist zur Verfolgung unserer Ansprüche erforderlich oder es besteht eine gesetzliche Verpflichtung hierzu.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern), Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Vertragliche Leistungen und Service, Sicherheitsmaßnahmen, Verwaltung und Beantwortung von Anfragen.</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<h2 id="m104">Blogs und Publikationsmedien</h2>
|
||||
<p>Wir nutzen Blogs oder vergleichbare Mittel der Onlinekommunikation und Publikation (nachfolgend “Publikationsmedium”). Die Daten der Leser werden für die Zwecke des Publikationsmediums nur insoweit verarbeitet, als es für dessen Darstellung und die Kommunikation zwischen Autoren und Lesern oder aus Gründen der Sicherheit erforderlich ist. Im Übrigen verweisen wir auf die Informationen zur Verarbeitung der Besucher unseres Publikationsmediums im Rahmen dieser Datenschutzhinweise.</p>
|
||||
<p><strong>Kommentare und Beiträge</strong>: Wenn Nutzer Kommentare oder sonstige Beiträge hinterlassen, können ihre IP-Adressen auf Grundlage unserer berechtigten Interessen gespeichert werden. Das erfolgt zu unserer Sicherheit, falls jemand in Kommentaren und Beiträgen widerrechtliche Inhalte hinterlässt (Beleidigungen, verbotene politische Propaganda etc.). In diesem Fall können wir selbst für den Kommentar oder Beitrag belangt werden und sind daher an der Identität des Verfassers interessiert.</p>
|
||||
<p>Des Weiteren behalten wir uns vor, auf Grundlage unserer berechtigten Interessen die Angaben der Nutzer zwecks Spamerkennung zu verarbeiten.</p>
|
||||
<p>Auf derselben Rechtsgrundlage behalten wir uns vor, im Fall von Umfragen die IP-Adressen der Nutzer für deren Dauer zu speichern und Cookies zu verwenden, um Mehrfachabstimmungen zu vermeiden.</p>
|
||||
<p>Die im Rahmen der Kommentare und Beiträge mitgeteilten Informationen zur Person, etwaige Kontakt- sowie Webseiteninformationen als auch die inhaltlichen Angaben werden von uns bis zum Widerspruch der Nutzer dauerhaft gespeichert.</p>
|
||||
<p><strong>Akismet Anti-Spam-Prüfung</strong>: Wir nutzen auf Grundlage unserer berechtigten Interessen den Dienst “Akismet“. Mit Hilfe von Akismet werden Kommentare echter Menschen von Spam-Kommentaren unterschieden. Dazu werden alle Kommentarangaben an einen Server in den USA verschickt, wo sie analysiert und für Vergleichszwecke vier Tage lang gespeichert werden. Ist ein Kommentar als Spam eingestuft worden, werden die Daten über diese Zeit hinaus gespeichert. Zu diesen Angaben gehören der eingegebene Name, die E-Mailadresse, die IP-Adresse, der Kommentarinhalt, der Referrer, Angaben zum verwendeten Browser sowie zum Computersystem und die Zeit des Eintrags.</p>
|
||||
<p>Die Nutzer können gerne Pseudonyme nutzen oder auf die Eingabe des Namens oder der Emailadresse verzichten. Sie können die Übertragung der Daten komplett verhindern, indem sie unser Kommentarsystem nicht nutzen. Das wäre schade, aber leider sehen wir keine Alternativen, die ebenso effektiv funktionieren.</p>
|
||||
<p><strong>Profilbilder von Gravatar</strong>: Wir setzen innerhalb unseres Onlineangebotes und insbesondere im Blog den Dienst Gravatar ein.</p>
|
||||
<p>Gravatar ist ein Dienst, bei dem sich Nutzer anmelden und Profilbilder und ihre E-Mail-Adressen hinterlegen können. Wenn Nutzer mit der jeweiligen E-Mail-Adresse auf anderen Onlinepräsenzen (vor allem in Blogs) Beiträge oder Kommentare hinterlassen, können deren Profilbilder neben den Beiträgen oder Kommentaren dargestellt werden. Hierzu wird die von den Nutzern mitgeteilte E-Mail-Adresse an Gravatar zwecks Prüfung, ob zu ihr ein Profil gespeichert ist, verschlüsselt übermittelt. Dies ist der einzige Zweck der Übermittlung der E-Mail-Adresse. Sie wird nicht für andere Zwecke verwendet, sondern danach gelöscht.</p>
|
||||
<p>Die Nutzung von Gravatar erfolgt auf Grundlage unserer berechtigten Interessen, da wir mit Hilfe von Gravatar den Beitrags- und Kommentarverfassern die Möglichkeit bieten, ihre Beiträge mit einem Profilbild zu personalisieren.</p>
|
||||
<p>Durch die Anzeige der Bilder bringt Gravatar die IP-Adresse der Nutzer in Erfahrung, da dies für eine Kommunikation zwischen einem Browser und einem Onlineservice notwendig ist.</p>
|
||||
<p>Wenn Nutzer nicht möchten, dass ein mit ihrer E-Mail-Adresse bei Gravatar verknüpftes Benutzerbild in den Kommentaren erscheint, sollten sie zum Kommentieren eine E-Mail-Adresse nutzen, welche nicht bei Gravatar hinterlegt ist. Wir weisen ferner darauf hin, dass es auch möglich ist eine anonyme oder gar keine E-Mail-Adresse zu verwenden, falls die Nutzer nicht wünschen, dass die eigene E-Mail-Adresse an Gravatar übersendet wird. Nutzer können die Übertragung der Daten komplett verhindern, indem sie unser Kommentarsystem nicht nutzen.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern), Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Vertragliche Leistungen und Service, Feedback (z.B. Sammeln von Feedback via Online-Formular), Sicherheitsmaßnahmen, Verwaltung und Beantwortung von Anfragen, Bereitstellung unseres Onlineangebotes und Nutzerfreundlichkeit.</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO), Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Schutz lebenswichtiger Interessen (Art. 6 Abs. 1 S. 1 lit. d. DSGVO).</li>
|
||||
</ul>
|
||||
<p><strong>Eingesetzte Dienste und Diensteanbieter:</strong></p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Profilbilder von Gravatar:</strong> Profilbilder; Dienstanbieter: Automattic Inc., 60 29th Street #343, San Francisco, CA 94110, USA; Website: <a href="https://automattic.com" target="_blank" rel="noopener noreferrer">https://automattic.com</a>; Datenschutzerklärung: <a href="https://automattic.com/privacy" target="_blank" rel="noopener noreferrer">https://automattic.com/privacy</a>.</li>
|
||||
<li><strong>UpdraftPlus:</strong> Backup-Software und Backup-Speicherung; Dienstanbieter: Simba Hosting Ltd., 11, Barringer Way, St. Neots, Cambs., PE19 1LW, GB; Website: <a href="https://updraftplus.com/" target="_blank" rel="noopener noreferrer">https://updraftplus.com/</a>.</li>
|
||||
<li><strong>Wordfence:</strong> Firewall und Sicherheits- sowie Fehlererkennungsfunktionen; Dienstanbieter: Defiant, Inc., 800 5th Ave Ste 4100, Seattle, WA 98104, USA; Website: <a href="https://www.wordfence.com" target="_blank" rel="noopener noreferrer">https://www.wordfence.com</a>; Datenschutzerklärung: <a href="https://www.wordfence.com/privacy-policy/" target="_blank" rel="noopener noreferrer">https://www.wordfence.com/privacy-policy/</a>; Standardvertragsklauseln (Gewährleistung Datenschutzniveau bei Verarbeitung in Drittländern): <a href="https://www.wordfence.com/gdpr/dpa.pdf" target="_blank" rel="noopener noreferrer">https://www.wordfence.com/gdpr/dpa.pdf</a>.</li>
|
||||
</ul>
|
||||
<h2 id="m182">Kontaktaufnahme</h2>
|
||||
<p>Bei der Kontaktaufnahme mit uns (z.B. per Kontaktformular, E-Mail, Telefon oder via soziale Medien) werden die Angaben der anfragenden Personen verarbeitet, soweit dies zur Beantwortung der Kontaktanfragen und etwaiger angefragter Maßnahmen erforderlich ist.</p>
|
||||
<p>Die Beantwortung der Kontaktanfragen im Rahmen von vertraglichen oder vorvertraglichen Beziehungen erfolgt zur Erfüllung unserer vertraglichen Pflichten oder zur Beantwortung von (vor)vertraglichen Anfragen und im Übrigen auf Grundlage der berechtigten Interessen an der Beantwortung der Anfragen.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern), Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Kommunikationspartner.</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Kontaktanfragen und Kommunikation.</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<h2 id="m735">Videokonferenzen, Onlinemeetings, Webinare und Bildschirm-Sharing</h2>
|
||||
<p>Wir setzen Plattformen und Anwendungen anderer Anbieter (nachfolgend bezeichnet als “Drittanbieter”) zu Zwecken der Durchführung von Video und Audio-Konferenzen, Webinaren und sonstigen Arten von Video und Audio-Meetings ein. Bei der Auswahl der Drittanbieter und ihrer Leistungen beachten wir die gesetzlichen Vorgaben.</p>
|
||||
<p>In diesem Rahmen werden Daten der Kommunikationsteilnehmer verarbeitet und auf den Servern der Drittanbieter gespeichert, soweit diese Bestandteil von Kommunikationsvorgängen mit uns sind. Zu diesen Daten können insbesondere Anmelde- und Kontaktdaten, visuelle sowie stimmliche Beiträge sowie Eingaben in Chats und geteilte Bildschirminhalte gehören.</p>
|
||||
<p>Sofern Nutzer im Rahmen der Kommunikation, Geschäfts- oder anderen Beziehungen mit uns auf die Drittanbieter, bzw. deren Software oder Plattformen verwiesen werden, können die Drittanbieter Nutzungsdaten und Metadaten zu Sicherheitszwecken, Serviceoptimierung oder Marketingzwecken verarbeiten. Wir bitten daher, die Datenschutzhinweise der jeweiligen Drittanbieter zu beachten.</p>
|
||||
<p><strong>Hinweise zu Rechtsgrundlagen:</strong> Sofern wir die Nutzer um deren Einwilligung in den Einsatz der Drittanbieter oder bestimmter Funktionen bitten (z. B. Einverständnis mit einer Aufzeichnung von Gesprächen), ist die Rechtsgrundlage der Verarbeitung die Einwilligung. Ferner kann deren Einsatz ein Bestandteil unserer (vor)vertraglichen Leistungen sein, sofern der Einsatz der Drittanbieter in diesem Rahmen vereinbart wurde. Ansonsten werden die Daten der Nutzer auf Grundlage unserer berechtigten Interessen an einer effizienten und sicheren Kommunikation mit unseren unser Kommunikationspartnern verarbeitet. In diesem Zusammenhang möchten wir Sie zusätzlich auf die Informationen zur Verwendung von Cookies in dieser Datenschutzerklärung verweisen.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern), Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Kommunikationspartner, Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Vertragliche Leistungen und Service, Kontaktanfragen und Kommunikation, Büro- und Organisationsverfahren, Direktmarketing (z.B. per E-Mail oder postalisch).</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<p><strong>Eingesetzte Dienste und Diensteanbieter:</strong></p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Zoom:</strong> Videokonferenzen, Webkonferenzen und Webinare; Dienstanbieter: Zoom Video Communications, Inc., 55 Almaden Blvd., Suite 600, San Jose, CA 95113, USA; Website: <a href="https://zoom.us" target="_blank" rel="noopener noreferrer">https://zoom.us</a>; Datenschutzerklärung: <a href="https://zoom.us/docs/de-de/privacy-and-legal.html" target="_blank" rel="noopener noreferrer">https://zoom.us/docs/de-de/privacy-and-legal.html</a>; Standardvertragsklauseln (Gewährleistung Datenschutzniveau bei Verarbeitung in Drittländern): <a href="https://zoom.us/docs/de-de/privacy-and-legal.html" target="_blank" rel="noopener noreferrer">https://zoom.us/docs/de-de/privacy-and-legal.html</a> (Bezeichnet als Globale DPA).</li>
|
||||
</ul>
|
||||
<h2 id="m29">Cloud-Dienste</h2>
|
||||
<p>Wir nutzen über das Internet zugängliche und auf den Servern ihrer Anbieter ausgeführte Softwaredienste (sogenannte “Cloud-Dienste”, auch bezeichnet als “Software as a Service”) für die folgenden Zwecke: Dokumentenspeicherung und Verwaltung, Kalenderverwaltung, E-Mail-Versand, Tabellenkalkulationen und Präsentationen, Austausch von Dokumenten, Inhalten und Informationen mit bestimmten Empfängern oder Veröffentlichung von Webseiten, Formularen oder sonstigen Inhalten und Informationen sowie Chats und Teilnahme an Audio- und Videokonferenzen.</p>
|
||||
<p>In diesem Rahmen können personenbezogenen Daten verarbeitet und auf den Servern der Anbieter gespeichert werden, soweit diese Bestandteil von Kommunikationsvorgängen mit uns sind oder von uns sonst, wie im Rahmen dieser Datenschutzerklärung dargelegt, verarbeitet werden. Zu diesen Daten können insbesondere Stammdaten und Kontaktdaten der Nutzer, Daten zu Vorgängen, Verträgen, sonstigen Prozessen und deren Inhalte gehören. Die Anbieter der Cloud-Dienste verarbeiten ferner Nutzungsdaten und Metadaten, die von ihnen zu Sicherheitszwecken und zur Serviceoptimierung verwendet werden.</p>
|
||||
<p>Sofern wir mit Hilfe der Cloud-Dienste für andere Nutzer oder öffentlich zugängliche Webseiten Formulare o.a. Dokumente und Inhalte bereitstellen, können die Anbieter Cookies auf den Geräten der Nutzer für Zwecke der Webanalyse oder, um sich Einstellungen der Nutzer (z.B. im Fall der Mediensteuerung) zu merken, speichern.</p>
|
||||
<p><strong>Hinweise zu Rechtsgrundlagen:</strong> Sofern wir um eine Einwilligung in den Einsatz der Cloud-Dienste bitten, ist die Rechtsgrundlage der Verarbeitung die Einwilligung. Ferner kann deren Einsatz ein Bestandteil unserer (vor)vertraglichen Leistungen sein, sofern der Einsatz der Cloud-Dienste in diesem Rahmen vereinbart wurde. Ansonsten werden die Daten der Nutzer auf Grundlage unserer berechtigten Interessen (d.h., Interesse an effizienten und sicheren Verwaltungs- und Kollaborationsprozessen) verarbeitet</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern), Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Kunden, Beschäftigte (z.B. Angestellte, Bewerber, ehemalige Mitarbeiter), Interessenten, Kommunikationspartner.</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Büro- und Organisationsverfahren.</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<p><strong>Eingesetzte Dienste und Diensteanbieter:</strong></p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Google Cloud-Dienste:</strong> Cloud-Speicher-Dienste; Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: <a href="https://cloud.google.com/" target="_blank" rel="noopener noreferrer">https://cloud.google.com/</a>; Datenschutzerklärung: <a href="https://www.google.com/policies/privacy" target="_blank" rel="noopener noreferrer">https://www.google.com/policies/privacy</a>, Sicherheitshinweise: <a href="https://cloud.google.com/security/privacy" target="_blank" rel="noopener noreferrer">https://cloud.google.com/security/privacy</a>; Standardvertragsklauseln (Gewährleistung Datenschutzniveau bei Verarbeitung in Drittländern): <a href="https://cloud.google.com/terms/data-processing-terms" target="_blank" rel="noopener noreferrer">https://cloud.google.com/terms/data-processing-terms</a>; Zusätzliche Hinweise zum Datenschutz: <a href="https://cloud.google.com/terms/data-processing-terms" target="_blank" rel="noopener noreferrer">https://cloud.google.com/terms/data-processing-terms</a>.</li>
|
||||
</ul>
|
||||
<p>Der gewählte Standort für die Speicherorte: Europa.</p>
|
||||
<h2 id="m17">Newsletter und elektronische Benachrichtigungen</h2>
|
||||
<p>Wir versenden Newsletter, E-Mails und weitere elektronische Benachrichtigungen (nachfolgend “Newsletter“) nur mit der Einwilligung der Empfänger oder einer gesetzlichen Erlaubnis. Sofern im Rahmen einer Anmeldung zum Newsletter dessen Inhalte konkret umschrieben werden, sind sie für die Einwilligung der Nutzer maßgeblich. Im Übrigen enthalten unsere Newsletter Informationen zu unseren Leistungen und uns.</p>
|
||||
<p>Um sich zu unseren Newslettern anzumelden, reicht es grundsätzlich aus, wenn Sie Ihre E-Mail-Adresse angeben. Wir können Sie jedoch bitten, einen Namen, zwecks persönlicher Ansprache im Newsletter, oder weitere Angaben, sofern diese für die Zwecke des Newsletters erforderlich sind, zu tätigen.</p>
|
||||
<p><strong>Double-Opt-In-Verfahren:</strong> Die Anmeldung zu unserem Newsletter erfolgt grundsätzlich in einem sogenannte Double-Opt-In-Verfahren. D.h., Sie erhalten nach der Anmeldung eine E-Mail, in der Sie um die Bestätigung Ihrer Anmeldung gebeten werden. Diese Bestätigung ist notwendig, damit sich niemand mit fremden E-Mail-Adressen anmelden kann. Die Anmeldungen zum Newsletter werden protokolliert, um den Anmeldeprozess entsprechend den rechtlichen Anforderungen nachweisen zu können. Hierzu gehört die Speicherung des Anmelde- und des Bestätigungszeitpunkts als auch der IP-Adresse. Ebenso werden die Änderungen Ihrer bei dem Versanddienstleister gespeicherten Daten protokolliert.</p>
|
||||
<p><strong>Löschung und Einschränkung der Verarbeitung: </strong> Wir können die ausgetragenen E-Mail-Adressen bis zu drei Jahren auf Grundlage unserer berechtigten Interessen speichern, bevor wir sie löschen, um eine ehemals gegebene Einwilligung nachweisen zu können. Die Verarbeitung dieser Daten wird auf den Zweck einer möglichen Abwehr von Ansprüchen beschränkt. Ein individueller Löschungsantrag ist jederzeit möglich, sofern zugleich das ehemalige Bestehen einer Einwilligung bestätigt wird. Im Fall von Pflichten zur dauerhaften Beachtung von Widersprüchen behalten wir uns die Speicherung der E-Mail-Adresse alleine zu diesem Zweck in einer Sperrliste (sogenannte “Blacklist”) vor.</p>
|
||||
<p>Die Protokollierung des Anmeldeverfahrens erfolgt auf Grundlage unserer berechtigten Interessen zu Zwecken des Nachweises seines ordnungsgemäßen Ablaufs. Soweit wir einen Dienstleister mit dem Versand von E-Mails beauftragen, erfolgt dies auf Grundlage unserer berechtigten Interessen an einem effizienten und sicheren Versandsystem.</p>
|
||||
<p><strong>Hinweise zu Rechtsgrundlagen:</strong> Der Versand der Newsletter erfolgt auf Grundlage einer Einwilligung der Empfänger oder, falls eine Einwilligung nicht erforderlich ist, auf Grundlage unserer berechtigten Interessen am Direktmarketing, sofern und soweit diese gesetzlich, z.B. im Fall von Bestandskundenwerbung, erlaubt ist. Soweit wir einen Dienstleister mit dem Versand von E-Mails beauftragen, geschieht dies auf der Grundlage unserer berechtigten Interessen. Das Registrierungsverfahren wird auf der Grundlage unserer berechtigten Interessen aufgezeichnet, um nachzuweisen, dass es in Übereinstimmung mit dem Gesetz durchgeführt wurde.</p>
|
||||
<p><strong>Inhalte:</strong> Informationen zu uns, unseren Leistungen, Aktionen und Angeboten.</p>
|
||||
<p><strong>Analyse und Erfolgsmessung</strong>: Die Newsletter enthalten einen sogenannte “web-beacon“, d.h., eine pixelgroße Datei, die beim Öffnen des Newsletters von unserem Server, bzw., sofern wir einen Versanddienstleister einsetzen, von dessen Server abgerufen wird. Im Rahmen dieses Abrufs werden zunächst technische Informationen, wie Informationen zum Browser und Ihrem System, als auch Ihre IP-Adresse und der Zeitpunkt des Abrufs, erhoben.</p>
|
||||
<p>Diese Informationen werden zur technischen Verbesserung unseres Newsletters anhand der technischen Daten oder der Zielgruppen und ihres Leseverhaltens auf Basis ihrer Abruforte (die mit Hilfe der IP-Adresse bestimmbar sind) oder der Zugriffszeiten genutzt. Diese Analyse beinhaltet ebenfalls die Feststellung, ob die Newsletter geöffnet werden, wann sie geöffnet werden und welche Links geklickt werden. Diese Informationen können aus technischen Gründen zwar den einzelnen Newsletterempfängern zugeordnet werden. Es ist jedoch weder unser Bestreben noch, sofern eingesetzt, das des Versanddienstleisters, einzelne Nutzer zu beobachten. Die Auswertungen dienen uns vielmehr dazu, die Lesegewohnheiten unserer Nutzer zu erkennen und unsere Inhalte an sie anzupassen oder unterschiedliche Inhalte entsprechend den Interessen unserer Nutzer zu versenden.</p>
|
||||
<p>Die Auswertung des Newsletters und die Erfolgsmessung erfolgen, vorbehaltlich einer ausdrücklichen Einwilligung der Nutzer, auf Grundlage unserer berechtigten Interessen zu Zwecken des Einsatzes eines nutzerfreundlichen sowie sicheren Newslettersystems, welches sowohl unseren geschäftlichen Interessen dient, als auch den Erwartungen der Nutzer entspricht.</p>
|
||||
<p>Ein getrennter Widerruf der Erfolgsmessung ist leider nicht möglich, in diesem Fall muss das gesamte Newsletterabonnement gekündigt, bzw. muss ihm widersprochen werden.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Kommunikationspartner.</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Direktmarketing (z.B. per E-Mail oder postalisch).</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
<li><strong>Widerspruchsmöglichkeit (Opt-Out):</strong> Sie können den Empfang unseres Newsletters jederzeit kündigen, d.h. Ihre Einwilligungen widerrufen, bzw. dem weiteren Empfang widersprechen. Einen Link zur Kündigung des Newsletters finden Sie entweder am Ende eines jeden Newsletters oder können sonst eine der oben angegebenen Kontaktmöglichkeiten, vorzugswürdig E-Mail, hierzu nutzen.</li>
|
||||
</ul>
|
||||
<p><strong>Eingesetzte Dienste und Diensteanbieter:</strong></p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Mailjet:</strong> E-Mail-Marketing-Plattform; Dienstanbieter: Mailjet SAS,13-13 bis, rue de l’Aubrac, 75012 Paris, Frankreich; Website: <a href="https://www.mailjet.de" target="_blank" rel="noopener noreferrer">https://www.mailjet.de</a>; Datenschutzerklärung: <a href="https://www.mailjet.de/privacy-policy" target="_blank" rel="noopener noreferrer">https://www.mailjet.de/privacy-policy</a>.</li>
|
||||
</ul>
|
||||
<h2 id="m638">Werbliche Kommunikation via E-Mail, Post, Fax oder Telefon</h2>
|
||||
<p>Wir verarbeiten personenbezogene Daten zu Zwecken der werblichen Kommunikation, die über diverse Kanäle, wie z.B. E-Mail, Telefon, Post oder Fax, entsprechend den gesetzlichen Vorgaben erfolgen kann.</p>
|
||||
<p>Die Empfänger haben das Recht, erteilte Einwilligungen jederzeit zu widerrufen oder der werblichen Kommunikation jederzeit zu widersprechen.</p>
|
||||
<p>Nach Widerruf bzw. Widerspruch können wir die zum Nachweis der Einwilligung erforderlichen Daten bis zu drei Jahren auf Grundlage unserer berechtigten Interessen speichern, bevor wir sie löschen. Die Verarbeitung dieser Daten wird auf den Zweck einer möglichen Abwehr von Ansprüchen beschränkt. Ein individueller Löschungsantrag ist jederzeit möglich, sofern zugleich das ehemalige Bestehen einer Einwilligung bestätigt wird.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Kommunikationspartner.</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Direktmarketing (z.B. per E-Mail oder postalisch).</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<h2 id="m264">Onlinemarketing</h2>
|
||||
<p>Wir verarbeiten personenbezogene Daten zu Zwecken des Onlinemarketings, worunter insbesondere die Vermarktung von Werbeflächen oder Darstellung von werbenden und sonstigen Inhalten (zusammenfassend als “Inhalte” bezeichnet) anhand potentieller Interessen der Nutzer sowie die Messung ihrer Effektivität fallen kann.</p>
|
||||
<p>Zu diesen Zwecken werden sogenannte Nutzerprofile angelegt und in einer Datei (sogenannte “Cookie”) gespeichert oder ähnliche Verfahren genutzt, mittels derer die für die Darstellung der vorgenannten Inhalte relevante Angaben zum Nutzer gespeichert werden. Zu diesen Angaben können z.B. betrachtete Inhalte, besuchte Webseiten, genutzte Onlinenetzwerke, aber auch Kommunikationspartner und technische Angaben, wie der verwendete Browser, das verwendete Computersystem sowie Angaben zu Nutzungszeiten gehören. Sofern Nutzer in die Erhebung ihrer Standortdaten eingewilligt haben, können auch diese verarbeitet werden.</p>
|
||||
<p>Es werden ebenfalls die IP-Adressen der Nutzer gespeichert. Jedoch nutzen wir zur Verfügung stehende IP-Masking-Verfahren (d.h., Pseudonymisierung durch Kürzung der IP-Adresse) zum Schutz der Nutzer. Generell werden im Rahmen des Onlinemarketingverfahren keine Klardaten der Nutzer (wie z.B. E-Mail-Adressen oder Namen) gespeichert, sondern Pseudonyme. D.h., wir als auch die Anbieter der Onlinemarketingverfahren kennen nicht die tatsächlich Identität der Nutzer, sondern nur die in deren Profilen gespeicherten Angaben.</p>
|
||||
<p>Die Angaben in den Profilen werden im Regelfall in den Cookies oder mittels ähnlicher Verfahren gespeichert. Diese Cookies können später generell auch auf anderen Webseiten die dasselbe Onlinemarketingverfahren einsetzen, ausgelesen und zu Zwecken der Darstellung von Inhalten analysiert als auch mit weiteren Daten ergänzt und auf dem Server des Onlinemarketingverfahrensanbieters gespeichert werden.</p>
|
||||
<p>Ausnahmsweise können Klardaten den Profilen zugeordnet werden. Das ist der Fall, wenn die Nutzer z.B. Mitglieder eines sozialen Netzwerks sind, dessen Onlinemarketingverfahren wir einsetzen und das Netzwerk die Profile der Nutzer mit den vorgenannten Angaben verbindet. Wir bitten darum, zu beachten, dass Nutzer mit den Anbietern zusätzliche Abreden, z.B. durch Einwilligung im Rahmen der Registrierung, treffen können.</p>
|
||||
<p>Wir erhalten grundsätzlich nur Zugang zu zusammengefassten Informationen über den Erfolg unserer Werbeanzeigen. Jedoch können wir im Rahmen sogenannter Konversionsmessungen prüfen, welche unserer Onlinemarketingverfahren zu einer sogenannten Konversion geführt haben, d.h. z.B., zu einem Vertragsschluss mit uns. Die Konversionsmessung wird alleine zur Analyse des Erfolgs unserer Marketingmaßnahmen verwendet.</p>
|
||||
<p>Solange nicht anders angegeben, bitten wir Sie davon auszugehen, dass verwendete Cookies für einen Zeitraum von zwei Jahren gespeichert werden.</p>
|
||||
<p><strong>Hinweise zu Rechtsgrundlagen:</strong> Sofern wir die Nutzer um deren Einwilligung in den Einsatz der Drittanbieter bitten, ist die Rechtsgrundlage der Verarbeitung von Daten die Einwilligung. Ansonsten werden die Daten der Nutzer auf Grundlage unserer berechtigten Interessen (d.h. Interesse an effizienten, wirtschaftlichen und empfängerfreundlichen Leistungen) verarbeitet. In diesem Zusammenhang möchten wir Sie auch auf die Informationen zur Verwendung von Cookies in dieser Datenschutzerklärung hinweisen.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten), Interessenten.</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Tracking (z.B. interessens-/verhaltensbezogenes Profiling, Nutzung von Cookies), Remarketing, Besuchsaktionsauswertung, Interessenbasiertes und verhaltensbezogenes Marketing, Profiling (Erstellen von Nutzerprofilen), Konversionsmessung (Messung der Effektivität von Marketingmaßnahmen), Reichweitenmessung (z.B. Zugriffsstatistiken, Erkennung wiederkehrender Besucher).</li>
|
||||
<li><strong>Sicherheitsmaßnahmen:</strong> IP-Masking (Pseudonymisierung der IP-Adresse).</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
<li><strong>Widerspruchsmöglichkeit (Opt-Out):</strong> Wir verweisen auf die Datenschutzhinweise der jeweiligen Anbieter und die zu den Anbietern angegebenen Widerspruchsmöglichkeiten (sog. “Opt-Out”). Sofern keine explizite Opt-Out-Möglichkeit angegeben wurde, besteht zum einen die Möglichkeit, dass Sie Cookies in den Einstellungen Ihres Browsers abschalten. Hierdurch können jedoch Funktionen unseres Onlineangebotes eingeschränkt werden. Wir empfehlen daher zusätzlich die folgenden Opt-Out-Möglichkeiten, die zusammenfassend auf jeweilige Gebiete gerichtet angeboten werden:a) Europa: <a href="https://www.youronlinechoices.eu" target="_blank" rel="noopener noreferrer">https://www.youronlinechoices.eu</a>.<br>
|
||||
b) Kanada: <a href="https://www.youradchoices.ca/choices" target="_blank" rel="noopener noreferrer">https://www.youradchoices.ca/choices</a>.<br>
|
||||
c) USA: <a href="https://www.aboutads.info/choices" target="_blank" rel="noopener noreferrer">https://www.aboutads.info/choices</a>.<br>
|
||||
d) Gebietsübergreifend: <a href="https://optout.aboutads.info" target="_blank" rel="noopener noreferrer">https://optout.aboutads.info</a>.</li>
|
||||
</ul>
|
||||
<p><strong>Eingesetzte Dienste und Diensteanbieter:</strong></p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Google Tag Manager:</strong> Google Tag Manager ist eine Lösung, mit der wir sog. Website-Tags über eine Oberfläche verwalten und so andere Dienste in unser Onlineangebot einbinden können. Der Tag Manager selbst (welches die Tags implementiert) verarbeitet keine personenbezogenen Daten der Nutzer. Im Hinblick auf die Verarbeitung der personenbezogenen Daten der Nutzer wird auf die folgenden Angaben zu den Google-Diensten verwiesen. Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: <a href="https://marketingplatform.google.com" target="_blank" rel="noopener noreferrer">https://marketingplatform.google.com</a>; Datenschutzerklärung: <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">https://policies.google.com/privacy</a>.</li>
|
||||
<li><strong>Google Analytics:</strong> Onlinemarketing und Webanalyse; Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: <a href="https://marketingplatform.google.com/intl/de/about/analytics/" target="_blank" rel="noopener noreferrer">https://marketingplatform.google.com/intl/de/about/analytics/</a>; Datenschutzerklärung: <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">https://policies.google.com/privacy</a>; Widerspruchsmöglichkeit (Opt-Out): Opt-Out-Plugin: <a href="https://tools.google.com/dlpage/gaoptout?hl=de" target="_blank" rel="noopener noreferrer">https://tools.google.com/dlpage/gaoptout?hl=de</a>, Einstellungen für die Darstellung von Werbeeinblendungen: <a href="https://adssettings.google.com/authenticated" target="_blank" rel="noopener noreferrer">https://adssettings.google.com/authenticated</a>.</li>
|
||||
<li><strong>Google Ads und Konversionsmessung:</strong> Wir nutzen das Onlinemarketingverfahren “Google Ads”, um Anzeigen im Google-Werbe-Netzwerk zu platzieren (z.B., in Suchergebnissen, in Videos, auf Webseiten, etc.), damit sie Nutzern angezeigt werden, die ein mutmaßliches Interesse an den Anzeigen haben. Ferner messen wir die Konversion der Anzeigen. Wir erfahren jedoch nur die anonyme Gesamtanzahl der Nutzer, die auf unsere Anzeige geklickt haben und zu einer mit einem sog “Conversion-Tracking-Tag” versehenen Seite weitergeleitet wurden. Wir selbst erhalten jedoch keine Informationen, mit denen sich Nutzer identifizieren lassen. Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Ireland, parent company: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: <a href="https://marketingplatform.google.com" target="_blank" rel="noopener noreferrer">https://marketingplatform.google.com</a>; Datenschutzerklärung: <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">https://policies.google.com/privacy</a>.</li>
|
||||
</ul>
|
||||
<h2 id="m299">Bewertungsplattformen</h2>
|
||||
<p>Wir nehmen an Bewertungsverfahren teil, um unsere Leistungen zu evaluieren, zu optimieren und zu bewerben. Wenn Nutzer uns über die beteiligten Bewertungsplattformen oder -verfahren bewerten oder anderweitig Feedback geben, gelten zusätzlich die Allgemeinen Geschäfts- oder Nutzungsbedingungen und die Datenschutzhinweise der Anbieter. Im Regelfall setzt die Bewertung zudem eine Registrierung bei den jeweiligen Anbietern voraus.</p>
|
||||
<p>Um sicherzustellen, dass die bewertenden Personen tatsächlich unsere Leistungen in Anspruch genommen haben, übermitteln wir mit Einwilligung der Kunden die hierzu erforderlichen Daten im Hinblick auf den Kunden und die in Anspruch genommene Leistung an die jeweilige Bewertungsplattform (einschließlich Name, E-Mail-Adresse und Bestellnummer bzw. Artikelnummer). Diese Daten werden alleine zur Verifizierung der Authentizität des Nutzers verwendet.</p>
|
||||
<p><strong>Bewertungs-Widget</strong>: Wir binden in unser Onlineangebot sogenannte “Bewertungs-Widgets“ ein. Ein Widget ist ein in unser Onlineangebot eingebundenes Funktions- und Inhaltselement, das veränderliche Informationen anzeigt. Es kann z.B. in Form eines Siegels oder vergleichbaren Elements, zum Teil auch “Badge” genannt, dargestellt werden. Dabei wird der entsprechende Inhalt des Widgets zwar innerhalb unseres Onlineangebotes dargestellt, er wird aber in diesem Moment von den Servern des jeweiligen Widgets-Anbieters abgerufen. Nur so kann immer der aktuelle Inhalt gezeigt werden, vor allem die jeweils aktuelle Bewertung. Dafür muss eine Datenverbindung von der innerhalb unseres Onlineangebotes aufgerufenen Webseite zu dem Server des Widgets-Anbieters aufgebaut werden und der Widgets-Anbieter erhält gewisse technische Daten (Zugriffsdaten, inklusive IP-Adresse), die nötig sind, damit der Inhalt des Widgets an den Browser des Nutzers ausgeliefert werden kann.</p>
|
||||
<p>Des Weiteren erhält der Widgets-Anbieter Informationen darüber, dass Nutzer unser Onlineangebot besucht haben. Diese Informationen können in einem Cookie gespeichert und von dem Widgets-Anbieter verwendet werden, um zu erkennen, welche Onlineangebote, die am dem Bewertungsverfahren teilnehmen, von dem Nutzer besucht worden sind. Die Informationen können in einem Nutzerprofil gespeichert und für Werbe- oder Marktforschungszwecke verwendet werden.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Vertragsdaten (z.B. Vertragsgegenstand, Laufzeit, Kundenkategorie), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Kunden, Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Feedback (z.B. Sammeln von Feedback via Online-Formular), Reichweitenmessung (z.B. Zugriffsstatistiken, Erkennung wiederkehrender Besucher), Besuchsaktionsauswertung, Interessenbasiertes und verhaltensbezogenes Marketing, Profiling (Erstellen von Nutzerprofilen).</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<h2 id="m136">Präsenzen in sozialen Netzwerken (Social Media)</h2>
|
||||
<p>Wir unterhalten Onlinepräsenzen innerhalb sozialer Netzwerke und verarbeiten in diesem Rahmen Daten der Nutzer, um mit den dort aktiven Nutzern zu kommunizieren oder um Informationen über uns anzubieten.</p>
|
||||
<p>Wir weisen darauf hin, dass dabei Daten der Nutzer außerhalb des Raumes der Europäischen Union verarbeitet werden können. Hierdurch können sich für die Nutzer Risiken ergeben, weil so z.B. die Durchsetzung der Rechte der Nutzer erschwert werden könnte.</p>
|
||||
<p>Ferner werden die Daten der Nutzer innerhalb sozialer Netzwerke im Regelfall für Marktforschungs- und Werbezwecke verarbeitet. So können z.B. anhand des Nutzungsverhaltens und sich daraus ergebender Interessen der Nutzer Nutzungsprofile erstellt werden. Die Nutzungsprofile können wiederum verwendet werden, um z.B. Werbeanzeigen innerhalb und außerhalb der Netzwerke zu schalten, die mutmaßlich den Interessen der Nutzer entsprechen. Zu diesen Zwecken werden im Regelfall Cookies auf den Rechnern der Nutzer gespeichert, in denen das Nutzungsverhalten und die Interessen der Nutzer gespeichert werden. Ferner können in den Nutzungsprofilen auch Daten unabhängig der von den Nutzern verwendeten Geräte gespeichert werden (insbesondere, wenn die Nutzer Mitglieder der jeweiligen Plattformen sind und bei diesen eingeloggt sind).</p>
|
||||
<p>Für eine detaillierte Darstellung der jeweiligen Verarbeitungsformen und der Widerspruchsmöglichkeiten (Opt-Out) verweisen wir auf die Datenschutzerklärungen und Angaben der Betreiber der jeweiligen Netzwerke.</p>
|
||||
<p>Auch im Fall von Auskunftsanfragen und der Geltendmachung von Betroffenenrechten weisen wir darauf hin, dass diese am effektivsten bei den Anbietern geltend gemacht werden können. Nur die Anbieter haben jeweils Zugriff auf die Daten der Nutzer und können direkt entsprechende Maßnahmen ergreifen und Auskünfte geben. Sollten Sie dennoch Hilfe benötigen, dann können Sie sich an uns wenden.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern), Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Kontaktanfragen und Kommunikation, Tracking (z.B. interessens-/verhaltensbezogenes Profiling, Nutzung von Cookies), Remarketing, Reichweitenmessung (z.B. Zugriffsstatistiken, Erkennung wiederkehrender Besucher).</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
<p><strong>Eingesetzte Dienste und Diensteanbieter:</strong></p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Instagram :</strong> Soziales Netzwerk; Dienstanbieter: Instagram Inc., 1601 Willow Road, Menlo Park, CA, 94025, USA; Website: <a href="https://www.instagram.com" target="_blank" rel="noopener noreferrer">https://www.instagram.com</a>; Datenschutzerklärung: <a href="https://instagram.com/about/legal/privacy" target="_blank" rel="noopener noreferrer">https://instagram.com/about/legal/privacy</a>.</li>
|
||||
<li><strong>Facebook:</strong> Soziales Netzwerk; Dienstanbieter: Facebook Ireland Ltd., 4 Grand Canal Square, Grand Canal Harbour, Dublin 2, Irland, Mutterunternehmen: Facebook, 1 Hacker Way, Menlo Park, CA 94025, USA; Website: <a href="https://www.facebook.com" target="_blank" rel="noopener noreferrer">https://www.facebook.com</a>; Datenschutzerklärung: <a href="https://www.facebook.com/about/privacy" target="_blank" rel="noopener noreferrer">https://www.facebook.com/about/privacy</a>; Widerspruchsmöglichkeit (Opt-Out): Einstellungen für Werbeanzeigen: <a href="https://www.facebook.com/settings?tab=ads" target="_blank" rel="noopener noreferrer">https://www.facebook.com/settings?tab=ads</a>; Zusätzliche Hinweise zum Datenschutz: Vereinbarung über gemeinsame Verarbeitung personenbezogener Daten auf Facebook-Seiten: <a href="https://www.facebook.com/legal/terms/page_controller_addendum" target="_blank" rel="noopener noreferrer">https://www.facebook.com/legal/terms/page_controller_addendum</a>, Datenschutzhinweise für Facebook-Seiten: <a href="https://www.facebook.com/legal/terms/information_about_page_insights_data" target="_blank" rel="noopener noreferrer">https://www.facebook.com/legal/terms/information_about_page_insights_data</a>.</li>
|
||||
<li><strong>YouTube:</strong> Soziales Netzwerk; Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Datenschutzerklärung: <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">https://policies.google.com/privacy</a>; Widerspruchsmöglichkeit (Opt-Out): <a href="https://adssettings.google.com/authenticated" target="_blank" rel="noopener noreferrer">https://adssettings.google.com/authenticated</a>.</li>
|
||||
</ul>
|
||||
<h2 id="m328">Plugins und eingebettete Funktionen sowie Inhalte</h2>
|
||||
<p>Wir binden in unser Onlineangebot Funktions- und Inhaltselemente ein, die von den Servern ihrer jeweiligen Anbieter (nachfolgend bezeichnet als “Drittanbieter”) bezogen werden. Dabei kann es sich zum Beispiel um Grafiken, Videos oder Social-Media-Schaltflächen sowie Beiträge handeln (nachfolgend einheitlich bezeichnet als “Inhalte”).</p>
|
||||
<p>Die Einbindung setzt immer voraus, dass die Drittanbieter dieser Inhalte die IP-Adresse der Nutzer verarbeiten, da sie ohne die IP-Adresse die Inhalte nicht an deren Browser senden könnten. Die IP-Adresse ist damit für die Darstellung dieser Inhalte oder Funktionen erforderlich. Wir bemühen uns, nur solche Inhalte zu verwenden, deren jeweilige Anbieter die IP-Adresse lediglich zur Auslieferung der Inhalte verwenden. Drittanbieter können ferner sogenannte Pixel-Tags (unsichtbare Grafiken, auch als “Web Beacons” bezeichnet) für statistische oder Marketingzwecke verwenden. Durch die “Pixel-Tags” können Informationen, wie der Besucherverkehr auf den Seiten dieser Webseite, ausgewertet werden. Die pseudonymen Informationen können ferner in Cookies auf dem Gerät der Nutzer gespeichert werden und unter anderem technische Informationen zum Browser und zum Betriebssystem, zu verweisenden Webseiten, zur Besuchszeit sowie weitere Angaben zur Nutzung unseres Onlineangebotes enthalten als auch mit solchen Informationen aus anderen Quellen verbunden werden.</p>
|
||||
<p><strong>Hinweise zu Rechtsgrundlagen:</strong> Sofern wir die Nutzer um deren Einwilligung in den Einsatz der Drittanbieter bitten, ist die Rechtsgrundlage der Verarbeitung von Daten die Einwilligung. Ansonsten werden die Daten der Nutzer auf Grundlage unserer berechtigten Interessen (d.h. Interesse an effizienten, wirtschaftlichen und empfängerfreundlichen Leistungen) verarbeitet. In diesem Zusammenhang möchten wir Sie auch auf die Informationen zur Verwendung von Cookies in dieser Datenschutzerklärung hinweisen.</p>
|
||||
<p><strong>Einbindung von Drittsoftware, Skripten oder Frameworks (z. B. jQuery)</strong>: Wir binden in unser Onlineangebot Software ein, die wir von Servern anderer Anbieter abrufen (z.B. Funktions-Bibliotheken, die wir zwecks Darstellung oder Nutzerfreundlichkeit unseres Onlineangebotes verwenden). Hierbei erheben die jeweiligen Anbieter die IP-Adresse der Nutzer und können diese zu Zwecken der Übermittlung der Software an den Browser der Nutzer sowie zu Zwecken der Sicherheit, als auch zur Auswertung und Optimierung ihres Angebotes verarbeiten.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen), Standortdaten (Daten, die den Standort des Endgeräts eines Endnutzers angeben), Kontaktdaten (z.B. E-Mail, Telefonnummern), Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos), Bestandsdaten (z.B. Namen, Adressen).</li>
|
||||
<li><strong>Betroffene Personen:</strong> Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten), Kommunikationspartner.</li>
|
||||
<li><strong>Zwecke der Verarbeitung:</strong> Bereitstellung unseres Onlineangebotes und Nutzerfreundlichkeit, Vertragliche Leistungen und Service, Kontaktanfragen und Kommunikation, Direktmarketing (z.B. per E-Mail oder postalisch), Tracking (z.B. interessens-/verhaltensbezogenes Profiling, Nutzung von Cookies), Interessenbasiertes und verhaltensbezogenes Marketing, Profiling (Erstellen von Nutzerprofilen), Sicherheitsmaßnahmen, Verwaltung und Beantwortung von Anfragen.</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO), Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO).</li>
|
||||
</ul>
|
||||
<p><strong>Eingesetzte Dienste und Diensteanbieter:</strong></p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Google Fonts:</strong> Wir binden die Schriftarten (“Google Fonts”) des Anbieters Google ein, wobei die Daten der Nutzer allein zu Zwecken der Darstellung der Schriftarten im Browser der Nutzer verwendet werden. Die Einbindung erfolgt auf Grundlage unserer berechtigten Interessen an einer technisch sicheren, wartungsfreien und effizienten Nutzung von Schriftarten, deren einheitlicher Darstellung sowie unter Berücksichtigung möglicher lizenzrechtlicher Restriktionen für deren Einbindung. Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: <a href="https://fonts.google.com/" target="_blank" rel="noopener noreferrer">https://fonts.google.com/</a>; Datenschutzerklärung: <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">https://policies.google.com/privacy</a>.</li>
|
||||
<li><strong>Google Maps:</strong> Wir binden die Landkarten des Dienstes “Google Maps” des Anbieters Google ein. Zu den verarbeiteten Daten können insbesondere IP-Adressen und Standortdaten der Nutzer gehören, die jedoch nicht ohne deren Einwilligung (im Regelfall im Rahmen der Einstellungen ihrer Mobilgeräte vollzogen), erhoben werden; Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: <a href="https://cloud.google.com/maps-platform" target="_blank" rel="noopener noreferrer">https://cloud.google.com/maps-platform</a>; Datenschutzerklärung: <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">https://policies.google.com/privacy</a>; Widerspruchsmöglichkeit (Opt-Out): Opt-Out-Plugin: <a href="https://tools.google.com/dlpage/gaoptout?hl=de" target="_blank" rel="noopener noreferrer">https://tools.google.com/dlpage/gaoptout?hl=de</a>, Einstellungen für die Darstellung von Werbeeinblendungen: <a href="https://adssettings.google.com/authenticated" target="_blank" rel="noopener noreferrer">https://adssettings.google.com/authenticated</a>.</li>
|
||||
<li><strong>Instagram-Plugins und -Inhalte:</strong> Instagram Plugins und -Inhalte – Hierzu können z.B. Inhalte wie Bilder, Videos oder Texte und Schaltflächen gehören, mit denen Nutzer Inhalte dieses Onlineangebotes innerhalb von Instagram teilen können. Dienstanbieter: <a href="https://www.instagram.com" target="_blank" rel="noopener noreferrer">https://www.instagram.com</a>, Instagram Inc., 1601 Willow Road, Menlo Park, CA, 94025, USA; Website: <a href="https://www.instagram.com" target="_blank" rel="noopener noreferrer">https://www.instagram.com</a>; Datenschutzerklärung: <a href="https://instagram.com/about/legal/privacy" target="_blank" rel="noopener noreferrer">https://instagram.com/about/legal/privacy</a>.</li>
|
||||
<li><strong>ReCaptcha:</strong> Wir binden die Funktion “ReCaptcha” zur Erkennung von Bots, z.B. bei Eingaben in Onlineformularen, ein. Die Verhaltensangaben der Nutzer (z.B. Mausbewegungen oder Abfragen) werden ausgewertet, um Menschen von Bots unterscheiden zu können. Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: <a href="https://www.google.com/recaptcha/" target="_blank" rel="noopener noreferrer">https://www.google.com/recaptcha/</a>; Datenschutzerklärung: <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">https://policies.google.com/privacy</a>; Widerspruchsmöglichkeit (Opt-Out): Opt-Out-Plugin: <a href="https://tools.google.com/dlpage/gaoptout?hl=de" target="_blank" rel="noopener noreferrer">https://tools.google.com/dlpage/gaoptout?hl=de</a>, Einstellungen für die Darstellung von Werbeeinblendungen: <a href="https://adssettings.google.com/authenticated" target="_blank" rel="noopener noreferrer">https://adssettings.google.com/authenticated</a>.</li>
|
||||
<li><strong>YouTube-Videos:</strong> Videoinhalte; Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: <a href="https://www.youtube.com" target="_blank" rel="noopener noreferrer">https://www.youtube.com</a>; Datenschutzerklärung: <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">https://policies.google.com/privacy</a>; Widerspruchsmöglichkeit (Opt-Out): Opt-Out-Plugin: <a href="https://tools.google.com/dlpage/gaoptout?hl=de" target="_blank" rel="noopener noreferrer">https://tools.google.com/dlpage/gaoptout?hl=de</a>, Einstellungen für die Darstellung von Werbeeinblendungen: <a href="https://adssettings.google.com/authenticated" target="_blank" rel="noopener noreferrer">https://adssettings.google.com/authenticated</a>.</li>
|
||||
</ul>
|
||||
<h2 id="m12">Analyse-Tools und Werbung - Facebook Pixel</h2>
|
||||
<p>Diese Website nutzt zur Konversionsmessung der Besucheraktions-Pixel von Facebook. Anbieter diesesDienstes ist die Facebook Ireland Limited, 4 Grand Canal Square, Dublin 2, Irland. Die erfassten Datenwerden nach Aussage von Facebook jedoch auch in die USA und in andere Drittländer übertragen.So kann das Verhalten der Seitenbesucher nachverfolgt werden, nachdem diese durch Klick auf eineFacebook-Werbeanzeige auf die Website des Anbieters weitergeleitet wurden. Dadurch können dieWirksamkeit der Facebook-Werbeanzeigen für statistische und Marktforschungszwecke ausgewertetwerden und zukünftige Werbemaßnahmen optimiert werden.Die erhobenen Daten sind für uns als Betreiber dieser Website anonym, wir können keine Rückschlüsse aufdie Identität der Nutzer ziehen. Die Daten werden aber von Facebook gespeichert und verarbeitet, sodasseine Verbindung zum jeweiligen Nutzerprofil möglich ist und Facebook die Daten für eigene Werbezwecke,entsprechend derFacebook-Datenverwendungsrichtlinie verwenden kann. Dadurch kann Facebook das Schalten vonWerbeanzeigen auf Seiten von Facebook sowie außerhalb von Facebook ermöglichen. Diese Verwendungder Daten kann von uns als Seitenbetreiber nicht beeinflusst werden.Die Nutzung von Facebook-Pixel erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Der Websitebetreiberhat ein berechtigtes Interesse an effektiven Werbemaßnahmen unter Einschluss der sozialen Medien.Sofern eine entsprechende Einwilligung abgefragt wurde (z. B. eine Einwilligung zur Speicherung vonCookies), erfolgt die Verarbeitung ausschließlich auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO; dieEinwilligung ist jederzeit widerrufbar.Die Datenübertragung in die USA wird auf die Standardvertragsklauseln der EU-Kommission gestützt.Details finden Sie hier:https://www.facebook.com/legal/EU_data_transfer_addendum undhttps://de-de.facebook.com/help/566994660333381 </p>
|
||||
<p>Soweit mit Hilfe des hier beschriebenen Tools personenbezogene Daten auf unserer Website erfasst und anFacebook weitergeleitet werden, sind wir und die Facebook Ireland Limited, 4 Grand Canal Square, GrandCanal Harbour, Dublin 2, Irland gemeinsam für diese Datenverarbeitung verantwortlich (Art. 26 DSGVO).Die gemeinsame Verantwortlichkeit beschränkt sich dabei ausschließlich auf die Erfassung der Daten undderen Weitergabe an Facebook. Die nach der Weiterleitung erfolgende Verarbeitung durch Facebook istnicht Teil der gemeinsamen Verantwortung. Die uns gemeinsam obliegenden Verpflichtungen wurden ineiner Vereinbarung über gemeinsame Verarbeitung festgehalten. Den Wortlaut der Vereinbarung finden Sieunter:https://www.facebook.com/legal/controller_addendum. Laut dieser Vereinbarung sind wir für die Erteilungder Datenschutzinformationen beim Einsatz des Facebook-Tools und für die datenschutzrechtlich sichereImplementierung des Tools auf unserer Website verantwortlich. Für die Datensicherheit der Facebook-Produkte ist Facebook verantwortlich. Betroffenenrechte (z.B. Auskunftsersuchen) hinsichtlich der beiFacebook verarbeiteten Daten können Sie direkt bei Facebook geltend machen. Wenn Sie dieBetroffenenrechte bei uns geltend machen, sind wir verpflichtet, diese an Facebook weiterzuleiten.In den Datenschutzhinweisen von Facebook finden Sie weitere Hinweise zum Schutz Ihrer Privatsphäre:https://de-de.facebook.com/about/privacy/.Sie können außerdem die Remarketing-Funktion „Custom Audiences“ im Bereich Einstellungen fürWerbeanzeigen unterhttps://www.facebook.com/ads/preferences/?entry_product=ad_settings_screen deaktivieren. Dazumüssen Sie bei Facebook angemeldet sein.Wenn Sie kein Facebook Konto besitzen, können Sie nutzungsbasierte Werbung von Facebook auf derWebsite der European Interactive Digital Advertising Alliance deaktivieren:http://www.youronlinechoices.com/de/praferenzmanagement/. </p>
|
||||
<h2 id="m12">Löschung von Daten</h2>
|
||||
<p>Die von uns verarbeiteten Daten werden nach Maßgabe der gesetzlichen Vorgaben gelöscht, sobald deren zur Verarbeitung erlaubten Einwilligungen widerrufen werden oder sonstige Erlaubnisse entfallen (z.B., wenn der Zweck der Verarbeitung dieser Daten entfallen ist oder sie für den Zweck nicht erforderlich sind).</p>
|
||||
<p>Sofern die Daten nicht gelöscht werden, weil sie für andere und gesetzlich zulässige Zwecke erforderlich sind, wird deren Verarbeitung auf diese Zwecke beschränkt. D.h., die Daten werden gesperrt und nicht für andere Zwecke verarbeitet. Das gilt z.B. für Daten, die aus handels- oder steuerrechtlichen Gründen aufbewahrt werden müssen oder deren Speicherung zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen oder zum Schutz der Rechte einer anderen natürlichen oder juristischen Person erforderlich ist.</p>
|
||||
<p>Weitere Hinweise zu der Löschung von personenbezogenen Daten können ferner im Rahmen der einzelnen Datenschutzhinweise dieser Datenschutzerklärung erfolgen.</p>
|
||||
<h2 id="m15">Änderung und Aktualisierung der Datenschutzerklärung</h2>
|
||||
<p>Wir bitten Sie, sich regelmäßig über den Inhalt unserer Datenschutzerklärung zu informieren. Wir passen die Datenschutzerklärung an, sobald die Änderungen der von uns durchgeführten Datenverarbeitungen dies erforderlich machen. Wir informieren Sie, sobald durch die Änderungen eine Mitwirkungshandlung Ihrerseits (z.B. Einwilligung) oder eine sonstige individuelle Benachrichtigung erforderlich wird.</p>
|
||||
<p>Sofern wir in dieser Datenschutzerklärung Adressen und Kontaktinformationen von Unternehmen und Organisationen angeben, bitten wir zu beachten, dass die Adressen sich über die Zeit ändern können und bitten die Angaben vor Kontaktaufnahme zu prüfen.</p>
|
||||
<h2 id="m10">Rechte der betroffenen Personen</h2>
|
||||
<p>Ihnen stehen als Betroffene nach der DSGVO verschiedene Rechte zu, die sich insbesondere aus Art. 15 bis 21 DSGVO ergeben:</p>
|
||||
<ul>
|
||||
<li><strong>Widerspruchsrecht: Sie haben das Recht, aus Gründen, die sich aus Ihrer besonderen Situation ergeben, jederzeit gegen die Verarbeitung der Sie betreffenden personenbezogenen Daten, die aufgrund von Art. 6 Abs. 1 lit. e oder f DSGVO erfolgt, Widerspruch einzulegen; dies gilt auch für ein auf diese Bestimmungen gestütztes Profiling. Werden die Sie betreffenden personenbezogenen Daten verarbeitet, um Direktwerbung zu betreiben, haben Sie das Recht, jederzeit Widerspruch gegen die Verarbeitung der Sie betreffenden personenbezogenen Daten zum Zwecke derartiger Werbung einzulegen; dies gilt auch für das Profiling, soweit es mit solcher Direktwerbung in Verbindung steht.</strong></li>
|
||||
<li><strong>Widerrufsrecht bei Einwilligungen:</strong> Sie haben das Recht, erteilte Einwilligungen jederzeit zu widerrufen.</li>
|
||||
<li><strong>Auskunftsrecht:</strong> Sie haben das Recht, eine Bestätigung darüber zu verlangen, ob betreffende Daten verarbeitet werden und auf Auskunft über diese Daten sowie auf weitere Informationen und Kopie der Daten entsprechend den gesetzlichen Vorgaben.</li>
|
||||
<li><strong>Recht auf Berichtigung:</strong> Sie haben entsprechend den gesetzlichen Vorgaben das Recht, die Vervollständigung der Sie betreffenden Daten oder die Berichtigung der Sie betreffenden unrichtigen Daten zu verlangen.</li>
|
||||
<li><strong>Recht auf Löschung und Einschränkung der Verarbeitung:</strong> Sie haben nach Maßgabe der gesetzlichen Vorgaben das Recht, zu verlangen, dass Sie betreffende Daten unverzüglich gelöscht werden, bzw. alternativ nach Maßgabe der gesetzlichen Vorgaben eine Einschränkung der Verarbeitung der Daten zu verlangen.</li>
|
||||
<li><strong>Recht auf Datenübertragbarkeit:</strong> Sie haben das Recht, Sie betreffende Daten, die Sie uns bereitgestellt haben, nach Maßgabe der gesetzlichen Vorgaben in einem strukturierten, gängigen und maschinenlesbaren Format zu erhalten oder deren Übermittlung an einen anderen Verantwortlichen zu fordern.</li>
|
||||
<li><strong>Beschwerde bei Aufsichtsbehörde:</strong> Sie haben ferner nach Maßgabe der gesetzlichen Vorgaben das Recht, bei einer Aufsichtsbehörde, insbesondere in dem Mitgliedstaat Ihres gewöhnlichen Aufenthaltsorts, Ihres Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes Beschwerde einzulegen, wenn Sie der Ansicht sind, dass die Verarbeitung der Sie betreffenden personenbezogenen Daten gegen die DSGVO verstößt.</li>
|
||||
</ul>
|
||||
<h2 id="m42">Begriffsdefinitionen</h2>
|
||||
<p>In diesem Abschnitt erhalten Sie eine Übersicht über die in dieser Datenschutzerklärung verwendeten Begrifflichkeiten. Viele der Begriffe sind dem Gesetz entnommen und vor allem im Art. 4 DSGVO definiert. Die gesetzlichen Definitionen sind verbindlich. Die nachfolgenden Erläuterungen sollen dagegen vor allem dem Verständnis dienen. Die Begriffe sind alphabetisch sortiert.</p>
|
||||
<ul class="glossary">
|
||||
<li><strong>Affiliate-Nachverfolgung:</strong> Im Rahmen der Affiliate-Nachverfolgung werden Links, mit deren Hilfe die verlinkenden Webseiten Nutzer zu Webseiten mit Produkt- oder sonstigen Angeboten verweisen, protokolliert. Die Betreiber der jeweils verlinkenden Webseiten können eine Provision erhalten, wenn Nutzer diesen sogenannten Affiliate-Links folgen und anschließend die Angebote wahrnehmen (z.B. Waren kaufen oder Dienstleistungen in Anspruch nehmen). Hierzu ist es erforderlich, dass die Anbieter nachverfolgen können, ob Nutzer, die sich für bestimmte Angebote interessieren, diese anschließend auf die Veranlassung der Affiliate-Links wahrnehmen. Daher ist es für die Funktionsfähigkeit von Affiliate-Links erforderlich, dass sie um bestimmte Werte ergänzt werden, die ein Bestandteil des Links werden oder anderweitig, z.B. in einem Cookie, gespeichert werden. Zu den Werten gehören insbesondere die Ausgangswebseite (Referrer), der Zeitpunkt, eine Online-Kennung der Betreiber der Webseite, auf der sich der Affiliate-Link befand, eine Online-Kennung des jeweiligen Angebotes, eine Online-Kennung des Nutzers als auch nachverfolgungsspezifische Werte, wie, z.B. Werbemittel-ID, Partner-ID und Kategorisierungen.</li>
|
||||
<li><strong>Besuchsaktionsauswertung:</strong> “Besuchsaktionsauswertung” (englisch “Conversion Tracking”) bezeichnet ein Verfahren, mit dem die Wirksamkeit von Marketingmaßnahmen festgestellt werden kann. Dazu wird im Regelfall ein Cookie auf den Geräten der Nutzer innerhalb der Webseiten, auf denen die Marketingmaßnahmen erfolgen, gespeichert und dann erneut auf der Zielwebseite abgerufen. Beispielsweise können wir so nachvollziehen, ob die von uns auf anderen Webseiten geschalteten Anzeigen erfolgreich waren).</li>
|
||||
<li><strong>IP-Masking:</strong> Als “IP-Masking” wird eine Methode bezeichnet, bei der das letzte Oktett, d.h., die letzten beiden Zahlen einer IP-Adresse, gelöscht wird, damit die IP-Adresse nicht mehr der eindeutigen Identifizierung einer Person dienen kann. Daher ist das IP-Masking ein Mittel zur Pseudonymisierung von Verarbeitungsverfahren, insbesondere im Onlinemarketing</li>
|
||||
<li><strong>Interessenbasiertes und verhaltensbezogenes Marketing:</strong> Von interessens- und/oder verhaltensbezogenem Marketing spricht man, wenn potentielle Interessen von Nutzern an Anzeigen und sonstigen Inhalten möglichst genau vorbestimmt werden. Dies geschieht anhand von Angaben zu deren Vorverhalten (z.B. Aufsuchen von bestimmten Webseiten und Verweilen auf diesen, Kaufverhaltens oder Interaktion mit anderen Nutzern), die in einem sogenannten Profil gespeichert werden. Zu diesen Zwecken werden im Regelfall Cookies eingesetzt.</li>
|
||||
<li><strong>Konversionsmessung:</strong> Die Konversionsmessung ist ein Verfahren, mit dem die Wirksamkeit von Marketingmaßnahmen festgestellt werden kann. Dazu wird im Regelfall ein Cookie auf den Geräten der Nutzer innerhalb der Webseiten, auf denen die Marketingmaßnahmen erfolgen, gespeichert und dann erneut auf der Zielwebseite abgerufen. Beispielsweise können wir so nachvollziehen, ob die von uns auf anderen Webseiten geschalteten Anzeigen erfolgreich waren.</li>
|
||||
<li><strong>Personenbezogene Daten:</strong> “Personenbezogene Daten“ sind alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person (im Folgenden “betroffene Person“) beziehen; als identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung (z.B. Cookie) oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen oder sozialen Identität dieser natürlichen Person sind.</li>
|
||||
<li><strong>Profiling:</strong> Als “Profiling“ wird jede Art der automatisierten Verarbeitung personenbezogener Daten bezeichnet, die darin besteht, dass diese personenbezogenen Daten verwendet werden, um bestimmte persönliche Aspekte, die sich auf eine natürliche Person beziehen (je nach Art des Profilings gehören dazu Informationen betreffend das Alter, das Geschlecht, Standortdaten und Bewegungsdaten, Interaktion mit Webseiten und deren Inhalten, Einkaufsverhalten, soziale Interaktionen mit anderen Menschen) zu analysieren, zu bewerten oder, um sie vorherzusagen (z.B. die Interessen an bestimmten Inhalten oder Produkten, das Klickverhalten auf einer Webseite oder den Aufenthaltsort). Zu Zwecken des Profilings werden häufig Cookies und Web-Beacons eingesetzt.</li>
|
||||
<li><strong>Reichweitenmessung:</strong> Die Reichweitenmessung (auch als Web Analytics bezeichnet) dient der Auswertung der Besucherströme eines Onlineangebotes und kann das Verhalten oder Interessen der Besucher an bestimmten Informationen, wie z.B. Inhalten von Webseiten, umfassen. Mit Hilfe der Reichweitenanalyse können Webseiteninhaber z.B. erkennen, zu welcher Zeit Besucher ihre Webseite besuchen und für welche Inhalte sie sich interessieren. Dadurch können sie z.B. die Inhalte der Webseite besser an die Bedürfnisse ihrer Besucher anpassen. Zu Zwecken der Reichweitenanalyse werden häufig pseudonyme Cookies und Web-Beacons eingesetzt, um wiederkehrende Besucher zu erkennen und so genauere Analysen zur Nutzung eines Onlineangebotes zu erhalten.</li>
|
||||
<li><strong>Remarketing:</strong> Vom “Remarketing“ bzw. “Retargeting“ spricht man, wenn z.B. zu Werbezwecken vermerkt wird, für welche Produkte sich ein Nutzer auf einer Webseite interessiert hat, um den Nutzer auf anderen Webseiten an diese Produkte, z.B. in Werbeanzeigen, zu erinnern.</li>
|
||||
<li><strong>Tracking:</strong> Vom “Tracking“ spricht man, wenn das Verhalten von Nutzern über mehrere Onlineangebote hinweg nachvollzogen werden kann. Im Regelfall werden im Hinblick auf die genutzten Onlineangebote Verhaltens- und Interessensinformationen in Cookies oder auf Servern der Anbieter der Trackingtechnologien gespeichert (sogenanntes Profiling). Diese Informationen können anschließend z.B. eingesetzt werden, um den Nutzern Werbeanzeigen anzuzeigen, die voraussichtlich deren Interessen entsprechen.</li>
|
||||
<li><strong>Verantwortlicher:</strong> Als “Verantwortlicher“ wird die natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten entscheidet, bezeichnet.</li>
|
||||
<li><strong>Verarbeitung:</strong> “Verarbeitung” ist jeder mit oder ohne Hilfe automatisierter Verfahren ausgeführte Vorgang oder jede solche Vorgangsreihe im Zusammenhang mit personenbezogenen Daten. Der Begriff reicht weit und umfasst praktisch jeden Umgang mit Daten, sei es das Erheben, das Auswerten, das Speichern, das Übermitteln oder das Löschen.</li>
|
||||
</ul>
|
||||
<p class="seal"><a title="Rechtstext von Dr. Schwenke - für weitere Informationen bitte anklicken." href="https://datenschutz-generator.de/?l=de" target="_blank" rel="noopener noreferrer nofollow"><img src="https://datenschutz-generator.de/wp-content/plugins/ts-dsg/images/dsg-seal/dsg-seal-pp-de.png" alt="Rechtstext von Dr. Schwenke - für weitere Informationen bitte anklicken." width="250" height="250"></a></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
|
||||
@endsection
|
||||
50
resources/views/web/legal/impressum.blade.php
Normal file
50
resources/views/web/legal/impressum.blade.php
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
@extends('web.layouts.layout')
|
||||
|
||||
@section('content')
|
||||
<div class="layout-content">
|
||||
|
||||
<div class="container px-3">
|
||||
|
||||
|
||||
<section>
|
||||
<h1 class="mt-4 mb-4 text-center">Impressum</h1>
|
||||
<hr>
|
||||
<div class="entry-content">
|
||||
<p><strong>GRÜNE SEELE Naturkosmetik</strong><br>
|
||||
Hauptstrasse 174<br>
|
||||
51143 Köln<br>
|
||||
Nordrhein-Westfalen<br>
|
||||
Deutschland</p>
|
||||
<p><strong>Betreiber:</strong><br>
|
||||
GRÜNE SEELE GmbH</p>
|
||||
<p><strong>Geschäftsführung:<br>
|
||||
</strong>Ruth Krummel</p>
|
||||
<p><strong>Registereintrag</strong><br>
|
||||
Eintragung im Handelsregister<br>
|
||||
Registergericht: Amtsgericht Köln<br>
|
||||
Registernummer: HRB87173</p>
|
||||
<p><strong>UST-ID:</strong><br>
|
||||
DE296797691</p>
|
||||
<p>Tel.: (+49) 2203 183 86 14<br>
|
||||
Mail: service@gruene-seele.bio</p>
|
||||
<p>Haftungsausschluss & Datenschutzbestimmungen</p>
|
||||
<p><strong>1. Inhalt des Onlineangebotes</strong><br>
|
||||
Der Autor übernimmt keinerlei Gewähr für die Aktualität, Korrektheit, Vollständigkeit oder Qualität der bereitgestellten Informationen. Haftungsansprüche gegen den Autor, welche sich auf Schäden materieller oder ideeller Art beziehen, die durch die Nutzung oder Nichtnutzung der dargebotenen Informationen bzw. durch die Nutzung fehlerhafter und unvollständiger Informationen verursacht wurden, sind grundsätzlich ausgeschlossen, sofern seitens des Autors kein nachweislich vorsätzliches oder grob fahrlässiges Verschulden vorliegt. Alle Angebote sind freibleibend und unverbindlich. Der Autor behält es sich ausdrücklich vor, Teile der Seiten oder das gesamte Angebot ohne gesonderte Ankündigung zu verändern, zu ergänzen, zu löschen oder die Veröffentlichung zeitweise oder endgültig einzustellen.</p>
|
||||
<p><strong>2. Verweise und Links</strong><br>
|
||||
Bei direkten oder indirekten Verweisen auf fremde Internetseiten (“Links”), die außerhalb des Verantwortungsbereiches des Autors liegen, würde eine Haftungsverpflichtung ausschließlich in dem Fall in Kraft treten, in dem der Autor von den Inhalten Kenntnis hat und es ihm technisch möglich und zumutbar wäre, die Nutzung im Falle rechtswidriger Inhalte zu verhindern. Der Autor erklärt hiermit ausdrücklich, dass zum Zeitpunkt der Linksetzung keine illegalen Inhalte auf den zu verlinkenden Seiten erkennbar waren. Auf die aktuelle und zukünftige Gestaltung, die Inhalte oder die Urheberschaft der gelinkten/verknüpften Seiten hat der Autor keinerlei Einfluss. Deshalb distanziert er sich hiermit ausdrücklich von allen Inhalten aller gelinkten /verknüpften Seiten, die nach der Linksetzung verändert wurden. Diese Feststellung gilt für alle innerhalb des eigenen Internetangebotes gesetzten Links und Verweise sowie für Fremdeinträge in vom Autor eingerichteten Gästebüchern, Diskussionsforen und Mailinglisten. Für illegale, fehlerhafte oder unvollständige Inhalte und insbesondere für Schäden, die aus der Nutzung oder Nichtnutzung solcherart dargebotener Informationen entstehen, haftet allein der Anbieter der Seite, auf welche verwiesen wurde, nicht derjenige, der über Links auf die jeweilige Veröffentlichung lediglich verweist.</p>
|
||||
<p><strong>3. Urheber- und Kennzeichenrecht</strong><br>
|
||||
Der Autor ist bestrebt, in allen Publikationen die Urheberrechte der verwendeten Grafiken, Tondokumente, Videosequenzen und Texte zu beachten, von ihm selbst erstellte Grafiken, Tondokumente, Videosequenzen und Texte zu nutzen oder auf lizenzfreie Grafiken, Tondokumente, Videosequenzen und Texte zurückzugreifen. Alle innerhalb des Internetangebotes genannten und ggf. durch Dritte geschützten Marken- und Warenzeichen unterliegen uneingeschränkt den Bestimmungen des jeweils gültigen Kennzeichenrechts und den Besitzrechten der jeweiligen eingetragenen Eigentümer. Allein aufgrund der bloßen Nennung ist nicht der Schluß zu ziehen, dass Markenzeichen nicht durch Rechte Dritter geschützt sind! Das Copyright für veröffentlichte, vom Autor selbst erstellte Objekte bleibt allein beim Autor der Seiten. Eine Vervielfältigung oder Verwendung solcher Grafiken, Tondokumente, Videosequenzen und Texte in anderen elektronischen oder gedruckten Publikationen ist ohne ausdrückliche Zustimmung des Autors nicht gestattet.</p>
|
||||
<p><strong>4. Rechtswirksamkeit dieses Haftungsausschlusses</strong><br>
|
||||
Dieser Haftungsausschluss ist als Teil des Internetangebotes zu betrachten, von dem aus auf diese Seite verwiesen wurde. Sofern Teile oder einzelne Formulierungen dieses Textes der geltenden Rechtslage nicht, nicht mehr oder nicht vollständig entsprechen sollten, bleiben die übrigen Teile des Dokumentes in ihrem Inhalt und ihrer Gültigkeit davon unberührt.</p>
|
||||
<div class="woocommerce woocommerce-gzd woocommerce-gzd-complaints-shortcode">
|
||||
<h3>Alternative Streitbeilegung gemäß Art. 14 Abs. 1 ODR-VO und § 36 VSBG:</h3>
|
||||
|
||||
<p>Die Europäische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit, die du unter <a href="https://ec.europa.eu/consumers/odr" target="_blank">https://ec.europa.eu/consumers/odr</a> findest. Wir sind bereit, an einem außergerichtlichen Schlichtungsverfahren teilzunehmen.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
104
resources/views/web/legal/versandarten.blade.php
Normal file
104
resources/views/web/legal/versandarten.blade.php
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
@extends('web.layouts.layout')
|
||||
|
||||
@section('content')
|
||||
<div class="layout-content">
|
||||
|
||||
<div class="container px-3">
|
||||
|
||||
|
||||
<section>
|
||||
<h1 class="mt-4 mb-4 text-center">Versandkosten & Versandkosten -
|
||||
innerhalb Deutschlands, der EU und Drittländer</h1>
|
||||
<hr>
|
||||
<div class="entry-content">
|
||||
|
||||
|
||||
<h3>Wir berechnen eine Versandkostenpauschale, die alle Kosten für den Versand Deiner Ware beinhalten:</h3>
|
||||
|
||||
<ul>
|
||||
<li>Gebühren des Versanddienstleisters (DHL, DPD, Deutsche Post)</li>
|
||||
<li>Verpackungsmaterial (Kartonagen, Label, Füllmaterial etc.)</li>
|
||||
<li>Fullfillment (externe Verpackungsdienstleister)</li>
|
||||
</ul>
|
||||
<p>
|
||||
<em>
|
||||
Wir bitten um Verständnis, dass wir als Vermittler der Produkte keine versandkostenfreien Mindestumsätze anbieten können. Material und Abwicklung des Versands kosten gutes Geld, vor allem seit den erhöhten Gebühren von DHL & Co. sowie den deutlich teureren Kartonagen durch die Rohstoffknappheit am Weltmarkt.
|
||||
</em>
|
||||
</p>
|
||||
<p><br></p>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<img class=" img-fluid" src="https://www.aloe-vera.bio/content/uploads/2021/10/dhl-go-green-logo.jpg" alt="" width="500" height="500">
|
||||
|
||||
<img class=" img-fluid" src="https://www.aloe-vera.bio/content/uploads/2019/10/deutsche-post-logo.gif" alt="" width="500" height="500">
|
||||
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
|
||||
<h3>Dienstleister und Dauer des Versands</h3>
|
||||
<p>Deine Produkte werden wahlweise mit den Paketdienstleistern DHL als Paket oder mit der Deutschen Post als Bücher- und Warensendung versandt. Je nach Umfang der Bestellung (Gewicht und Maße) bieten wir Dir im Warenkorb diese beiden Optionen zur Auswahl an. Solltest Du die Option „Bücher- und Warensendung“ im Warenkorb nicht auswählen können, dann nur, weil die Maße oder das Gewicht hierfür überschritten wurden.</p>
|
||||
|
||||
<p>Nach Eingang der Bestellung wird diese innerhalb eines Werktages bearbeitet und versendet.</p>
|
||||
|
||||
<p>Besonderheiten bei den Versandoptionen:</p>
|
||||
<p><strong>OPTION 1:</strong><br>
|
||||
Als Bücher- und Warensendung mit der Deutschen Post<br>
|
||||
Lieferzeit von 5–7 Werktagen<br>
|
||||
Verschlossener Versand</p>
|
||||
|
||||
<p><strong>OPTION 2:</strong><br>
|
||||
Als Paket bzw. Warenpost mit DHL<br>
|
||||
Standardversand<br>
|
||||
Lieferzeit von 2-4 Werktagen<br>
|
||||
Verschlossener Versand</p>
|
||||
</div>
|
||||
</div>
|
||||
<p><br></p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<img class=" img-fluid" src="https://www.aloe-vera.bio/content/uploads/2018/01/briefmarke.jpg" alt="" width="500" height="500">
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
|
||||
<h3>Welche Kosten entstehen beim Versand?</h3>
|
||||
<p>Wir versenden innerhalb von Deutschland, EU-weit und weltweit. Folgende Versandkosten werden erhoben:</p>
|
||||
<p>Bücher- und Warensendung Deutschland mit Deutsche Post<br>
|
||||
bis 1 kg und Sendung bis 5 cm Dicke – Versandkostenpauschale 4,50 €</p>
|
||||
<p>Bei kleineren Tuben nicht dicker als 4 cm (zzgl. Verpackung etc.) können wir mit „Bücher- und Warensendung” versenden. Wir können so also z. B. bis zu 4 Gel 99% mit einer Versandpauschale von 4,50 EUR versenden. Bei „dickeren“ Produkten, also über 4 cm Dicke (zzgl. Verpackung dann bei über 5 cm) nimmt die Deutsche Post das nicht mehr als „Bücher- und Warensendung“ an. Dann versenden wir als Paket für 5,90 EUR Versandkostenpauschale mit DHL.</p>
|
||||
<p>Wie oben erwähnt, hast Du bei entsprechenden Konstellationen die Auswahl im Warenkorb.</p>
|
||||
<p><strong>DHL Deutschland</strong></p>
|
||||
<p>1. Paket bis 2 kg – Versandkostenpauschale 5,90 €<br>
|
||||
2. Paket 3,01 bis 5 kg – Versandkostenpauschale 7,50 €<br>
|
||||
3. Paket 5,01 bis 10 kg – Versandkostenpauschale 10,50 €</p>
|
||||
<p><strong>Österreich und Niederlande:</strong><br>
|
||||
1. Paket bis 5 kg – Versandkostenpauschale 11,90 €<br>
|
||||
2. Paket 5,01 bis 10 kg – Versandkostenpauschale 14,90 €<br>
|
||||
3. Paket 10,01 bis 20 kg – Versandkostenpauschale 18,90 €<br>
|
||||
4. 20,01-31,5 kg – Versandkostenpauschale 35,90 €</p>
|
||||
<h4><strong>DHL EU für folgende Länder:</strong></h4>
|
||||
<p>Belgien, Italien, Tschechien, Zypern, Bulgarien, Dänemark, Estland, Finnland, Frankreich, Griechenland, Irland, Kroatien, Lettland, Litauen, Luxemburg, Malta, Polen, Portugal, Rumänien, Schweden, Slowakei, Slowenien, Spanien, Ungarn, Vereinigtes Königreich, Zypern:</p>
|
||||
<p>1. Paket bis 5 kg – Versandkostenpauschale 18,90 €<br>
|
||||
2. Paket 5,01 bis 10 kg – Versandkostenpauschale 22,90 €<br>
|
||||
3. Paket 10,01 bis 20 kg – Versandkostenpauschale 26,90 €<br>
|
||||
4. 20,01-31,5 kg – Versandkostenpauschale 35,90 €</p>
|
||||
<h4><strong>Weltweit außerhalb der EU</strong></h4>
|
||||
<p>z. B. Schweiz, Lichtenstein etc.<br>
|
||||
1. Paket bis 5 kg – Versandkostenpauschale 18,90 €<br>
|
||||
2. Paket 5,01 bis 10 kg – Versandkostenpauschale 22,90 €<br>
|
||||
3. Paket 10,01 bis 20 kg – Versandkostenpauschale 28,90 €<br>
|
||||
4. 20,01-31,5 kg – Versandkostenpauschale 35,90 €</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
47
resources/views/web/legal/widerrufsbelehrung.blade.php
Normal file
47
resources/views/web/legal/widerrufsbelehrung.blade.php
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
@extends('web.layouts.layout')
|
||||
|
||||
@section('content')
|
||||
<div class="layout-content">
|
||||
|
||||
<div class="container px-3">
|
||||
<section>
|
||||
<h1 class="mt-4 mb-4 text-center">Widerrufsbelehrung</h1>
|
||||
<hr>
|
||||
<div class="">
|
||||
<h3>Widerrufsrecht für Verbraucher</h3>
|
||||
<p>(Verbraucher ist jede natürliche Person, die ein Rechtsgeschäft zu Zwecken abschließt, die überwiegend weder ihrer gewerblichen noch ihrer selbstständigen beruflichen Tätigkeit zugerechnet werden kann.)</p>
|
||||
<h3>Widerrufsrecht</h3>
|
||||
<p>Sie haben das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen.</p>
|
||||
<p>Die Widerrufsfrist beträgt vierzehn Tage ab dem Tag,</p>
|
||||
<ul>
|
||||
<li>an dem Sie oder ein von Ihnen benannter Dritter, der nicht der Beförderer ist, die Waren in Besitz genommen haben bzw. hat, sofern Sie eine oder mehrere Waren im Rahmen einer einheitlichen Bestellung bestellt haben und diese einheitlich geliefert wird bzw. werden, oder</li>
|
||||
<li>an dem Sie oder ein von Ihnen benannter Dritter, der nicht der Beförderer ist, die letzte Ware in Besitz genommen haben bzw. hat, sofern Sie mehrere Waren im Rahmen einer einheitlichen Bestellung bestellt haben und diese getrennt geliefert werden, oder</li>
|
||||
<li>an dem Sie oder ein von Ihnen benannter Dritter, der nicht der Beförderer ist, die letzte Teilsendung oder das letzte Stück in Besitz genommen haben bzw. hat, sofern Sie eine Ware bestellt haben, die in mehreren Teilsendungen oder Stücken geliefert wird, oder</li>
|
||||
<li>an dem Sie oder ein von Ihnen benannter Dritter, der nicht der Beförderer ist, die erste Ware in Besitz genommen haben bzw. hat, sofern Sie einen Vertrag zur regelmäßigen Lieferung von Waren über einen festgelegten Zeitraum hinweg geschlossen haben.</li>
|
||||
</ul>
|
||||
<p>Um Ihr Widerrufsrecht auszuüben, müssen Sie uns (Grüne Seele GbR, Hauptstr. 174, 51143 Köln, Deutschland, Deutschland, Telefonnummer: +49 (0)2203 186 90 14, E-Mail-Adresse: service@gruene-seele.bio) mittels einer eindeutigen Erklärung (z.B. ein mit der Post versandter Brief, E-Mail) über Ihren Entschluss, diesen Vertrag zu widerrufen, informieren. Sie können dafür das beigefügte Muster-Widerrufsformular verwenden, das jedoch nicht vorgeschrieben ist.</p>
|
||||
<p>Zur Wahrung der Widerrufsfrist reicht es aus, dass Sie die Mitteilung über die Ausübung des Widerrufsrechts vor Ablauf der Widerrufsfrist absenden.</p>
|
||||
<h3>Folgen des Widerrufs</h3>
|
||||
<p>Wenn Sie diesen Vertrag widerrufen, haben wir Ihnen alle Zahlungen, die wir von Ihnen erhalten haben, einschließlich der Lieferkosten (mit Ausnahme der zusätzlichen Kosten, die sich daraus ergeben, dass Sie eine andere Art der Lieferung als die von uns angebotene, günstigste Standardlieferung gewählt haben), unverzüglich und spätestens binnen vierzehn Tagen ab dem Tag zurückzuzahlen, an dem die Mitteilung über Ihren Widerruf dieses Vertrags bei uns eingegangen ist. Für diese Rückzahlung verwenden wir dasselbe Zahlungsmittel, das Sie bei der ursprünglichen Transaktion eingesetzt haben, es sei denn, mit Ihnen wurde ausdrücklich etwas anderes vereinbart; in keinem Fall werden Ihnen wegen dieser Rückzahlung Entgelte berechnet.</p>
|
||||
<p>Wir können die Rückzahlung verweigern, bis wir die Waren wieder zurückerhalten haben oder bis Sie den Nachweis erbracht haben, dass Sie die Waren zurückgesandt haben, je nachdem, welches der frühere Zeitpunkt ist.</p>
|
||||
<p>Sie haben die Waren unverzüglich und in jedem Fall spätestens binnen vierzehn Tagen ab dem Tag, an dem Sie uns über den Widerruf dieses Vertrags unterrichten, an uns zurückzusenden oder zu übergeben. Die Frist ist gewahrt, wenn Sie die Waren vor Ablauf der Frist von vierzehn Tagen absenden.</p>
|
||||
<p>Wir tragen die Kosten der Rücksendung der Waren.</p>
|
||||
<p>Sie müssen für einen etwaigen Wertverlust der Waren nur aufkommen, wenn dieser Wertverlust auf einen zur Prüfung der Beschaffenheit, Eigenschaften und Funktionsweise der Waren nicht notwendigen Umgang mit ihnen zurückzuführen ist.</p>
|
||||
<h2>Muster-Widerrufsformular</h2>
|
||||
<p>(Wenn Sie den Vertrag widerrufen wollen, dann füllen Sie bitte dieses Formular aus und senden Sie es zurück.)</p>
|
||||
<p>– An</p>
|
||||
<p>Grüne Seele GbR, Hauptstr. 174, 51143 Köln, Deutschland, Deutschland, Telefonnummer: +49 (0)2203 186 90 14, E-Mail-Adresse: service@gruene-seele.bio</p>
|
||||
<p>– Hiermit widerrufe(n) ich/wir (*) den von mir/uns (*) abgeschlossenen Vertrag über den Kauf der folgenden Waren (*)/ die Erbringung der folgenden Dienstleistung (*)</p>
|
||||
<p>– Bestellt am (*)/erhalten am (*)</p>
|
||||
<p>– Name des/der Verbraucher(s)</p>
|
||||
<p>– Anschrift des/der Verbraucher(s)</p>
|
||||
<p>– Unterschrift des/der Verbraucher(s) (nur bei Mitteilung auf Papier)</p>
|
||||
<p>– Datum</p>
|
||||
<p>___________<br>
|
||||
(*) Unzutreffendes streichen.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -256,7 +256,6 @@
|
|||
form.submit();
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
console.log(error);
|
||||
var placement = $(element).data('error');
|
||||
if (placement) {
|
||||
$(placement).append(error.addClass('invalid-feedback d-block'));
|
||||
|
|
|
|||
|
|
@ -87,7 +87,6 @@
|
|||
form.submit();
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
console.log(error);
|
||||
var placement = $(element).data('error');
|
||||
if (placement) {
|
||||
$(placement).append(error.addClass('invalid-feedback d-block'));
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label"><span id="shipping_price_holder">{{ \App\Services\PromotionCart::getCurrentShippingPrice() }}</span> € - Versand mit DHL (1-3 Werktage)</span>
|
||||
<span class="switcher-label"><span id="shipping_price_holder">{{ \App\Services\UserCart::getCurrentShippingPrice() }}</span> € - Versand mit DHL (1-3 Werktage)</span>
|
||||
</label>
|
||||
</div>
|
||||
<div id="error-switchers_shipping" class="text-left"></div>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<div class="row justify-content-center">
|
||||
<div class="form-group col-12 col-md-8 col-lg-6">
|
||||
<select id="show_products_filter" name="show_products_filter" class="form-control selectpicker" data-style="btn-default">
|
||||
{!! HTMLHelper::getCategoriesOptionsByShowOn([], 'Kategorie filtern', ['3']) !!}
|
||||
{!! HTMLHelper::getCategoriesOptionsByShowOn([$first_category_id], 'Kategorie filtern', ['3']) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<div class="swiper mySwiper">
|
||||
<div class="swiper-wrapper">
|
||||
@foreach ($shop_products as $product)
|
||||
@php($cartItem = Yard::instance('shopping')->getCartItemByProduct($product->id, false, false))
|
||||
@php($cartItem = Yard::instance('shopping')->getCartItemByProduct($product->id, false, true))
|
||||
@php($qty = isset($cartItem->qty) ? "x".$cartItem->qty : 0)
|
||||
@php($rowId = isset($cartItem->rowId) ? $cartItem->rowId : '')
|
||||
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
<div class="mt-2 pb-3">
|
||||
<button type="button" class="btn btn-primary btn-add-product-shop" data-product_id="{{ $product->id }}" data-row-id="{{ $cartItem->rowId }}">
|
||||
In den Warenkorb <i class="ion ion-md-basket navbar-icon align-middle"></i>
|
||||
<span class="badge badge-cart indicator" id="badge_cart_indicator_{{ $product->id }}">{{ $qty }}</span>
|
||||
<span class="badge-dot badge badge-cart indicator" id="badge_cart_indicator_{{ $product->id }}">{{ $qty }}</span>
|
||||
</button>
|
||||
<div class="p-1 swiper-pagination-distance"></div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
{!! Form::open(['url' => route('web_promotion_store', $promotion_user->id), 'class' => 'form-horizontal form-prevent-multiple-submits', 'id' => 'user-promotion-form-validations']) !!}
|
||||
{!! Form::open(['url' => route('web_promotion_store', $promotion_user->id), 'class' => 'form-horizontal form-prevent-multiple-submits', 'id' => 'shop-form-validations']) !!}
|
||||
<input type="hidden" name="load_url" value="{{ route('web_promotion_modal_load') }}">
|
||||
<div class="layout-content">
|
||||
@include('web.promotion._intro')
|
||||
|
|
@ -29,24 +29,29 @@
|
|||
@include('web.promotion._shipping')
|
||||
|
||||
@include('web.promotion._fairplay')
|
||||
<section id="promotion_cart_holder">
|
||||
|
||||
<section id="user_cart_holder">
|
||||
@include('web.promotion._promotion_cart')
|
||||
</section>
|
||||
|
||||
<section id="">
|
||||
@include('web.components._margin_cart')
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-md-7">
|
||||
<section id="invoice_details_holder">
|
||||
@if(Yard::instance('shopping')->isQuickShipping())
|
||||
@include('web.promotion._invoice_details_quick')
|
||||
@include('web.components._invoice_details_quick')
|
||||
@else
|
||||
@include('web.promotion._invoice_details')
|
||||
@include('web.components._invoice_details')
|
||||
@endif
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-lg-4 col-md-5">
|
||||
<section id="promotion_checkout_holder">
|
||||
@include('web.promotion._checkout')
|
||||
<section id="user_checkout_holder">
|
||||
@include('web.components._checkout')
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -57,11 +62,11 @@
|
|||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var iqShoppingShopCart = IqPromotionShopCart.init();
|
||||
var iqShoppingShopCart = IqUserShopCart.init();
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script src="{{ asset('/js/iq-promotion-shop-cart.js') }}?v=2{{ get_file_last_time('/js/iq-promotion-shop-cart.js') }}"></script>
|
||||
<script src="{{ asset('/js/iq-user-shop-cart.js') }}?v=2{{ get_file_last_time('/js/iq-user-shop-cart.js') }}"></script>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@
|
|||
form.submit();
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
console.log(error);
|
||||
var placement = $(element).data('error');
|
||||
if (placement) {
|
||||
$(placement).append(error.addClass('invalid-feedback d-block'));
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
</div>
|
||||
</div>
|
||||
@endif
|
||||
{!! Form::open(['url' => route('web_promotion_store', $promotion_user->id), 'class' => 'form-horizontal form-prevent-multiple-submits', 'id' => 'user-promotion-form-validations']) !!}
|
||||
{!! Form::open(['url' => route('web_promotion_store', $promotion_user->id), 'class' => 'form-horizontal form-prevent-multiple-submits', 'id' => 'shop-form-validations']) !!}
|
||||
<div class="layout-content">
|
||||
<div class="container px-3">
|
||||
<div class="container flex-grow-1 container-p-y pb-0">
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
{!! Form::open(['url' => route('web_promotion_store', $promotion_user->id), 'class' => 'form-horizontal form-prevent-multiple-submits', 'id' => 'user-promotion-form-validations']) !!}
|
||||
{!! Form::open(['url' => route('web_promotion_store', $promotion_user->id), 'class' => 'form-horizontal form-prevent-multiple-submits', 'id' => 'shop-form-validations']) !!}
|
||||
|
||||
<div class="layout-content">
|
||||
|
||||
|
|
|
|||
167
resources/views/web/shop/_checkout.blade.php
Normal file
167
resources/views/web/shop/_checkout.blade.php
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
@if (isset($shopping_mode) && $shopping_mode === 'test')
|
||||
<strong>#### TEST MODE #### TEST MODE ####</strong>
|
||||
@endif
|
||||
<div class="checkout-order mt-4">
|
||||
@if(Yard::instance('shopping')->isWithPayments())
|
||||
<h3 class="">Zahlungsart auswählen</h3>
|
||||
<div id="error-payment_method"></div>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table table-payment m-0" id="">
|
||||
<tbody class="switchers-stacked">
|
||||
@if (true || \App\Models\PaymentMethod::isShowPaymentMethod('PP', $user_payment_methods, 0))
|
||||
<tr>
|
||||
<td class="align-middle px-0 pl-1p">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::radio('payment_method', 'pp', '', ['class' => 'switcher-input', 'data-error'=>'#error-payment_method', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label font-weight-bold text-left">PayPal</span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right align-middle px-0 py-3 ui-w-100">
|
||||
<img class="float-right" width="90"
|
||||
src="{{ asset('images/payments-assets/paypal.png') }}" alt="PayPal">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@endif
|
||||
{{--
|
||||
@if (true || \App\Models\PaymentMethod::isShowPaymentMethod('SB', $user_payment_methods, 0))
|
||||
<tr>
|
||||
<td class="align-middle px-0 pl-1p">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::radio('payment_method', 'sb', '', ['class' => 'switcher-input', 'data-error'=>'#error-payment_method', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label font-weight-bold text-left">Sofort
|
||||
Überweisung</span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right align-middle px-0 py-3 ui-w-100">
|
||||
<img class="float-right" width="90"
|
||||
src="{{ asset('images/payments-assets/sofort.png') }}" alt="Sofort">
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@if (true || \App\Models\PaymentMethod::isShowPaymentMethod('CC', $user_payment_methods, 0))
|
||||
<tr>
|
||||
<td class="align-middle px-0 pl-1p">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::radio('payment_method', 'cc', '', ['class' => 'switcher-input', 'data-error'=>'#error-payment_method', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label font-weight-bold text-left">Kreditkarte</span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right align-middle px-0 py-3 ui-w-100">
|
||||
<img class="float-right" width="90"
|
||||
src="{{ asset('images/payments-assets/creditcard.png') }}" alt="Mastercard + Visa">
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
--}}
|
||||
@if (true || \App\Models\PaymentMethod::isShowPaymentMethod('VOR', $user_payment_methods, 0))
|
||||
<tr>
|
||||
<td class="align-middle px-0 pl-1p">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::radio('payment_method', 'vor', '', ['class' => 'switcher-input', 'data-error'=>'#error-payment_method', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label font-weight-bold text-left">Vorkasse</span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right align-middle px-0 py-3 ui-w-100">
|
||||
<img class="float-right" width="90" src="{{ asset('images/payments-assets/vor.png') }}"
|
||||
alt="Vorkasse">
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endif
|
||||
<h3 class="">Warenkorb</h3>
|
||||
<div class="checkout-cart">
|
||||
<div class="mb-2">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->total() }} €</span>
|
||||
<strong class="">Zwischensumme:</strong>
|
||||
</div>
|
||||
<hr class="light">
|
||||
<div class="mb-2">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->shipping() }} €</span>
|
||||
<span class="">Versandkosten:</span>
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->getShippingCountryName() }}</span>
|
||||
<span class="">Lieferland:</span>
|
||||
</div>
|
||||
<hr class="light">
|
||||
<div class="mb-2" style="font-size: 95%">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->subtotalWithShipping() }} €</span>
|
||||
<span class="">Summe ohne MwSt:</span>
|
||||
</div>
|
||||
<div class="mb-2" style="font-size: 95%">
|
||||
<span class="float-right">{{ Yard::instance('shopping')->taxWithShipping() }} €</span>
|
||||
<span class=""> zzgl. {{-- Yard::getTaxRate() --}} MwSt:</span>
|
||||
</div>
|
||||
<hr class="light">
|
||||
<div class="">
|
||||
<span class="float-right"><strong>{{ Yard::instance('shopping')->totalWithShipping() }} €</strong></span>
|
||||
<strong class="">Gesamtsumme:</strong>
|
||||
</div>
|
||||
<hr class="light">
|
||||
<div class="form-group">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::checkbox('accepted_data', 1, '', ['id' => 'accepted_data', 'class' => 'switcher-input', 'data-error'=>'#error-accepted_data', 'required' => true]) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no">
|
||||
</span>
|
||||
</span>
|
||||
<span class="switcher-label">Mit Klick auf "Jetzt kaufen" akzeptiere ich die
|
||||
<a href="https://www.gruene-seele.bio/agb/" target="_blank" class="text-secondary">Allgemeinen
|
||||
Geschäftsbedingungen</a> und die
|
||||
<a href="https://www.gruene-seele.bio/datenschutzerklaerung/" target="_bank"
|
||||
class="text-secondary">Datenschutzbelehrung</a>, damit für die Bestellung
|
||||
meine Daten verarbeitet werden können. <span class="required">*</span>
|
||||
</label>
|
||||
<div id="error-accepted_data"></div>
|
||||
|
||||
</div>
|
||||
{!! Form::hidden("action", "submit-shop-order") !!}
|
||||
<button type="submit" class="btn btn-primary btn-lg btn-block mt-4 button-prevent-multiple-submits">
|
||||
<i class="ion ion-ios-share-alt"></i> Jetzt kaufen <i class="spinner fa fa-spinner fa-spin"></i>
|
||||
</button>
|
||||
<hr class="light">
|
||||
@if(Yard::instance('shopping')->isWithPayments())
|
||||
<p class="text-center" style="line-height: 1.2em;"><em class="small text-center"> <i
|
||||
class="fa fa-lock"></i> Sind alle Deine Angaben vollständig ausgefüllt,
|
||||
klicke auf "Jetzt kaufen" und Du wirst zu unserer Zahlung/Zahlungsabieter weitergeleitet,
|
||||
die Verbindungen sind SSL verschlüsselt.</em></p>
|
||||
@else
|
||||
<p class="text-center" style="line-height: 1.2em;"><em class="small text-center"> <i
|
||||
class="fa fa-lock"></i> Sind alle Deine Angaben vollständig ausgefüllt,
|
||||
klicke auf "Jetzt kaufen" und die Bestellung wird abgeschlossen,
|
||||
die Verbindungen sind SSL verschlüsselt.</em></p>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
</div>
|
||||
26
resources/views/web/shop/_intro.blade.php
Normal file
26
resources/views/web/shop/_intro.blade.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<style>
|
||||
|
||||
</style>
|
||||
|
||||
<div class="container intro-media flex-grow-1 container-p-y pb-0">
|
||||
<div class="media align-items-top py-3 mb-3">
|
||||
@if($user_shop->user->hasProfileImage())
|
||||
<img src="{{ route('response_file', ['user', $user_shop->user->getProfileImage()]) }}?{{ time() }}" alt="" class="d-block ui-w-100-140 rounded-circle mt-3">
|
||||
@endif
|
||||
<div class="media-body ml-4">
|
||||
<h2 class="text-left"> {{ __('shop.headline') }}</h2>
|
||||
<p class="text-left mb-2">
|
||||
{{ __('shop.description') }}
|
||||
<br>
|
||||
{!! nl2br($user_shop->name) !!}</p>
|
||||
<h6 class="card-header no-border py-2 text-left px-0">
|
||||
<a href="#" class="collapsed" style="text-decoration: none" data-toggle="collapse" data-target="#collapsePaymentForm" aria-expanded="false" aria-controls="collapsePaymentForm">
|
||||
<i class="fa fa-caret-collapse"></i> {{ __('shop.personal_infos') }}
|
||||
</a>
|
||||
</h6>
|
||||
<div class="collapse mt-1" id="collapsePaymentForm">
|
||||
<p class="text-left"><i>{!! nl2br($user_shop->about_you) !!}</i></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
334
resources/views/web/shop/_invoice_details.blade.php
Normal file
334
resources/views/web/shop/_invoice_details.blade.php
Normal file
|
|
@ -0,0 +1,334 @@
|
|||
<h2 class="mt-3">Rechnungsdetails</h2>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::checkbox('is_invoice_details_private', 1, true, ['id' => 'switch_invoice_details_private', 'class' => 'switcher-input']) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no">
|
||||
</span>
|
||||
</span>
|
||||
<span class="switcher-label">Privat (keine Firma)</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::checkbox('is_invoice_details_germany', 1, (Yard::instance('shopping')->getShippingCountryId() == 1 ? true : false), ['id' => 'switch_invoice_details_germany', 'class' => 'switcher-input']) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no">
|
||||
</span>
|
||||
</span>
|
||||
<span class="switcher-label">aus Deutschland</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group {{ $errors->has('billing_salutation') ? 'error' : '' }}">
|
||||
<label for="billing_salutation">Anrede <span class="required">*</span></label>
|
||||
<select id="billing_salutation" name="billing_salutation"
|
||||
class="form-control selectpicker revalidat" data-style="btn-default" data-error="#error-billing_salutation" required>
|
||||
{!! HTMLHelper::getSalutation(old('billing_salutation')) !!}
|
||||
</select>
|
||||
<div id="error-billing_salutation" class="text-left"></div>
|
||||
@if ($errors->has('billing_salutation'))
|
||||
<label for="billing_salutation" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_salutation') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_firstname">Vorname <span class="required">*</span></label>
|
||||
{!! Form::text('billing_firstname', '', ['class' => 'form-control ' . ($errors->has('billing_firstname') ? 'error' : ''), 'id' => 'billing_firstname', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_firstname'))
|
||||
<label for="billing_firstname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_firstname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_lastname">Nachname <span class="required">*</span></label>
|
||||
{!! Form::text('billing_lastname', '', ['class' => 'form-control ' . ($errors->has('billing_lastname') ? 'error' : ''), 'id' => 'billing_lastname', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_lastname'))
|
||||
<label for="billing_lastname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_lastname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 not-show show_invoice_details_private">
|
||||
<div class="form-group">
|
||||
<label for="billing_company">Firmenname (optional)</label>
|
||||
{!! Form::text('billing_company', '', ['class' => 'form-control', 'id' => 'billing_company']) !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 not-show show_invoice_details_germany">
|
||||
<div class="form-group">
|
||||
<label for="billing_state">Land / Region <span class="required">*</span></label>
|
||||
<select id="billing_state" name="billing_state" class="form-control selectpicker"
|
||||
data-style="btn-default">
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId(), false, 2) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_address">Straße + Hausnummer <span
|
||||
class="required">*</span></label>
|
||||
{!! Form::text('billing_address', '', ['class' => 'form-control ' . ($errors->has('billing_address') ? 'error' : ''), 'id' => 'billing_address', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_address'))
|
||||
<label for="billing_address" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_address') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
{!! Form::text('billing_address_2', '', ['placeholder' => 'Zusätzliche Angaben / Hinweise (optional)', 'class' => 'form-control ' . ($errors->has('billing_address_2') ? 'error' : ''), 'id' => 'billing_address_2']) !!}
|
||||
@if ($errors->has('billing_address_2'))
|
||||
<label for="billing_address_2" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_address_2') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_zipcode">PLZ <span class="required">*</span></label>
|
||||
{!! Form::text('billing_zipcode', '', ['class' => 'form-control ' . ($errors->has('billing_zipcode') ? 'error' : ''), 'id' => 'billing_zipcode', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_zipcode'))
|
||||
<label for="billing_zipcode" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_zipcode') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_city">Stadt <span class="required">*</span></label>
|
||||
{!! Form::text('billing_city', '', ['class' => 'form-control ' . ($errors->has('billing_city') ? 'error' : ''), 'id' => 'billing_city', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_city'))
|
||||
<label for="billing_city" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_city') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_email">E-Mail <span class="required">*</span></label>
|
||||
{!! Form::email('billing_email', '', ['class' => 'form-control ' . ($errors->has('billing_email') ? 'error' : ''), 'id' => 'billing_email', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_email'))
|
||||
<label for="billing_email" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_email') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label class="switcher switcher-success">
|
||||
{!! Form::checkbox('same_as_billing', 1, '', ['id' => 'shipping_address_switch', 'class' => 'switcher-input']) !!}
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no">
|
||||
</span>
|
||||
</span>
|
||||
<span class="switcher-label">Lieferung an eine andere Adresse senden?</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" id="shipping_address">
|
||||
<div class="col-12">
|
||||
<hr class="">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<h2 class="mt-3">Lieferadresse</h2>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group {{ $errors->has('shipping_salutation') ? 'error' : '' }}">
|
||||
<label for="shipping_salutation">Anrede <span class="required">*</span></label>
|
||||
<select id="shipping_salutation" name="shipping_salutation"
|
||||
class="form-control selectpicker revalidat" data-style="btn-default" data-error="#error-shipping_salutation" required>
|
||||
{!! HTMLHelper::getSalutation(old('shipping_salutation')) !!}
|
||||
</select>
|
||||
<div id="error-shipping_salutation" class="text-left"></div>
|
||||
@if ($errors->has('shipping_salutation'))
|
||||
<label for="shipping_salutation" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_salutation') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="shipping_firstname">Vorname <span class="required">*</span></label>
|
||||
{!! Form::text('shipping_firstname', '', ['class' => 'form-control ' . ($errors->has('shipping_firstname') ? 'error' : ''), 'id' => 'shipping_firstname', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_firstname'))
|
||||
<label for="shipping_firstname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_firstname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="shipping_lastname">Nachname <span class="required">*</span></label>
|
||||
{!! Form::text('shipping_lastname', '', ['class' => 'form-control ' . ($errors->has('shipping_lastname') ? 'error' : ''), 'id' => 'shipping_lastname', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_lastname'))
|
||||
<label for="shipping_lastname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_lastname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 not-show show_invoice_details_private">
|
||||
<div class="form-group">
|
||||
<label for="shipping_company">Firmenname (optional)</label>
|
||||
{!! Form::text('shipping_company', '', ['class' => 'form-control', 'id' => 'shipping_company']) !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 not-show show_invoice_details_germany">
|
||||
<div class="form-group">
|
||||
<label for="shipping_state">Land / Region <span class="required">*</span></label>
|
||||
<select id="shipping_state" name="shipping_state" class="form-control selectpicker"
|
||||
data-style="btn-default">
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId(), false, 2) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="shipping_address">Straße + Hausnummer <span
|
||||
class="required">*</span></label>
|
||||
{!! Form::text('shipping_address', '', ['class' => 'form-control ' . ($errors->has('shipping_address') ? 'error' : ''), 'id' => 'shipping_address', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_address'))
|
||||
<label for="shipping_address" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_address') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
{!! Form::text('shipping_address_2', '', ['placeholder' => 'Zusätzliche Angaben / Hinweise (optional)', 'class' => 'form-control ' . ($errors->has('shipping_address_2') ? 'error' : ''), 'id' => 'shipping_address_2']) !!}
|
||||
@if ($errors->has('shipping_address_2'))
|
||||
<label for="shipping_address_2" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_address_2') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="shipping_zipcode">PLZ <span class="required">*</span></label>
|
||||
{!! Form::text('shipping_zipcode', '', ['class' => 'form-control ' . ($errors->has('shipping_zipcode') ? 'error' : ''), 'id' => 'shipping_zipcode', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_zipcode'))
|
||||
<label for="shipping_zipcode" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_zipcode') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="shipping_city">Stadt <span class="required">*</span></label>
|
||||
{!! Form::text('shipping_city', '', ['class' => 'form-control ' . ($errors->has('shipping_city') ? 'error' : ''), 'id' => 'shipping_city', 'required' => true]) !!}
|
||||
@if ($errors->has('shipping_city'))
|
||||
<label for="shipping_city" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('shipping_city') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$('#invoice_details_holder select').selectpicker();
|
||||
|
||||
var validator = $("#user-shop-form-validations").validate({
|
||||
submitHandler: function(form) {
|
||||
$('.button-prevent-multiple-submits').attr('disabled', true);
|
||||
$('.button-prevent-multiple-submits').find('.spinner').show();
|
||||
form.submit();
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
var placement = $(element).data('error');
|
||||
if (placement) {
|
||||
$(placement).append(error.addClass('invalid-feedback d-block'));
|
||||
} else {
|
||||
error.insertAfter(element).addClass('invalid-feedback small d-block');
|
||||
}
|
||||
},
|
||||
highlight: function( element, errorClass, validClass ) {
|
||||
if($(element).hasClass('selectpicker')){
|
||||
$(element).parent('.form-control').find('.dropdown-toggle').addClass( errorClass ).removeClass( validClass );
|
||||
}else if ( element.type === "radio" ) {
|
||||
this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
|
||||
} else {
|
||||
$( element ).addClass( errorClass ).removeClass( validClass );
|
||||
}
|
||||
},
|
||||
unhighlight: function( element, errorClass, validClass ) {
|
||||
if($(element).hasClass('selectpicker')){
|
||||
$(element).parent('.form-control').find('.dropdown-toggle').removeClass( errorClass ).addClass( validClass );
|
||||
} else if ( element.type === "radio" ) {
|
||||
this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
|
||||
} else {
|
||||
$( element ).removeClass( errorClass ).addClass( validClass );
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
user_free_product_id: {
|
||||
required: "Bitte ein Produkt auswählen.",
|
||||
},
|
||||
switchers_shipping: {
|
||||
required: "Bitte eine Auswahl treffen.",
|
||||
},
|
||||
payment_method: {
|
||||
required: "Bitte eine Zahlungsart auswählen.",
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('select.revalidat').on('change', function () {
|
||||
validator.element($(this));
|
||||
});
|
||||
|
||||
function switch_invoice_details_germany(){
|
||||
if($('input#switch_invoice_details_germany').is(':checked')){
|
||||
$('.show_invoice_details_germany').hide('slow');
|
||||
}else{
|
||||
$('.show_invoice_details_germany').show('slow');
|
||||
}
|
||||
}
|
||||
switch_invoice_details_germany();
|
||||
$('input#switch_invoice_details_private').on('change', function () {
|
||||
if($(this).is(':checked')){
|
||||
$('.show_invoice_details_private').hide('slow');
|
||||
}else{
|
||||
$('.show_invoice_details_private').show('slow');
|
||||
}
|
||||
});
|
||||
$('input#switch_invoice_details_germany').on('change', function () {
|
||||
switch_invoice_details_germany();
|
||||
});
|
||||
|
||||
// Shipping Address show|hide
|
||||
$("#shipping_address_switch").bind("change", function() {
|
||||
$('#shipping_address').slideToggle(200, function() {
|
||||
if ($('#shipping_address').is(":visible")) {
|
||||
_scrollTo('#shipping_address', 60);
|
||||
}
|
||||
});
|
||||
});
|
||||
if ($('#shipping_address_switch').is(':checked')) {
|
||||
$('#shipping_address').show();
|
||||
} else {
|
||||
$('#shipping_address').hide();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
132
resources/views/web/shop/_invoice_details_quick.blade.php
Normal file
132
resources/views/web/shop/_invoice_details_quick.blade.php
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
<h2 class="mt-3">Rechnungsdetails</h2>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_firstname">Vorname <span class="required">*</span></label>
|
||||
{!! Form::text('billing_firstname', '', ['class' => 'form-control ' . ($errors->has('billing_firstname') ? 'error' : ''), 'id' => 'billing_firstname', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_firstname'))
|
||||
<label for="billing_firstname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_firstname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_lastname">Nachname <span class="required">*</span></label>
|
||||
{!! Form::text('billing_lastname', '', ['class' => 'form-control ' . ($errors->has('billing_lastname') ? 'error' : ''), 'id' => 'billing_lastname', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_lastname'))
|
||||
<label for="billing_lastname" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_lastname') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_state">Land / Region <span class="required">*</span></label>
|
||||
<select id="billing_state" name="billing_state" class="form-control selectpicker"
|
||||
data-style="btn-default" required>
|
||||
{!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId(), false, 2) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_address">Straße + Hausnummer <span
|
||||
class="required">*</span></label>
|
||||
{!! Form::text('billing_address', '', ['class' => 'form-control ' . ($errors->has('billing_address') ? 'error' : ''), 'id' => 'billing_address', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_address'))
|
||||
<label for="billing_address" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_address') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_zipcode">PLZ <span class="required">*</span></label>
|
||||
{!! Form::text('billing_zipcode', '', ['class' => 'form-control ' . ($errors->has('billing_zipcode') ? 'error' : ''), 'id' => 'billing_zipcode', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_zipcode'))
|
||||
<label for="billing_zipcode" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_zipcode') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="billing_city">Stadt <span class="required">*</span></label>
|
||||
{!! Form::text('billing_city', '', ['class' => 'form-control ' . ($errors->has('billing_city') ? 'error' : ''), 'id' => 'billing_city', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_city'))
|
||||
<label for="billing_city" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_city') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group">
|
||||
<label for="billing_email">E-Mail <span class="required">*</span></label>
|
||||
{!! Form::email('billing_email', '', ['class' => 'form-control ' . ($errors->has('billing_email') ? 'error' : ''), 'id' => 'billing_email', 'required' => true]) !!}
|
||||
@if ($errors->has('billing_email'))
|
||||
<label for="billing_email" class="error text-danger small"
|
||||
style="display: block;">{{ $errors->first('billing_email') }}</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$('#invoice_details_holder select').selectpicker();
|
||||
|
||||
var validator = $("#user-shop-form-validations").validate({
|
||||
submitHandler: function(form) {
|
||||
$('.button-prevent-multiple-submits').attr('disabled', true);
|
||||
$('.button-prevent-multiple-submits').find('.spinner').show();
|
||||
form.submit();
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
var placement = $(element).data('error');
|
||||
if (placement) {
|
||||
$(placement).append(error.addClass('invalid-feedback d-block'));
|
||||
} else {
|
||||
error.insertAfter(element).addClass('invalid-feedback small d-block');
|
||||
}
|
||||
},
|
||||
highlight: function( element, errorClass, validClass ) {
|
||||
if($(element).hasClass('selectpicker')){
|
||||
$(element).parent('.form-control').find('.dropdown-toggle').addClass( errorClass ).removeClass( validClass );
|
||||
}else if ( element.type === "radio" ) {
|
||||
this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
|
||||
} else {
|
||||
$( element ).addClass( errorClass ).removeClass( validClass );
|
||||
}
|
||||
},
|
||||
unhighlight: function( element, errorClass, validClass ) {
|
||||
if($(element).hasClass('selectpicker')){
|
||||
$(element).parent('.form-control').find('.dropdown-toggle').removeClass( errorClass ).addClass( validClass );
|
||||
} else if ( element.type === "radio" ) {
|
||||
this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
|
||||
} else {
|
||||
$( element ).removeClass( errorClass ).addClass( validClass );
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
user_free_product_id: {
|
||||
required: "Bitte ein Produkt auswählen.",
|
||||
},
|
||||
switchers_shipping: {
|
||||
required: "Bitte eine Auswahl treffen.",
|
||||
},
|
||||
payment_method: {
|
||||
required: "Bitte eine Zahlungsart auswählen.",
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('select.revalidat').on('change', function () {
|
||||
validator.element($(this));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
58
resources/views/web/shop/_margin_cart.blade.php
Normal file
58
resources/views/web/shop/_margin_cart.blade.php
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
@if(isset($userMargin))
|
||||
<div class="row">
|
||||
<div class="col-12 text-left">
|
||||
<h2 class="mt-3">Provision</h2>
|
||||
|
||||
<div class="text-left mt-2">
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-left no-border-top">Summe netto:</td>
|
||||
<td class="no-border-top">
|
||||
{{ Yard::instance('shopping')->subtotal(null, null, null, false) }} €*
|
||||
</td>
|
||||
</tr>
|
||||
@dump($userMargin->yard_margin)
|
||||
@if($userMargin->yard_margin && $userMargin->yard_margin->isMargin())
|
||||
@foreach($userMargin->yard_margin->items as $item)
|
||||
<tr>
|
||||
<td class="text-left">Staffelrabatt
|
||||
<br>ab {{ $item->getFormatted('price_from') }} / {{ $item->getFormatted('trading_margin') }}% :</td>
|
||||
<td>
|
||||
- {{ $item->getFormatted('value_margin') }} €*
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
@if($userMargin->yard_commission && $userMargin->yard_commission->isCommission())
|
||||
<tr>
|
||||
<td class="text-left">Einzelrabatt:</td>
|
||||
<td>
|
||||
- {{ $userMargin->yard_commission->getFormatted('single_value_commission') }} €*
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
<tr>
|
||||
<td class="text-left"><strong>Summe (Netto):</strong></td>
|
||||
<td>
|
||||
<strong>{{ Yard::instance('shopping')->subtotal() }} €*</strong>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@if($userMargin->yard_margin && $userMargin->yard_margin->net_partner_commission > 0)
|
||||
<tr>
|
||||
<td class="text-left"><em>Provision Vertriebspartern:</em></td>
|
||||
<td>
|
||||
<em>{{ $userMargin->yard_margin->getFormatted('net_partner_commission') }} €*</em>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
@endif
|
||||
|
||||
39
resources/views/web/shop/_shipping.blade.php
Normal file
39
resources/views/web/shop/_shipping.blade.php
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<section>
|
||||
<div class="row">
|
||||
<div class="col-md-6 text-left">
|
||||
<h2 class="mt-3">Wähle Deine Versandart</h2>
|
||||
<div class="switchers-stacked">
|
||||
@php($shipping_option = Yard::instance('shopping')->getShippingOption())
|
||||
@if($user_shop->pick_up)
|
||||
<label class="switcher switcher-success">
|
||||
<input type="radio" class="switcher-input" name="switchers_shipping" data-error="#error-switchers_shipping" value="pick_up" required
|
||||
@if($shipping_option === 'pick_up') checked @endif>
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label">0,00 € - Ich hole die Ware bei {{ $user_shop->user->getFullName(false) }} persönlich ab (Abholadresse beachten)</span>
|
||||
</label>
|
||||
@endif
|
||||
<label class="switcher switcher-success">
|
||||
<input type="radio" class="switcher-input" name="switchers_shipping" data-error="#error-switchers_shipping" value="dhl_shipping"
|
||||
@if($shipping_option === 'dhl_shipping') checked @endif checked required>
|
||||
<span class="switcher-indicator">
|
||||
<span class="switcher-yes">
|
||||
<span class="ion ion-md-checkmark"></span>
|
||||
</span>
|
||||
<span class="switcher-no"></span>
|
||||
</span>
|
||||
<span class="switcher-label"><span id="shipping_price_holder">{{ \App\Services\UserCart::getCurrentShippingPrice() }}</span> € - Versand mit DHL (1-3 Werktage)</span>
|
||||
</label>
|
||||
</div>
|
||||
<div id="error-switchers_shipping" class="text-left"></div>
|
||||
</div>
|
||||
|
||||
<div class="mt-2 col-12">
|
||||
<hr class="">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
107
resources/views/web/shop/_shop_cart.blade.php
Normal file
107
resources/views/web/shop/_shop_cart.blade.php
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
<div class="row">
|
||||
<div class="col-12 text-left">
|
||||
<h2 class="mt-3">Warenkorb</h2>
|
||||
<div id="cartContent">
|
||||
<div class="yard-items-head d-none d-sm-block">
|
||||
<div class="row">
|
||||
<div class="col-3 col-sm-2">
|
||||
<div class="row"> </div>
|
||||
</div>
|
||||
<div class="col-9 col-sm-10">
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-6 col-md-7">
|
||||
Artikel
|
||||
</div>
|
||||
<div class="col-6 col-sm-3 col-md-2 text-left">
|
||||
Einzelpreis
|
||||
</div>
|
||||
<div class="col-6 col-sm-3 col-md-3 text-right">
|
||||
Anzahl/Preis
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@foreach(Yard::instance('shopping')->getContentByOrder() as $row)
|
||||
@php($product = \App\Models\Product::find($row->id))
|
||||
<div class="row yard-item">
|
||||
<div class="col-3 col-sm-2">
|
||||
@if($row->options->has('image'))
|
||||
<img src="{{ route('product_image', [$row->options->image]) }}" class="d-block ui-w-90 ui-bordered mr-4" alt="">
|
||||
@else
|
||||
<img src="{{ asset('/assets/images/1x1.png') }}" class="d-block ui-w-80 ui-bordered mr-4" alt="">
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-9 col-sm-10">
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-6 col-md-7 description">
|
||||
<div class="media-body">
|
||||
<div class="d-block text-body"
|
||||
style="">{{ $row->name }}
|
||||
</div>
|
||||
<div class="text-body" style="font-size: 0.9em">
|
||||
<div>Inhalt: {{ $product->contents }}</div>
|
||||
<div>Art.-Nr.: {{ $product->number }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="options">
|
||||
@if(!$row->options->free_product_id)
|
||||
<a href="#"
|
||||
class="auto-delete-product remove_item_form_cart product-tooltip"
|
||||
data-row-id="{{$row->rowId}}"
|
||||
data-product-id="{{ $product->id }}"><i
|
||||
class="fa fa-times"></i> Artikel entfernen</a>
|
||||
@else
|
||||
gratis
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-sm-3 col-md-2 text-left font-semi-bold price-single">
|
||||
<div class="no-line-break">
|
||||
{{ Yard::instance('shopping')->rowPrice($row, 2) }} €*</div>
|
||||
</div>
|
||||
<div class="col-6 col-sm-3 col-md-3 quantity">
|
||||
@if(!$row->options->free_product_id)
|
||||
<div class="quantity-select">
|
||||
<input type="number"
|
||||
class="form-control text-center cart-input-event-onchange"
|
||||
data-row-id="{{$row->rowId}}"
|
||||
data-product_id="{{ $product->id }}" value="{{ $row->qty }}"
|
||||
name="quantity[{{ $row->qty }}]" maxlength="3" max="999"
|
||||
min="0">
|
||||
</div>
|
||||
<div class="price-total text-right">
|
||||
<div class="no-line-break">{{ Yard::instance('shopping')->rowSubtotal($row, 2) }} €*</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="price-total text-right mt-0">
|
||||
<div class="no-line-break">1 / 0,00 €*</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-0 col-12">
|
||||
|
||||
<p class="small mt-0 mb-2">
|
||||
Du hast {{ Yard::instance('shopping')->count() }} Artikel in Deinem Warenkorb
|
||||
</p>
|
||||
<button type="button" class="btn btn-default btn-sm" id="clear-products-basket"><i
|
||||
class="ion ion-ios-trash"></i> Warenkorb löschen</button>
|
||||
|
||||
<p class="small pt-2 float-sm-right">
|
||||
<span class="">
|
||||
<em>{{ __('shop.incl_VAT_plus_shipping') }}</em>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<hr class="">
|
||||
</div>
|
||||
</div>
|
||||
20
resources/views/web/shop/_shop_products.blade.php
Normal file
20
resources/views/web/shop/_shop_products.blade.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<section class="shop-products">
|
||||
|
||||
<h2 class="text-center mt-3">Naturkosmetik Onlineshop</h2>
|
||||
|
||||
<div class="row justify-content-center">
|
||||
<div class="form-group col-12 col-md-8 col-lg-6">
|
||||
<select id="show_products_filter" name="show_products_filter" class="form-control selectpicker" data-style="btn-default">
|
||||
{!! HTMLHelper::getCategoriesOptionsByShowOn([$first_category_id], 'Kategorie filtern', ['8']) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="show_products_holder">
|
||||
@include('web.shop._shop_products_inner')
|
||||
</div>
|
||||
|
||||
<div class="m2-4 text-center small">
|
||||
<em>{{ __('shop.incl_VAT_plus_shipping') }}</em>
|
||||
<hr class="">
|
||||
</div>
|
||||
</section>
|
||||
73
resources/views/web/shop/_shop_products_inner.blade.php
Normal file
73
resources/views/web/shop/_shop_products_inner.blade.php
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
|
||||
|
||||
<div class="row justify-content-center">
|
||||
|
||||
@foreach ($shop_products as $product)
|
||||
@php($cartItem = Yard::instance('shopping')->getCartItemByProduct($product->id, false, true))
|
||||
@php($qtyStr = isset($cartItem->qty) ? "x".$cartItem->qty : 0)
|
||||
@php($qty = isset($cartItem->qty) ? $cartItem->qty : 0)
|
||||
@php($rowId = isset($cartItem->rowId) ? $cartItem->rowId : '')
|
||||
|
||||
<div class="col-6 col-md-6 col-lg-4 text-center mb-4">
|
||||
<div class="text-center product-item">
|
||||
@if ($product->images)
|
||||
@if ($image = $product->images->first())
|
||||
<img src="{{ asset('images/lazy.png') }}" data-original="{{ route('product_image', [$image->slug]) }}" class="lazy mb-2 img-fluid" alt="">
|
||||
|
||||
@else
|
||||
<img src="{{ asset('images/placeholder.png') }}" class=" mb-2 img-fluid" alt="">
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<div class="ui-basket-card">
|
||||
<div class="ui-basket-item">
|
||||
<button type="button" class="ui-basket-btn-minus btn-minus-product-shop is-disabled"
|
||||
data-product_id="{{ $product->id }}" data-row-id="{{ $cartItem->rowId }}"
|
||||
id="cart_btn_minus_{{ $product->id }}" @if($qty <=0) disabled @endif>
|
||||
<i class="fa fa-minus-circle"></i>
|
||||
</button>
|
||||
<div class="ui-basket-quantity" >
|
||||
<i class="ion ion-md-basket"></i>
|
||||
<span class="indicator" id="badge_cart_indicator_{{ $product->id }}"> {{ $qtyStr }}</span>
|
||||
|
||||
</div>
|
||||
<button type="button" class="ui-basket-btn-plus btn-add-product-shop is-disabled"
|
||||
data-product_id="{{ $product->id }}" data-row-id="{{ $cartItem->rowId }}"
|
||||
id="cart_btn_plus_{{ $product->id }}" @if($qty >=100) disabled @endif>
|
||||
<i class="fa fa-plus-circle"></i>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="product-title px-1 mt-2">
|
||||
{{ $product->name }}
|
||||
</h4>
|
||||
<div class="mb-2 product-description px-1">
|
||||
{{ $product->getShortCopy(true, 110) }}
|
||||
</div>
|
||||
<div class="more_details">
|
||||
<a href="" class="btn btn-sm-only-xs btn-default m-2" data-modal="modal-lg" data-toggle="modal"
|
||||
data-target="#modals-load-content" data-id="{{ $product->id }}"
|
||||
data-route="{{ route('web_shop_modal_load') }}"
|
||||
data-action="web-show-product" data-view="with-price">
|
||||
<i class="fa fa-search"></i> Mehr Details</a>
|
||||
</div>
|
||||
<div class="product-item-price mt-2 mt-2 pb-3">
|
||||
{{ $product->getFormattedPrice() }} €*
|
||||
<br><span class="small text-muted">@if($product->unit) {{ $product->getBasePriceFormattedFull() }} € @else @endif</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$(function() {
|
||||
$("img.lazy").lazyload({
|
||||
effect : "fadeIn"
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
82
resources/views/web/shop/index.blade.php
Normal file
82
resources/views/web/shop/index.blade.php
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
@extends('web.layouts.layout')
|
||||
|
||||
@section('content')
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{!! Form::open(['url' => route('web_shop_store', $user_shop->id), 'class' => 'form-horizontal form-prevent-multiple-submits', 'id' => 'shop-form-validations']) !!}
|
||||
<input type="hidden" name="load_url" value="{{ route('web_shop_modal_load') }}">
|
||||
<div class="layout-content">
|
||||
@include('web.shop._intro')
|
||||
|
||||
<div class="container px-3">
|
||||
|
||||
@include('web.shop._shop_products')
|
||||
|
||||
{{-- @include('web.shop._shipping') --}}
|
||||
|
||||
<section id="user_cart_holder">
|
||||
@include('web.shop._shop_cart')
|
||||
</section>
|
||||
|
||||
<section id="">
|
||||
@include('web.components._margin_cart')
|
||||
</section>
|
||||
|
||||
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-md-7">
|
||||
<section id="invoice_details_holder">
|
||||
@if(Yard::instance('shopping')->isQuickShipping())
|
||||
@include('web.components._invoice_details_quick')
|
||||
@else
|
||||
@include('web.components._invoice_details')
|
||||
@endif
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-lg-4 col-md-5">
|
||||
<section id="user_checkout_holder">
|
||||
@include('web.components._checkout')
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-lg-12 text-center">
|
||||
<hr>
|
||||
{{-- @if($user_shop->pick_up) --}}
|
||||
<h3 class="mt-3">Kontaktadresse Deines Beraters</h3>
|
||||
{!! nl2br($user_shop->user_address) !!}
|
||||
{{-- @endif --}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var iqShoppingShopCart = IqUserShopCart.init();
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script src="{{ asset('/js/iq-user-shop-cart.js') }}?v=2{{ get_file_last_time('/js/iq-user-shop-cart.js') }}"></script>
|
||||
@endsection
|
||||
126
resources/views/web/shop/show_product.blade.php
Normal file
126
resources/views/web/shop/show_product.blade.php
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
<div class="modal-content modal-shop">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title">
|
||||
{{ $product->name }}
|
||||
</h3>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body p-2 p-md-4">
|
||||
<div class="card mb-3 no-border">
|
||||
<div class="media flex-wrap flex-md-nowrap">
|
||||
<div class="d-block col-12 col-md-4 col-lg-4 text-center p-0 m-0">
|
||||
@if(count($product->images))
|
||||
<img src="{{route('product_image', [$product->images->first()->slug])}}" alt class="img-fluid" style="max-height: 300px">
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="media-body py-4 px-3 px-md-4">
|
||||
{!! $product->copy !!}
|
||||
<table class="table table-striped my-4">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="align-middle" style="width: 120px">Inhalt:</td>
|
||||
<td class="font-weight-bold">{{ $product->contents }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="align-middle">Gewicht:</td>
|
||||
<td class="font-weight-bold">{{ $product->weight }} g</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="align-middle">Art.-Nr.:</td>
|
||||
<td class="font-weight-bold">{{ $product->number }}</td>
|
||||
</tr>
|
||||
@if(isset($data['view']) && $data['view'] === 'with-price')
|
||||
<tr>
|
||||
<td class="align-middle">Preis:</td>
|
||||
<td class="font-weight-bold">{{ $product->getFormattedPrice() }} €*</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="align-middle">Grundpreis:</td>
|
||||
<td class="font-weight-bold">{{ $product->getBasePriceFormattedFull() }} €</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" class=""><em>{{ __('shop.incl_VAT_plus_shipping') }}</em></td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="">
|
||||
|
||||
<ul class="nav nav-tabs justify-content-center border-0 px-4 px-lg-5">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link small font-weight-normal text-expanded py-2 active" data-toggle="tab" href="#shop-product-description">Bechreibung</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link small font-weight-normal text-expanded py-2" data-toggle="tab" href="#shop-product-usage">Anwendung</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link small font-weight-normal text-expanded py-2" data-toggle="tab" href="#shop-product-full-ingredients">Inhaltsstoffe</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link small font-weight-normal text-expanded py-2" data-toggle="tab" href="#shop-product-ingredients">Hinweise</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade show active" id="shop-product-description">
|
||||
<div class="card borderless">
|
||||
<div class="card-body">
|
||||
{!! $product->description !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane fade" id="shop-product-usage">
|
||||
<div class="card borderless">
|
||||
<div class="card-body">
|
||||
{!! $product->usage !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="shop-product-full-ingredients">
|
||||
<div class="card borderless no-border ">
|
||||
<div class="card-body p-0">
|
||||
<div class="table-responsive">
|
||||
<table class="datatables-style table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__('Name')}}</th>
|
||||
<th>{{__('INCI')}}</th>
|
||||
<th>{{__('Wirkung') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($product->p_ingredients as $ingredient)
|
||||
<tr>
|
||||
<td>{{ $ingredient->name }}</td>
|
||||
<td>{{ $ingredient->inci }}</td>
|
||||
<td>{{ $ingredient->effect }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="shop-product-ingredients">
|
||||
<div class="card borderless">
|
||||
<div class="card-body">
|
||||
{!! $product->ingredients !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer p-2">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">schließen</button>
|
||||
</div>
|
||||
</div>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue