sandoz.bbmb.ch 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.gitignore +7 -0
 - data/.travis.yml +26 -0
 - data/Gemfile +12 -0
 - data/History.txt +6 -0
 - data/LICENSE +339 -0
 - data/Rakefile +21 -0
 - data/doc/index.rbx +14 -0
 - data/doc/resources/activex/BbmbBarcodeReader.CAB +0 -0
 - data/doc/resources/activex/BbmbBarcodeReader2.CAB +0 -0
 - data/doc/resources/bbmb.css +301 -0
 - data/doc/resources/errors/appdown.html +14 -0
 - data/doc/resources/javascript/bcreader.js +131 -0
 - data/doc/resources/javascript/order.js +65 -0
 - data/doc/resources/javascript/widget/ContentToggler.js +60 -0
 - data/doc/resources/javascript/widget/__package__.js +2 -0
 - data/doc/resources/javascript/widget/templates/ContentToggler.html +4 -0
 - data/doc/resources/logo.png +0 -0
 - data/lib/bbmb/html/util/lookandfeel.rb +202 -0
 - data/lib/bbmb/sandoz.rb +4 -0
 - data/lib/bbmb/sandoz/html/state/viral/customer.rb +25 -0
 - data/lib/bbmb/sandoz/version.rb +5 -0
 - data/lib/bbmb/util/csv_importer.rb +123 -0
 - data/readme.md +28 -0
 - data/sandoz.bbmb.ch.gemspec +45 -0
 - data/test/rcov +2 -0
 - data/test/selenium.rb +1687 -0
 - data/test/selenium/selenium-server.jar +0 -0
 - data/test/selenium/test_current_order.rb +336 -0
 - data/test/selenium/test_customer.rb +363 -0
 - data/test/selenium/test_customers.rb +92 -0
 - data/test/selenium/test_favorites.rb +257 -0
 - data/test/selenium/test_favorites_result.rb +81 -0
 - data/test/selenium/test_history.rb +112 -0
 - data/test/selenium/test_login.rb +112 -0
 - data/test/selenium/test_orders.rb +111 -0
 - data/test/selenium/test_result.rb +157 -0
 - data/test/selenium/unit.rb +146 -0
 - data/test/stub/http_server.rb +140 -0
 - data/test/stub/persistence.rb +58 -0
 - data/test/suite.rb +15 -0
 - data/test/util/data/Artikel.TXT +50 -0
 - data/test/util/data/Kunden.TXT +14 -0
 - data/test/util/test_csv_importer.rb +136 -0
 - metadata +414 -0
 
| 
         @@ -0,0 +1,60 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            dojo.provide("ywesee.widget.ContentToggler");
         
     | 
| 
      
 2 
     | 
    
         
            +
            dojo.require("dojo.widget.*");
         
     | 
| 
      
 3 
     | 
    
         
            +
            dojo.require("dojo.lfx.html");
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ywesee.widget.ContentToggler = function() {
         
     | 
| 
      
 6 
     | 
    
         
            +
            	dojo.widget.HtmlWidget.call(this);
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            	this.widgetType = "ContentToggler";
         
     | 
| 
      
 9 
     | 
    
         
            +
            	this.templatePath = dojo.uri.dojoUri("../javascript/widget/templates/ContentToggler.html");
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              this.css_class = 'toggler';
         
     | 
| 
      
 12 
     | 
    
         
            +
            	this.togglee = '';
         
     | 
| 
      
 13 
     | 
    
         
            +
            	this.message_open = '';
         
     | 
| 
      
 14 
     | 
    
         
            +
            	this.message_close = '';
         
     | 
| 
      
 15 
     | 
    
         
            +
            	this.status = '';
         
     | 
| 
      
 16 
     | 
    
         
            +
              this.duration = 1;
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            	this.toggleContent = function() {
         
     | 
| 
      
 19 
     | 
    
         
            +
                var tmp = this.status;
         
     | 
| 
      
 20 
     | 
    
         
            +
                if(tmp == 'change') return;
         
     | 
| 
      
 21 
     | 
    
         
            +
                this.status = 'change';
         
     | 
| 
      
 22 
     | 
    
         
            +
            		if(tmp == 'open') {
         
     | 
| 
      
 23 
     | 
    
         
            +
            			this.implode();
         
     | 
| 
      
 24 
     | 
    
         
            +
            		}	else {
         
     | 
| 
      
 25 
     | 
    
         
            +
            			this.explode();
         
     | 
| 
      
 26 
     | 
    
         
            +
            		}
         
     | 
| 
      
 27 
     | 
    
         
            +
            	}
         
     | 
| 
      
 28 
     | 
    
         
            +
            	this.implode = function() { 
         
     | 
| 
      
 29 
     | 
    
         
            +
                var _this = this;
         
     | 
| 
      
 30 
     | 
    
         
            +
                var callback = function() {
         
     | 
| 
      
 31 
     | 
    
         
            +
                  _this.toggler.innerHTML = _this.message_open;
         
     | 
| 
      
 32 
     | 
    
         
            +
            		  _this.status = 'closed';
         
     | 
| 
      
 33 
     | 
    
         
            +
                };
         
     | 
| 
      
 34 
     | 
    
         
            +
            		dojo.lfx.html.wipeOut(this.togglee, this.duration, 
         
     | 
| 
      
 35 
     | 
    
         
            +
                                      dojo.lfx.easeOut, callback).play();
         
     | 
| 
      
 36 
     | 
    
         
            +
            	}
         
     | 
| 
      
 37 
     | 
    
         
            +
            	this.explode = function(){
         
     | 
| 
      
 38 
     | 
    
         
            +
                var _this = this;
         
     | 
| 
      
 39 
     | 
    
         
            +
                var callback = function() {
         
     | 
| 
      
 40 
     | 
    
         
            +
                  _this.toggler.innerHTML = _this.message_close;
         
     | 
| 
      
 41 
     | 
    
         
            +
            		  _this.status = 'open';
         
     | 
| 
      
 42 
     | 
    
         
            +
                };
         
     | 
| 
      
 43 
     | 
    
         
            +
            		dojo.lfx.html.wipeIn(this.togglee, this.duration, 
         
     | 
| 
      
 44 
     | 
    
         
            +
                                      dojo.lfx.easeOut, callback).play();
         
     | 
| 
      
 45 
     | 
    
         
            +
            	}
         
     | 
| 
      
 46 
     | 
    
         
            +
            	this.fillInTemplate = function() {
         
     | 
| 
      
 47 
     | 
    
         
            +
                if(this.status == 'closed') {
         
     | 
| 
      
 48 
     | 
    
         
            +
                  this.implode();
         
     | 
| 
      
 49 
     | 
    
         
            +
                } else {
         
     | 
| 
      
 50 
     | 
    
         
            +
                  this.toggler.innerHTML = this.message_close;
         
     | 
| 
      
 51 
     | 
    
         
            +
                }
         
     | 
| 
      
 52 
     | 
    
         
            +
                this.duration = 500;
         
     | 
| 
      
 53 
     | 
    
         
            +
                this.toggler.className = this.css_class;
         
     | 
| 
      
 54 
     | 
    
         
            +
            	}
         
     | 
| 
      
 55 
     | 
    
         
            +
            }
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            dojo.inherits(ywesee.widget.ContentToggler, dojo.widget.HtmlWidget);
         
     | 
