Browse Source

commit inicial

Rodney Enciso Arias 8 years ago
commit
da5a3b1fbf
9 changed files with 267 additions and 0 deletions
  1. 2 0
      __init__.py
  2. BIN
      __init__.pyc
  3. 22 0
      __openerp__.py
  4. 22 0
      models.py
  5. BIN
      models.pyc
  6. 88 0
      static/src/css/main.css
  7. 78 0
      static/src/js/main.js
  8. 31 0
      static/src/xml/data.xml
  9. 24 0
      static/src/xml/qweb.xml

+ 2 - 0
__init__.py

@@ -0,0 +1,2 @@
+
+import models

BIN
__init__.pyc


+ 22 - 0
__openerp__.py

@@ -0,0 +1,22 @@
+{
+    'name' : 'Point Of Sale Delivery',
+    'summary': 'Point Of Sale Delivery',
+    'description':
+        """
+Point Of Sale Driver
+=====================
+    adds a button in "point of sales ui" to select a delivery driver 
+        """,
+    'version': '8.0.4.0',
+    'category': 'Point of Sale',
+    'author': 'DVIT.me',
+    'website': 'http://dvit.me',
+    'license': 'AGPL-3',
+    'depends' : ['point_of_sale', 'hr'],
+    'data': ['static/src/xml/data.xml'],
+    'qweb': ['static/src/xml/qweb.xml'],
+    'installable': True,
+    'auto_install': False,
+    'application': True,
+
+}

+ 22 - 0
models.py

@@ -0,0 +1,22 @@
+from openerp import api, fields, models
+
+class res_users(models.Model):
+	_inherit = 'res.users'
+	is_delivery = fields.Boolean(string="Delivery ?")
+
+
+class pos_order(models.Model):
+	_inherit = 'pos.order'
+	pos_delivery = fields.Many2one(comodel_name='res.users', string="Delivery Driver", 
+		domain=[('is_delivery', '=', True)])
+
+	def _order_fields(self, cr, uid, ui_order, context=None):
+		return {
+            'name':         ui_order['name'],
+            'user_id':      ui_order['user_id'] or False,
+            'session_id':   ui_order['pos_session_id'],
+            'lines':        ui_order['lines'],
+            'pos_reference':ui_order['name'],
+            'partner_id':   ui_order['partner_id'] or False,
+            "pos_delivery": ui_order['pos_delivery'],
+        }

BIN
models.pyc


+ 88 - 0
static/src/css/main.css

@@ -0,0 +1,88 @@
+.pos .pos-topheader .driver-button {
+    float: right;
+height: 48px;
+padding-left: 16px;
+padding-right: 16px;
+border-right: 1px solid rgb(41, 41, 41);
+border-left: 1px solid rgb(41, 41, 41);
+line-height: 24px;
+text-align: center;
+cursor: pointer;
+background: rgb(138, 138, 138) none repeat scroll 0% 0%;
+color: white;
+font-weight: bold;
+}
+
+.dialog-popup-driver {
+    background-color: #fdfdff;
+z-index: 100001;
+position: fixed;
+left: 100px;
+top: 20px;
+right: 100px;
+bottom: 20px;
+opacity: .95;
+box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
+text-align: center;
+min-height: 93px;
+min-width: 398px;
+overflow: auto;
+}
+
+.form-group {
+    text-align: center;
+    margin: 10px;
+}
+
+.form-control{
+    font-size: 21px;
+width: 97%;
+margin: 10px;
+}
+
+.driver-label-class{
+    font-size: 22px;
+}
+.list-of-drivers * {margin: 0; padding: 0;}
+
+.list-of-drivers div {
+  margin: 20px;
+}
+
+.list-of-drivers ul {
+  list-style-type: none;
+  width: 100%;
+}
+
+.list-of-drivers h3 {
+  font: bold 20px/1.5 Helvetica, Verdana, sans-serif;
+}
+
+.list-of-drivers li img {
+  float: left;
+  margin: 0 15px 0 0;
+}
+
+.list-of-drivers li p {
+  font: 200 12px/1.5 ;
+}
+
+.list-of-drivers li {
+  padding: 10px;
+  overflow: auto;
+}
+
+.list-of-drivers li:hover {
+  background: #eee;
+  cursor: pointer;
+}
+
+.dialog-popup-driver-overlay{
+    position: fixed;
+height: 100%;
+width: 100%;
+background-color: black;
+opacity: 0.5;
+top: 0px;
+left: 0px;
+}

+ 78 - 0
static/src/js/main.js

