Browse Source

initial commit

robert2206 8 years ago
commit
ac43568805

+ 3 - 0
__init__.py

@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+import controllers
+import models

BIN
__init__.pyc


+ 11 - 0
__openerp__.py

@@ -0,0 +1,11 @@
+# -*- coding: utf-8 -*-
+{
+    'name': "variants_by_company_report",
+    'author': "Your Company",
+    'website': "http://www.yourcompany.com",
+    'category': 'Report',
+    'version': '0.1',
+    'depends': ['base', 'report'],
+    'data': ['templates.xml'],
+    'qweb': ['static/src/xml/*.xml']
+}

+ 20 - 0
controllers.py

@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+from openerp import http
+
+# class VariantsByCompanyReport(http.Controller):
+#     @http.route('/variants_by_company_report/variants_by_company_report/', auth='public')
+#     def index(self, **kw):
+#         return "Hello, world"
+
+#     @http.route('/variants_by_company_report/variants_by_company_report/objects/', auth='public')
+#     def list(self, **kw):
+#         return http.request.render('variants_by_company_report.listing', {
+#             'root': '/variants_by_company_report/variants_by_company_report',
+#             'objects': http.request.env['variants_by_company_report.variants_by_company_report'].search([]),
+#         })
+
+#     @http.route('/variants_by_company_report/variants_by_company_report/objects/<model("variants_by_company_report.variants_by_company_report"):obj>/', auth='public')
+#     def object(self, obj, **kw):
+#         return http.request.render('variants_by_company_report.object', {
+#             'object': obj
+#         })

BIN
controllers.pyc


+ 8 - 0
models.py

@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+from openerp import models, fields, api
+
+# class variants_by_company_report(models.Model):
+#     _name = 'variants_by_company_report.variants_by_company_report'
+
+#     name = fields.Char()

BIN
models.pyc


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

@@ -0,0 +1,24 @@
+/*.oe_view_manager.oe_view_manager_current.report {
+    margin: 2em 2.5em;
+}
+
+.pdf_wrapper {
+    padding: 1.8em 0em;
+}
+
+.pdf_wrapper.no_data {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translateX(-50%) translateY(-50%);
+}
+
+.pdf_wrapper.with_data {
+    width: 100%;
+    height: 100%;
+}
+
+.pdf_wrapper > p {
+    font-size: 16pt;
+    color: #c1c1c1;
+}*/

File diff suppressed because it is too large
+ 9 - 0
static/src/js/jquery.serializejson.min.js


File diff suppressed because it is too large
+ 0 - 0
static/src/js/jspdf.min.js


File diff suppressed because it is too large
+ 8 - 0
static/src/js/jspdf.plugin.autotable.min.js


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

@@ -0,0 +1,106 @@
+openerp.variants_by_company_report = function (instance, local) {
+
+    local.ReportWidget = instance.Widget.extend({
+        template: 'ReportContainerTemplate',
+        start: function () {
+            this.fetchLocations();
+            this.fetchCategories();
+
+            this.$el.find('#report_form').submit(_.bind(this.submitForm, this));
+        },
+        fetchLocations: function () {
+            var self = this;
+
+            var StockLocation = new instance.web.Model('stock.location');
+            StockLocation.query(['id', 'name', 'display_name']).filter([['usage', '=', 'internal']]).all().then(function (results) {
+                _.each(results, function (item) {
+                    self.$el.find('#current-location').append('<option value="' + item.id + '">' + item.display_name + '</option>');
+                });
+                self.$el.find('#current-location').append('<option value="9999999">Todas las ubicaciones</option>');
+            });
+        },
+        fetchCategories: function () {
+            var self = this;
+
+            var ProductCategory = new instance.web.Model('product.category');
+            ProductCategory.query().filter([['child_id.child_id.type', '=', 'normal'], ['parent_left', '!=', 0]]).all().then(function (results) {
+                _.each(results, function (item) {
+                    self.$el.find('#current-category').append('<option value="' + item.id + '">' + item.display_name + '</option>');
+                });
+                self.$el.find('#current-category').append('<option value="9999999">Todas las ubicaciones</option>');
+            });
+        },
+        fetchQuantByLocation: function (locationId, done) {
+            var StockQuant = new instance.web.Model('stock.quant');
+            StockQuant.query(['product_id', 'qty', 'inventory_value']).filter([['location_id.id', '=', locationId]]).all().then(function (results) {
+                done(results);
+            });
+        },
+        submitForm: function (e) {
+            e.preventDefault();
+            var formData = this.$(e.currentTarget).serializeJSON();
+
+            if (formData.location == 0 | formData.category == 0) {
+                $("#dialog" ).dialog({
+                    autoOpen: true,
+                    resizable: false,
+                    modal: true,
+                    title: 'Atención',
+                    open: function() {
+                        $(this).html('Complete el formulario para generar el reporte');
+                    },
+                    show: {
+                        effect: "shake",
+                        duration: 300
+                    },
+                    hide: {
+                        effect: "fade",
+                        duration: 300
+                    },
+                    buttons: {
+                        Aceptar: function() {
+                            $(this).dialog('close');
+                        }
+                    }
+                });
+
+                return;
+            }
+            var self = this;
+            this.fetchQuantByLocation(formData.location, function (results) {
+                console.log(results);
+            });
+
+            return false;
+        },
+        drawPDF: function (data) {
+            // var columns = ['Product', 'Cantidad'];
+            // var pdfDoc = new window.jsPDF();
+            //
+            // pdfDoc.autoTable(columns, _.map(data, function (item) {
+            //     return  _.values(_.pick(item, 'product_id', 'qty'));
+            // }), {
+            //     theme: 'grid', // 'striped', 'grid' or 'plain',
+            //     styles: {
+            //         fontSize: 8,
+            //         overflow: 'linebreak' // visible, hidden, ellipsize or linebreak
+            //     },
+            //     showHeader: 'firstPage', // 'everyPage', 'firstPage', 'never',
+            //     headerStyles: {
+            //         fontStyle: 'bold',
+            //         fillColor: '#000'
+            //     },
+            //     margin: {
+            //         top: 30
+            //     },
+            //     addPageContent: function (data) {
+            //         pdfDoc.text('Reporte de Productos', 15, 20);
+            //     }
+            // });
+            //
+            // pdfDoc.output('dataurlnewwindow');
+        }
+    });
+
+    instance.web.client_actions.add('variants_by_company_report.action_report', 'instance.variants_by_company_report.ReportWidget');
+}