| 
      
 59 
     | 
    
         
            +
            dojo.widget.tags.addParseTreeHandler("dojo:contenttoggler");
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
         Binary file 
     | 
| 
         @@ -0,0 +1,202 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Html::Util::Lookandfeel -- bbmb.ch -- 15.09.2006 -- hwyss@ywesee.com
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'sbsm/lookandfeel'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            module BBMB
         
     | 
| 
      
 7 
     | 
    
         
            +
              module Html
         
     | 
| 
      
 8 
     | 
    
         
            +
                module Util
         
     | 
| 
      
 9 
     | 
    
         
            +
            class Lookandfeel < SBSM::Lookandfeel
         
     | 
| 
      
 10 
     | 
    
         
            +
              DICTIONARIES = {
         
     | 
| 
      
 11 
     | 
    
         
            +
                "de"  =>  {
         
     | 
| 
      
 12 
     | 
    
         
            +
                  :additional_info          =>  "Zusatzinformationen",
         
     | 
| 
      
 13 
     | 
    
         
            +
                  :address1                 =>  "Adresse",
         
     | 
| 
      
 14 
     | 
    
         
            +
                  :backorder                =>  "im Rückstand",
         
     | 
| 
      
 15 
     | 
    
         
            +
                  :barcode_button           =>  "Barcode-Leser",
         
     | 
| 
      
 16 
     | 
    
         
            +
                  :barcode_empty            =>  "Es sind keine Barcodes im Leser.",
         
     | 
| 
      
 17 
     | 
    
         
            +
                  :barcode_none             =>  "Es konnte keine Verbindung zum Barcode-Leser hergestellt werden.",
         
     | 
| 
      
 18 
     | 
    
         
            +
                  :barcode_usb              =>  "Download USB-Treiber",
         
     | 
| 
      
 19 
     | 
    
         
            +
                  :barcode_wait             =>  "Einen Moment, bitte...",
         
     | 
| 
      
 20 
     | 
    
         
            +
                  :canton                   =>  "Kanton",
         
     | 
| 
      
 21 
     | 
    
         
            +
                  :change_pass              =>  "Passwort ändern",
         
     | 
| 
      
 22 
     | 
    
         
            +
                  :clear_favorites          =>  "Schnellb. löschen",
         
     | 
| 
      
 23 
     | 
    
         
            +
                  :clear_favorites_confirm  =>  "Wollen Sie wirklich die gesamte Schnellbestellung löschen?",
         
     | 
| 
      
 24 
     | 
    
         
            +
                  :clear_order              =>  "Bestellung löschen",
         
     | 
| 
      
 25 
     | 
    
         
            +
                  :clear_order_confirm      =>  "Wollen Sie wirklich die gesamte Bestellung löschen?",
         
     | 
| 
      
 26 
     | 
    
         
            +
                  :cleartext                =>  "Passwort",
         
     | 
| 
      
 27 
     | 
    
         
            +
                  :city                     =>  "Ort",
         
     | 
| 
      
 28 
     | 
    
         
            +
                  :comment                  =>  "Bemerkungen (max. 60 Zeichen)",
         
     | 
| 
      
 29 
     | 
    
         
            +
                  :commit                   =>  "Bestellung auslösen",
         
     | 
| 
      
 30 
     | 
    
         
            +
                  :confirm_pass             =>  "Bestätigung",
         
     | 
| 
      
 31 
     | 
    
         
            +
                  :contact                  =>  "Kontaktperson",
         
     | 
| 
      
 32 
     | 
    
         
            +
                  :currency                 =>  "Sfr.",
         
     | 
| 
      
 33 
     | 
    
         
            +
                  :currency_format          =>  "Sfr. %.2f",
         
     | 
| 
      
 34 
     | 
    
         
            +
                  :current_order            =>  "Home",
         
     | 
| 
      
 35 
     | 
    
         
            +
                  :customer                 =>  "Kunde",
         
     | 
| 
      
 36 
     | 
    
         
            +
                  :customers                =>  "Kunden",
         
     | 
| 
      
 37 
     | 
    
         
            +
                  :customer_id              =>  "Kundennr",
         
     | 
| 
      
 38 
     | 
    
         
            +
                  :delete                   =>  "Löschen",
         
     | 
| 
      
 39 
     | 
    
         
            +
                  :default_values           =>  "Voreinstellungen",
         
     | 
| 
      
 40 
     | 
    
         
            +
                  :drtitle                  =>  "Titel",
         
     | 
| 
      
 41 
     | 
    
         
            +
                  :ean13                    =>  "EAN-Code",
         
     | 
| 
      
 42 
     | 
    
         
            +
                  :email                    =>  "Email",
         
     | 
| 
      
 43 
     | 
    
         
            +
                  :error                    =>  "Ihre Eingaben konnten nicht gespeichert werden da Angaben fehlen oder nicht korrekt sind.\nBitte ergänzen Sie die rot gekennzeichneten Felder.",
         
     | 
| 
      
 44 
     | 
    
         
            +
                  :e_duplicate_email        =>  "Es gibt bereits ein Benutzerprofil für diese Email-Adresse",
         
     | 
| 
      
 45 
     | 
    
         
            +
                  :e_email_required         =>  "Bitte speichern Sie zuerst eine gültige Email-Adresse",
         
     | 
| 
      
 46 
     | 
    
         
            +
                  :e_empty_pass             =>  "Das Passwort war leer.",
         
     | 
| 
      
 47 
     | 
    
         
            +
                  :e_invalid_ean13          =>  "Der EAN-Code war ungültig.",
         
     | 
| 
      
 48 
     | 
    
         
            +
                  :e_invalid_quantity0      =>  "'",
         
     | 
| 
      
 49 
     | 
    
         
            +
                  :e_invalid_quantity1      =>  "' ist keine gültige Zahl.",
         
     | 
| 
      
 50 
     | 
    
         
            +
                  :e_non_matching_pass      =>  "Das Passwort und die Bestätigung waren nicht identisch.",
         
     | 
| 
      
 51 
     | 
    
         
            +
                  :e_pass_not_set           =>  "Das Passwort konnte nicht gespeichert werden",
         
     | 
| 
      
 52 
     | 
    
         
            +
                  :e_terms_of_service       =>  "Bitte akzeptieren Sie die Allgemeinen Geschäftsbedingungen (\"AGB\") der Sandoz Pharmaceuticals AG, vgl. unten.",
         
     | 
| 
      
 53 
     | 
    
         
            +
                  :e_user_unsaved           =>  "Das Benutzerprofil wurde nicht gespeichert!",
         
     | 
| 
      
 54 
     | 
    
         
            +
                  :false                    =>  "Nein",
         
     | 
| 
      
 55 
     | 
    
         
            +
                  :favorites                =>  "Schnellbestellung",
         
     | 
| 
      
 56 
     | 
    
         
            +
                  :favorite_positions0      =>  "Aktuelle Schnellbest.: ",
         
     | 
| 
      
 57 
     | 
    
         
            +
                  :favorite_positions1      =>  " Positionen",
         
     | 
| 
      
 58 
     | 
    
         
            +
                  :favorite_product         =>  "Zu Schnellbest. hinzufügen",
         
     | 
| 
      
 59 
     | 
    
         
            +
                  :favorite_transfer        =>  "Datei zu Schnellb.",
         
     | 
| 
      
 60 
     | 
    
         
            +
                  :fax                      =>  "Fax",
         
     | 
| 
      
 61 
     | 
    
         
            +
                  :filter_button            =>  "Filter",
         
     | 
| 
      
 62 
     | 
    
         
            +
                  :firstname                =>  "Vorname",
         
     | 
| 
      
 63 
     | 
    
         
            +
                  :generate_pass            =>  "Passwort Generieren",
         
     | 
| 
      
 64 
     | 
    
         
            +
                  :history                  =>  "Umsatz",
         
     | 
| 
      
 65 
     | 
    
         
            +
                  :history_turnover0        =>  "Totalumsatz: ",
         
     | 
| 
      
 66 
     | 
    
         
            +
                  :history_turnover1        =>  "",
         
     | 
| 
      
 67 
     | 
    
         
            +
                  :html_title               =>  "BBMB",
         
     | 
| 
      
 68 
     | 
    
         
            +
                  :increment_order          =>  "Zu Best. hinzufügen",
         
     | 
| 
      
 69 
     | 
    
         
            +
                  :lastname                 =>  "Name",
         
     | 
| 
      
 70 
     | 
    
         
            +
                  :lgpl                     =>  "LGPL",
         
     | 
| 
      
 71 
     | 
    
         
            +
                  :list_price0              =>  '',
         
     | 
| 
      
 72 
     | 
    
         
            +
                  :list_price1              =>  ' Stk. à ',
         
     | 
| 
      
 73 
     | 
    
         
            +
                  :list_price2              =>  '',
         
     | 
| 
      
 74 
     | 
    
         
            +
                  :logged_in_as0            =>  "Sie sind angemeldet als ",
         
     | 
| 
      
 75 
     | 
    
         
            +
                  :logged_in_as1            =>  "",
         
     | 
| 
      
 76 
     | 
    
         
            +
                  :login                    =>  "Anmelden",
         
     | 
| 
      
 77 
     | 
    
         
            +
                  :login_data_saved         =>  "Ihre Anmelde-Daten wurden geändert.",
         
     | 
| 
      
 78 
     | 
    
         
            +
                  :logout                   =>  "Abmelden",
         
     | 
| 
      
 79 
     | 
    
         
            +
                  :logo                     =>  "Sandoz",
         
     | 
| 
      
 80 
     | 
    
         
            +
                  :new_customer             =>  "Neuer Kunde",
         
     | 
| 
      
 81 
     | 
    
         
            +
                  :new_customer_mail        =>  "mailto:info.switzerland@sandoz.com?subject=Neukunde BBMB - bitte Passwort generieren",
         
     | 
| 
      
 82 
     | 
    
         
            +
                  :new_customer_invite      =>  "Bestellen Sie jetzt online. Wir richten für Sie den spezifisch auf Ihre Praxis zugeschnittenen, benutzerfreundlichen E-Shop ein!\nUnser Kundenservice oder unsere Aussendienstmitarbeiter beraten Sie gerne!",
         
     | 
| 
      
 83 
     | 
    
         
            +
                  :next                     =>  ">>",
         
     | 
| 
      
 84 
     | 
    
         
            +
                  :nullify                  =>  "Alles auf 0 setzen",
         
     | 
| 
      
 85 
     | 
    
         
            +
                  :order                    =>  "Archiv - Bestellung",
         
     | 
| 
      
 86 
     | 
    
         
            +
                  :orders                   =>  "Archiv",
         
     | 
| 
      
 87 
     | 
    
         
            +
                  :order_confirmation       =>  "Bestellbestätigung",
         
     | 
| 
      
 88 
     | 
    
         
            +
                  :order_confirmation_text  =>  <<-EOS,
         
     | 
| 
      
 89 
     | 
    
         
            +
            Wenn Sie eine Bestellbestätigung wünschen, bitten wir Sie dieses Feld zu markieren.
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            Se voule ricevere una confirmazione del Suo ordine, voglia attivare il servizio cliccando qui.
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            Si vous aimeriez recevoire une confirmation de votre commande veuillez activer le service ici.
         
     | 
| 
      
 94 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 95 
     | 
    
         
            +
                  :order_problem            =>  <<-EOS,
         
     | 
| 
      
 96 
     | 
    
         
            +
            Beim Versand Ihrer Bestellung ist ein Problem aufgetreten.
         
     | 
| 
      
 97 
     | 
    
         
            +
            Ein Administrator wurde automatisch darüber informiert und wird mit Ihnen Kontakt aufnehmen.
         
     | 
| 
      
 98 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 99 
     | 
    
         
            +
                  :order_product            =>  "Zu Bestellung hinzufügen",
         
     | 
| 
      
 100 
     | 
    
         
            +
                  :order_sent               =>  "Ihre Bestellung wurde an die Sandoz AG versandt.",
         
     | 
| 
      
 101 
     | 
    
         
            +
                  :order_total              =>  "Total Sfr. ",
         
     | 
| 
      
 102 
     | 
    
         
            +
                  :order_transfer           =>  "Datei zu Best.",
         
     | 
| 
      
 103 
     | 
    
         
            +
                  :organisation             =>  "Kunde",
         
     | 
| 
      
 104 
     | 
    
         
            +
                  :pass                     =>  "Passwort",
         
     | 
| 
      
 105 
     | 
    
         
            +
                  :pager_index0             =>  " ",
         
     | 
| 
      
 106 
     | 
    
         
            +
                  :pager_index1             =>  " bis ",
         
     | 
| 
      
 107 
     | 
    
         
            +
                  :pager_index2             =>  " ",
         
     | 
| 
      
 108 
     | 
    
         
            +
                  :pager_total0             =>  " von ",
         
     | 
| 
      
 109 
     | 
    
         
            +
                  :pager_total1             =>  "",
         
     | 
| 
      
 110 
     | 
    
         
            +
                  :pcode                    =>  "Pharmacode",
         
     | 
| 
      
 111 
     | 
    
         
            +
                  :phone_business           =>  "Tel. Geschäft",
         
     | 
| 
      
 112 
     | 
    
         
            +
                  :phone_mobile             =>  "Tel. Mobile",
         
     | 
| 
      
 113 
     | 
    
         
            +
                  :phone_private            =>  "Tel. Privat",
         
     | 
| 
      
 114 
     | 
    
         
            +
                  :plz                      =>  "PLZ",
         
     | 
| 
      
 115 
     | 
    
         
            +
                  :positions0               =>  "Aktuelle Bestellung: ",
         
     | 
| 
      
 116 
     | 
    
         
            +
                  :positions1               =>  " Positionen",
         
     | 
| 
      
 117 
     | 
    
         
            +
                  :previous                 =>  "<<",
         
     | 
| 
      
 118 
     | 
    
         
            +
                  :price_range0             =>  "",
         
     | 
| 
      
 119 
     | 
    
         
            +
                  :price_range1             =>  " bis ",
         
     | 
| 
      
 120 
     | 
    
         
            +
                  :price_range2             =>  "",
         
     | 
| 
      
 121 
     | 
    
         
            +
                  :priority                 =>  "Versandart",
         
     | 
| 
      
 122 
     | 
    
         
            +
                  :priority_0               =>  "Nichts Auswählen",
         
     | 
| 
      
 123 
     | 
    
         
            +
                  :priority_1               =>  "Post",
         
     | 
| 
      
 124 
     | 
    
         
            +
                  :priority_13              =>  "Express Mond",
         
     | 
| 
      
 125 
     | 
    
         
            +
                  :priority_16              =>  "Express Freitag",
         
     | 
| 
      
 126 
     | 
    
         
            +
                  :priority_21              =>  "Kurier",
         
     | 
| 
      
 127 
     | 
    
         
            +
                  :priority_40              =>  "Terminfracht",
         
     | 
| 
      
 128 
     | 
    
         
            +
                  :priority_41              =>  "Terminfracht",
         
     | 
| 
      
 129 
     | 
    
         
            +
                  :priority_explain_1       =>  "Lieferung nächster Tag (gem. Konditionenliste)",
         
     | 
| 
      
 130 
     | 
    
         
            +
                  :priority_explain_13      =>  "Lieferung Vormittag nächster Tag (z.L. Kunde)",
         
     | 
| 
      
 131 
     | 
    
         
            +
                  :priority_explain_16      =>  "Lieferung am Samstag (z.L. Kunde)",
         
     | 
| 
      
 132 
     | 
    
         
            +
                  :priority_explain_21      =>  "Lieferung am gleichen Tag (z.L. Kunde)",
         
     | 
| 
      
 133 
     | 
    
         
            +
                  :priority_explain_40      =>  "bis 09:00 Uhr / 80 Sfr. (z.L. Kunde)",
         
     | 
| 
      
 134 
     | 
    
         
            +
                  :priority_explain_41      =>  "bis 10:00 Uhr / 50 Sfr. (z.L. Kunde)",
         
     | 
| 
      
 135 
     | 
    
         
            +
                  :product_found            =>  "Suchresultat: 1 Produkt gefunden",
         
     | 
| 
      
 136 
     | 
    
         
            +
                  :products_found0          =>  "Suchresultat: ",
         
     | 
| 
      
 137 
     | 
    
         
            +
                  :products_found1          =>  " Produkte gefunden",
         
     | 
| 
      
 138 
     | 
    
         
            +
                  :reference                =>  "Interne Bestellnummer",
         
     | 
| 
      
 139 
     | 
    
         
            +
                  :reset                    =>  "Zurücksetzen",
         
     | 
| 
      
 140 
     | 
    
         
            +
                  :save                     =>  "Speichern",
         
     | 
| 
      
 141 
     | 
    
         
            +
                  :search                   =>  "Suchen",
         
     | 
| 
      
 142 
     | 
    
         
            +
                  :search_favorites         =>  "Suchen",
         
     | 
| 
      
 143 
     | 
    
         
            +
                  :show_pass                =>  "Passwort Anzeigen",
         
     | 
| 
      
 144 
     | 
    
         
            +
                  :terms                    =>  "Allgemeine Geschäftsbedingungen",
         
     | 
| 
      
 145 
     | 
    
         
            +
                  :terms_last_accepted      =>  "Bitte akzeptieren Sie die Allgemeinen Geschäftsbedingungen (\"AGB\") der Sandoz Pharmaceuticals AG, vgl. unten.",
         
     | 
| 
      
 146 
     | 
    
         
            +
                  :terms_of_service         =>  <<-EOS,
         
     | 
| 
      
 147 
     | 
    
         
            +
            Hiermit akzeptiere ich die Allgemeinen Geschäftsbedingungen (AGB) der Sandoz Pharmaceuticals AG.
         
     | 
| 
      
 148 
     | 
    
         
            +
            Die aktuelle Version unserer AGB kann auf unserer Website <a href='http://www.generika.ch' target='_blank'>www.generika.ch</a> eingesehen und <a href='http://www.generika.ch/pdf/AGB_D.pdf' target='_blank'>heruntergeladen</a> werden.
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
            J'accepte les Conditions Générales de Vente (CGV) de la société Sandoz Pharmaceuticals SA.
         
     | 
| 
      
 151 
     | 
    
         
            +
            La version actuelle de nos CGV peut être consultée et <a href='http://www.generika.ch/pdf/AGB_F.pdf' target='_blank'>téléchargée</a> sur notre site Internet <a href='http://www.generiques.ch' target='_blank'>www.generiques.ch</a>.
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
            Accetto le Condizioni Generali di Contratto (CGC) di Sandoz Pharmaceuticals S.A.
         
     | 
| 
      
 154 
     | 
    
         
            +
            La versione aggiornata delle nostre CGC può essere visionata e <a href='http://www.generika.ch/pdf/AGB_I.pdf' target='_blank'>scaricata</a> al nostro sito web <a href='http://www.generici.ch' target='_blank'>www.generici.ch</a>.
         
     | 
| 
      
 155 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 156 
     | 
    
         
            +
                  :th_city                  =>  "Ort",
         
     | 
| 
      
 157 
     | 
    
         
            +
                  :th_commit_time           =>  "Bestellung vom",
         
     | 
| 
      
 158 
     | 
    
         
            +
                  :th_customer_id           =>  "Kundennr",
         
     | 
| 
      
 159 
     | 
    
         
            +
                  :th_description           =>  "Artikelbezeichnung",
         
     | 
| 
      
 160 
     | 
    
         
            +
                  :th_email                 =>  "Email",
         
     | 
| 
      
 161 
     | 
    
         
            +
                  :th_item_count            =>  "Packungen",
         
     | 
| 
      
 162 
     | 
    
         
            +
                  :th_last_login            =>  "Letztes Login",
         
     | 
| 
      
 163 
     | 
    
         
            +
                  :th_order_count           =>  "Best.",
         
     | 
| 
      
 164 
     | 
    
         
            +
                  :th_price                 =>  "Preis",
         
     | 
| 
      
 165 
     | 
    
         
            +
                  :th_price_base            =>  "Preis",
         
     | 
| 
      
 166 
     | 
    
         
            +
                  :th_price_levels          =>  'Staffelpreise',
         
     | 
| 
      
 167 
     | 
    
         
            +
                  :th_quantity              =>  'Menge', 
         
     | 
| 
      
 168 
     | 
    
         
            +
                  :th_order_total           =>  "Endpreis",
         
     | 
| 
      
 169 
     | 
    
         
            +
                  :th_organisation          =>  "Kunde",
         
     | 
| 
      
 170 
     | 
    
         
            +
                  :th_plz                   =>  "PLZ",
         
     | 
| 
      
 171 
     | 
    
         
            +
                  :th_size                  =>  "Positionen",
         
     | 
| 
      
 172 
     | 
    
         
            +
                  :th_total                 =>  "Total",
         
     | 
| 
      
 173 
     | 
    
         
            +
                  :th_valid                 =>  "Aktiviert",
         
     | 
| 
      
 174 
     | 
    
         
            +
                  :title                    =>  "Anrede",
         
     | 
| 
      
 175 
     | 
    
         
            +
                  :title_f                  =>  "Frau",
         
     | 
| 
      
 176 
     | 
    
         
            +
                  :title_m                  =>  "Herr",
         
     | 
| 
      
 177 
     | 
    
         
            +
                  :true                     =>  "Ja",
         
     | 
| 
      
 178 
     | 
    
         
            +
                  :turnover                 =>  "Umsatz",
         
     | 
| 
      
 179 
     | 
    
         
            +
                  :unavailable0             =>  "Unidentifiziertes Produkt (",
         
     | 
| 
      
 180 
     | 
    
         
            +
                  :unavailable1             =>  ")",
         
     | 
| 
      
 181 
     | 
    
         
            +
                  :version                  =>  "Commit-ID",
         
     | 
| 
      
 182 
     | 
    
         
            +
                  :welcome                  =>  "Willkommen bei Sandoz Pharmaceuticals AG\nBei Fragen wenden Sie sich bitte an den Customer Service (<a href='mailto:Customer.Service_ch@sandoz.com'>Customer.Service_ch@sandoz.com</a>) Tel. 0800 858 885",
         
     | 
| 
      
 183 
     | 
    
         
            +
                  :ywesee                   =>  "ywesee.com",
         
     | 
| 
      
 184 
     | 
    
         
            +
                }
         
     | 
| 
      
 185 
     | 
    
         
            +
              }
         
     | 