@@ -0,0 +1,78 @@
+openerp.pos_driver = function(instance, local) {
+
+    var _t = instance.web._t,
+    _lt = instance.web._lt;
+    var QWeb = instance.web.qweb;
+    var pos = instance.point_of_sale.PosModel;
+
+    instance.point_of_sale.HeaderButtonWidget.include({
+        start: function(){
+            var driver_id;
+            var self = this;
+            var res_users = new instance.web.Model("res.users");
+            res_users.query()
+            .filter([['is_delivery', '=', true]])
+            .all().then(function (users) {
+                $.each(users,function(index, driver){
+                    $(".ul-drivers").append('<li id="' + driver.id + '"><img src="data:image/png;base64,'+ driver.image_small +'" /><h3>' + driver.display_name  + '</h3></li>');
+                });
+                $(".ul-drivers li").click(function(){
+                    $(".ul-drivers li").css("background", "white");
+                    $(".ul-drivers li").css("opacity","1");
+                    $(this).css("background", "rgb(96, 228, 233)");
+                    $(this).css("opacity","0.85");
+                    driver_id = parseInt($(this).attr('id'));
+                    self.pos.get('selectedOrder').set_delivery(driver_id);
+                    $(".driver-dialog").hide();
+                });
+            });
+            this._super();
+            $(".pos-rightheader").append(QWeb.render('pos_driver'));
+            $('body').append(QWeb.render('driver-dialog'));
+            
+            $(".driver-button").click(function(){
+                $(".driver-dialog").show();
+            });
+            $(".dialog-popup-driver-overlay").click(function(){
+                $(".driver-dialog").hide();
+            });
+        },
+    });
+
+    instance.point_of_sale.Order = instance.point_of_sale.Order.extend({
+        set_delivery: function(delivery_id){
+            this.set('pos_driver', delivery_id);
+        },
+        get_delivery: function(){
+            return this.get('pos_driver');
+        },
+
+        export_as_JSON: function() {
+            var orderLines, paymentLines;
+            orderLines = [];
+            (this.get('orderLines')).each(_.bind( function(item) {
+                return orderLines.push([0, 0, item.export_as_JSON()]);
+            }, this));
+            paymentLines = [];
+            (this.get('paymentLines')).each(_.bind( function(item) {
+                return paymentLines.push([0, 0, item.export_as_JSON()]);
+            }, this));
+            return {
+                name: this.getName(),
+                amount_paid: this.getPaidTotal(),
+                amount_total: this.getTotalTaxIncluded(),
+                amount_tax: this.getTax(),
+                amount_return: this.getChange(),
+                lines: orderLines,
+                statement_ids: paymentLines,
+                pos_session_id: this.pos.pos_session.id,
+                partner_id: this.get_client() ? this.get_client().id : false,
+                user_id: this.pos.cashier ? this.pos.cashier.id : this.pos.user.id,
+                uid: this.uid,
+                sequence_number: this.sequence_number,
+                pos_delivery: this.get_delivery() || false,
+            };
+        },
+    });
+    
+}

+ 31 - 0
static/src/xml/data.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <template id="pos_index_inherit" name="petstore_assets" inherit_id="point_of_sale.index">
+            <xpath expr="." position="inside">
+                <link rel="stylesheet" href="/pos_driver/static/src/css/main.css"/>
+                <script type="text/javascript" src="/pos_driver/static/src/js/main.js"/>
+            </xpath>
+        </template>
+        <record id="view_pos_pos_form_inheritid55" model="ir.ui.view">
+            <field name="name">point_of_sale.view_pos_pos_form_inheritid55</field>
+            <field name="model">pos.order</field>
+            <field name="inherit_id" ref="point_of_sale.view_pos_pos_form"/>
+            <field name="arch" type="xml">
+                <field name='session_id' position="after">
+                    <field name="pos_delivery"/>
+                </field>
+            </field>
+        </record>
+        <record id="base_view_users_form_inheritid55" model="ir.ui.view">
+            <field name="name">base.view_users_form_inheritid55</field>
+            <field name="model">res.users</field>
+            <field name="inherit_id" ref="base.view_users_form"/>
+            <field name="arch" type="xml">
+                <field name='active' position="after">
+                    <field name="is_delivery"/>
+                </field>
+            </field>
+        </record>
+    </data>
+</openerp>

+ 24 - 0
static/src/xml/qweb.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<templates xml:space="preserve">
+        <t t-name="pos_driver">
+            <div class="driver-button">
+                <p class="driver">Delivery Driver</p>
+            </div>
+        </t>
+        <t t-name="driver-dialog" >
+            <div class="driver-dialog" style="display:none;">
+                <div class="dialog-popup-driver-overlay"></div>
+                <div class="dialog-popup-driver" >
+                    <div class="list-of-drivers">
+                        <div>
+                            <ul class="ul-drivers">
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </t>
+        <t t-name="notification">
+            
+        </t>
+</templates>