+ 65 - 0
static/src/xml/report_container.xml

@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<template xml:space="preserve">
+    <t t-name="ReportContainerTemplate">
+        <!-- <div class="oe_view_manager oe_view_manager_current report">
+            <form class="form-inline">
+                <div class="form-group">
+                    <label class="control-label">Ubicación</label>
+                    <select id="current-location" class="form-control input-sm">
+                        <option value="0">Seleccione una ubicación</option>
+                    </select>
+                </div>
+                <div class="form-group">
+                    <label class="control-label">Categoría</label>
+                    <select id="current-category" class="form-control input-sm">
+                        <option value="0">Todas las categorías</option>
+                    </select>
+                </div>
+            </form>
+            <div class="pdf_wrapper no_data">
+                <p>Aún no hay datos</p>
+                <iframe style="display:none;"></iframe>
+            </div>
+        </div> -->
+        <div class="oe_form_container">
+            <div class="oe_form">
+                <div class="">
+                    <header style="padding: 5px;">
+                        <button type="submit" class="oe_button oe_form_button oe_highlight" form="report_form">
+                            <span>Generar Reporte</span>
+                        </button>
+                    </header>
+                    <div class="oe_form_sheetbg">
+                        <div class="oe_form_sheet oe_form_sheet_width">
+                            <div class="oe_title">
+                                <h2>Variantes por Sucursal</h2>
+                            </div>
+                            <div class="oe_clear"></div>
+                            <hr/>
+                            <form id="report_form" class="form-horizontal">
+                                <div class="form-group">
+                                    <label for="current-location" class="col-sm-3 control-label">Ubicación</label>
+                                    <div class="col-sm-5">
+                                        <select id="current-location" class="form-control" name="location">
+                                            <option value="0">Seleccione una ubicación</option>
+                                        </select>
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label for="current-category" class="col-sm-3 control-label">Categoría padre</label>
+                                    <div class="col-sm-5">
+                                        <select id="current-category" class="form-control" name="category">
+                                            <option value="0">Seleccione una categoría</option>
+                                        </select>
+                                    </div>
+                                </div>
+                            </form>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div id="dialog"></div>
+    </t>
+</template>

+ 21 - 0
templates.xml

@@ -0,0 +1,21 @@
+<openerp>
+    <data>
+        <template id="variants_by_company_report.assets_backend" name="variants_by_company_report_assets" inherit_id="web.assets_backend">
+            <xpath expr="." position="inside">
+                <link rel="stylesheet" href="/variants_by_company_report/static/src/css/main.css" />
+                <script type="text/javascript" src="/variants_by_company_report/static/src/js/jquery.serializejson.min.js" />
+                <script type="text/javascript" src="/variants_by_company_report/static/src/js/jspdf.min.js" />
+                <script type="text/javascript" src="/variants_by_company_report/static/src/js/jspdf.plugin.autotable.min.js" />
+                <script type="text/javascript" src="/variants_by_company_report/static/src/js/main.js" />
+            </xpath>
+        </template>
+
+        <record id="variants_by_company_report_action" model="ir.actions.client">
+            <field name="name">Variants Report</field>
+            <field name="tag">variants_by_company_report.action_report</field>
+        </record>
+
+        <menuitem id="others_report_menu" name="Otros Reportes" parent="base.menu_reporting" />
+        <menuitem id="variants_by_company_report_menu" parent="others_report_menu" name="Variantes por Sucursal" action="variants_by_company_report_action"/>
+    </data>
+</openerp>

Some files were not shown because too many files changed in this diff