| 
      
 186 
     | 
    
         
            +
              ENABLED = {
         
     | 
| 
      
 187 
     | 
    
         
            +
                :terms_of_service => true,
         
     | 
| 
      
 188 
     | 
    
         
            +
              }
         
     | 
| 
      
 189 
     | 
    
         
            +
              RESOURCES = {
         
     | 
| 
      
 190 
     | 
    
         
            +
                :activex    => 'activex',
         
     | 
| 
      
 191 
     | 
    
         
            +
                :css        => 'bbmb.css',
         
     | 
| 
      
 192 
     | 
    
         
            +
                :dojo_js    => 'dojo/dojo.js',
         
     | 
| 
      
 193 
     | 
    
         
            +
                :javascript => 'javascript',
         
     | 
| 
      
 194 
     | 
    
         
            +
                :logo       => 'logo.png',
         
     | 
| 
      
 195 
     | 
    
         
            +
              }
         
     | 
| 
      
 196 
     | 
    
         
            +
              def navigation
         
     | 
| 
      
 197 
     | 
    
         
            +
                zone_navigation + super
         
     | 
| 
      
 198 
     | 
    
         
            +
              end
         
     | 
| 
      
 199 
     | 
    
         
            +
            end
         
     | 
| 
      
 200 
     | 
    
         
            +
                end
         
     | 
| 
      
 201 
     | 
    
         
            +
              end
         
     | 
| 
      
 202 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/bbmb/sandoz.rb
    ADDED
    
    
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Html::State::Viral::Customer -- sandoz.bbmb.ch -- 20.11.2007 -- hwyss@ywesee.com
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'bbmb/html/state/viral/customer'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'bbmb/html/state/change_password'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module BBMB
         
     | 
| 
      
 8 
     | 
    
         
            +
              module Html
         
     | 
| 
      
 9 
     | 
    
         
            +
                module State
         
     | 
| 
      
 10 
     | 
    
         
            +
                  module Viral
         
     | 
| 
      
 11 
     | 
    
         
            +
            module Customer 
         
     | 
| 
      
 12 
     | 
    
         
            +
              def change_pass
         
     | 
| 
      
 13 
     | 
    
         
            +
                ChangePassword.new(@session, _customer)
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
              unless(instance_methods.include?("__extension_zone_navigation__"))
         
     | 
| 
      
 16 
     | 
    
         
            +
                alias :__extension_zone_navigation__ :zone_navigation
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
              def zone_navigation
         
     | 
| 
      
 19 
     | 
    
         
            +
                __extension_zone_navigation__.push(:change_pass)
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,123 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # encoding: utf-8
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Util::CsvImporter -- sandoz.bbmb.ch -- 19.11.2007 -- hwyss@ywesee.com
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            require 'bbmb/model/customer'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'bbmb/util/mail'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'yus/entity'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            module BBMB
         
     | 
| 
      
 10 
     | 
    
         
            +
              module Util
         
     | 
| 
      
 11 
     | 
    
         
            +
            class CsvImporter
         
     | 
| 
      
 12 
     | 
    
         
            +
              def import(io, persistence=BBMB.persistence)
         
     | 
| 
      
 13 
     | 
    
         
            +
                count = 0
         
     | 
| 
      
 14 
     | 
    
         
            +
                if io.respond_to?(:path)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  get_encoding =  `file --brief "#{io.path}"`
         
     | 
| 
      
 16 
     | 
    
         
            +
                  io.set_encoding('ISO-8859-1', 'UTF-8') if /^ISO-8859/.match(get_encoding)
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                io.each { |line|
         
     | 
| 
      
 20 
     | 
    
         
            +
                        next if line.size < 5
         
     | 
| 
      
 21 
     | 
    
         
            +
                  record = line.split("\t")
         
     | 
| 
      
 22 
     | 
    
         
            +
                  if(object = import_record(record))
         
     | 
| 
      
 23 
     | 
    
         
            +
                    persistence.save(object)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                  count += 1
         
     | 
| 
      
 26 
     | 
    
         
            +
                }
         
     | 
| 
      
 27 
     | 
    
         
            +
                postprocess(persistence)
         
     | 
| 
      
 28 
     | 
    
         
            +
                count
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
              def postprocess(persistence=BBMB.persistence)
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
              def string(str)
         
     | 
| 
      
 33 
     | 
    
         
            +
                str = str.to_s.strip
         
     | 
| 
      
 34 
     | 
    
         
            +
                str.gsub(/\s+/, ' ') unless str.empty? 
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
| 
      
 37 
     | 
    
         
            +
            class CustomerImporter < CsvImporter
         
     | 
| 
      
 38 
     | 
    
         
            +
              CUSTOMER_MAP = {
         
     | 
| 
      
 39 
     | 
    
         
            +
                1   =>  :ean13,
         
     | 
| 
      
 40 
     | 
    
         
            +
                3   =>  :title,
         
     | 
| 
      
 41 
     | 
    
         
            +
                4   =>  :firstname,
         
     | 
| 
      
 42 
     | 
    
         
            +
                5   =>  :lastname,
         
     | 
| 
      
 43 
     | 
    
         
            +
                6   =>  :organisation,
         
     | 
| 
      
 44 
     | 
    
         
            +
                8   =>  :address1,
         
     | 
| 
      
 45 
     | 
    
         
            +
                9   =>  :plz,
         
     | 
| 
      
 46 
     | 
    
         
            +
                10  =>  :city,
         
     | 
| 
      
 47 
     | 
    
         
            +
                11  =>  :phone_business,
         
     | 
| 
      
 48 
     | 
    
         
            +
                12  =>  :fax,
         
     | 
| 
      
 49 
     | 
    
         
            +
              }  
         
     | 
| 
      
 50 
     | 
    
         
            +
              def import_record(record)
         
     | 
| 
      
 51 
     | 
    
         
            +
                customer_id = string(record[0])
         
     | 
| 
      
 52 
     | 
    
         
            +
                ean13 = string(record[1])
         
     | 
| 
      
 53 
     | 
    
         
            +
                return unless(/^\d+$/.match(customer_id))
         
     | 
| 
      
 54 
     | 
    
         
            +
                customer = Model::Customer.find_by_customer_id(customer_id)
         
     | 
| 
      
 55 
     | 
    
         
            +
                if customer.nil? && !ean13.to_s.empty? \
         
     | 
| 
      
 56 
     | 
    
         
            +
                  && (customer = Model::Customer.find_by_ean13(ean13) \
         
     | 
| 
      
 57 
     | 
    
         
            +
                              || Model::Customer.find_by_customer_id(ean13))
         
     | 
| 
      
 58 
     | 
    
         
            +
                  customer.customer_id = customer_id
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
                customer ||= Model::Customer.new(customer_id)
         
     | 
| 
      
 61 
     | 
    
         
            +
                CUSTOMER_MAP.each { |idx, name|
         
     | 
| 
      
 62 
     | 
    
         
            +
                  unless customer.protects? name
         
     | 
| 
      
 63 
     | 
    
         
            +
                    customer.send("#{name}=", string(record[idx]))
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
                }
         
     | 
| 
      
 66 
     | 
    
         
            +
                customer
         
     | 
| 
      
 67 
     | 
    
         
            +
              rescue Yus::DuplicateNameError => err
         
     | 
| 
      
 68 
     | 
    
         
            +
                @duplicates.push(err)
         
     | 
| 
      
 69 
     | 
    
         
            +
                nil
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
      
 72 
     | 
    
         
            +
            class ProductImporter < CsvImporter
         
     | 
| 
      
 73 
     | 
    
         
            +
              PRODUCT_MAP = {
         
     | 
| 
      
 74 
     | 
    
         
            +
                1   =>  :description_de,
         
     | 
| 
      
 75 
     | 
    
         
            +
                2   =>  :description_fr,
         
     | 
| 
      
 76 
     | 
    
         
            +
                3   =>  :ean13,
         
     | 
| 
      
 77 
     | 
    
         
            +
                4   =>  :pcode,    
         
     | 
| 
      
 78 
     | 
    
         
            +
                5   =>  :price,
         
     | 
| 
      
 79 
     | 
    
         
            +
              }
         
     | 
| 
      
 80 
     | 
    
         
            +
              def initialize
         
     | 
| 
      
 81 
     | 
    
         
            +
                super
         
     | 
| 
      
 82 
     | 
    
         
            +
                @active_products = {}
         
     | 
| 
      
 83 
     | 
    
         
            +
              end
         
     | 
| 
      
 84 
     | 
    
         
            +
              def import_record(record)
         
     | 
| 
      
 85 
     | 
    
         
            +
                article_number = string(record[0])
         
     | 
| 
      
 86 
     | 
    
         
            +
                return unless(/^\d+$/.match(article_number))
         
     | 
| 
      
 87 
     | 
    
         
            +
                @active_products.store article_number, true
         
     | 
| 
      
 88 
     | 
    
         
            +
                product = Model::Product.find_by_article_number(article_number) \
         
     | 
| 
      
 89 
     | 
    
         
            +
                  || Model::Product.new(article_number)
         
     | 
| 
      
 90 
     | 
    
         
            +
                PRODUCT_MAP.each { |idx, name|
         
     | 
| 
      
 91 
     | 
    
         
            +
                  value = string(record[idx])
         
     | 
| 
      
 92 
     | 
    
         
            +
                  writer = "#{name}="
         
     | 
| 
      
 93 
     | 
    
         
            +
                  case name
         
     | 
| 
      
 94 
     | 
    
         
            +
                  when :description_de
         
     | 
| 
      
 95 
     | 
    
         
            +
                    product.description.de = value
         
     | 
| 
      
 96 
     | 
    
         
            +
                  when :description_fr
         
     | 
| 
      
 97 
     | 
    
         
            +
                    product.description.fr = value
         
     | 
| 
      
 98 
     | 
    
         
            +
                  else
         
     | 
| 
      
 99 
     | 
    
         
            +
                    product.send(writer, value)
         
     | 
| 
      
 100 
     | 
    
         
            +
                  end
         
     | 
| 
      
 101 
     | 
    
         
            +
                }
         
     | 
| 
      
 102 
     | 
    
         
            +
                product
         
     | 
| 
      
 103 
     | 
    
         
            +
              end
         
     | 
| 
      
 104 
     | 
    
         
            +
              def postprocess(persistence)
         
     | 
| 
      
 105 
     | 
    
         
            +
                return if(@active_products.empty?)
         
     | 
| 
      
 106 
     | 
    
         
            +
                deletables = []
         
     | 
| 
      
 107 
     | 
    
         
            +
                persistence.all(BBMB::Model::Product) { |product|
         
     | 
| 
      
 108 
     | 
    
         
            +
                  unless(@active_products.include?(product.article_number))
         
     | 
| 
      
 109 
     | 
    
         
            +
                    deletables.push product
         
     | 
| 
      
 110 
     | 
    
         
            +
                  end
         
     | 
| 
      
 111 
     | 
    
         
            +
                }
         
     | 
| 
      
 112 
     | 
    
         
            +
                persistence.all(BBMB::Model::Customer) { |customer|
         
     | 
| 
      
 113 
     | 
    
         
            +
                  [customer.current_order, customer.favorites].each { |order|
         
     | 
| 
      
 114 
     | 
    
         
            +
                    deletables.each { |product|
         
     | 
| 
      
 115 
     | 
    
         
            +
                      order.add(0, product)
         
     | 
| 
      
 116 
     | 
    
         
            +
                    }
         
     | 
| 
      
 117 
     | 
    
         
            +
                  }
         
     | 
| 
      
 118 
     | 
    
         
            +
                }
         
     | 
| 
      
 119 
     | 
    
         
            +
                persistence.delete(*deletables) unless(deletables.empty?)
         
     | 
| 
      
 120 
     | 
    
         
            +
              end
         
     | 
| 
      
 121 
     | 
    
         
            +
            end
         
     | 
| 
      
 122 
     | 
    
         
            +
              end
         
     | 
| 
      
 123 
     | 
    
         
            +
            end
         
     | 
    
        data/readme.md
    ADDED
    
    | 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # sandoz.bbmb.ch
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * https://github.com/zdavatz/sandoz.bbmb.ch.git
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ## DESCRIPTION:
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            Sandoz skin for BBMB
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            ## INSTALL:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            * bundle install
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            ## TEST:
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            Only unit tests for csv-importer.
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            The specs have not yet been ported from selenium to watir.
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            ## DEVELOPERS:
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            * Zeno R.R. Davatz
         
     | 
| 
      
 23 
     | 
    
         
            +
            * Hannes Wyss (up to Version 1.0)
         
     | 
| 
      
 24 
     | 
    
         
            +
            * Niklaus Giger (ported to Ruby 2.3.0)
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            ## LICENSE:
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            * GPLv2
         
     |