瀏覽代碼

Impresión de contrato inmobiliaria

sebastian 5 年之前
當前提交
8a4404a01e
共有 10 個文件被更改,包括 618 次插入0 次删除
  1. 1 0
      .gitignore
  2. 2 0
      __init__.py
  3. 23 0
      __openerp__.py
  4. 148 0
      models.py
  5. 二進制
      static/description/icon.png
  6. 4 0
      static/src/css/style.css
  7. 404 0
      static/src/js/main.js
  8. 8 0
      static/src/xml/main.xml
  9. 18 0
      views/account_invoice_view.xml
  10. 10 0
      views/template.xml

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+*.pyc

+ 2 - 0
__init__.py

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

+ 23 - 0
__openerp__.py

@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+{
+    'name' : 'Impresion de contrato inmobiliaria',
+    'version' : '1.0',
+    'description' : """
+Este modulo Permite realizar impresión del contrato inmobiliaria
+    """,
+    'author' : 'Eiru',
+    'category' : 'Service',
+    'depends' : [
+        'account',
+        'eiru_num2word',
+        'partner_extra_data_crifin',
+        'eiru_inmobiliaria',
+    ],
+    'data' : [
+        'views/template.xml',
+        'views/account_invoice_view.xml'
+    ],
+    'qweb' : ['static/src/xml/*.xml',],
+    'installable' : True,
+    'auto_install' : False,
+}

+ 148 - 0
models.py

@@ -0,0 +1,148 @@
+# -*- coding: utf-8 -*-
+
+from openerp import models, fields, api
+
+class AccountInvoice(models.Model):
+	_inherit = 'account.invoice'
+
+	@api.model
+	def getAccountInvoicePagare(self,domain):
+		AccountInvoice = self.env['account.invoice'].search(domain)
+		values = []
+		for invoice in AccountInvoice:
+			values.append({
+                # ID
+				'id': invoice.id,
+                'number': invoice.number,
+                'origin': invoice.origin,
+                'date_invoice': invoice.date_invoice,
+                'user_name': invoice.user_id.name,
+                'amount_untaxed': invoice.amount_untaxed,
+                'amount_tax': invoice.amount_untaxed,
+                'amount_total': invoice.amount_total,
+				'comment': invoice.comment or "",
+
+                # PARTNER INFO
+				'partner_id':[{
+					'id': invoice.partner_id.id,
+					'name': invoice.partner_id.name or "",
+					'ruc': invoice.partner_id.ruc or "",
+					'address': invoice.partner_id.street or "",
+					'city': invoice.partner_id.city or "",
+					'barrio': invoice.partner_id.street2 or "",
+					'email': invoice.partner_id.email,
+					'estado_civil': invoice.partner_id.estado_civil or "",
+	                'phone': invoice.partner_id.phone or "",
+	                'mobile': invoice.partner_id.mobile or "",
+					'trab_empresa': invoice.partner_id.trab_empresa or "",
+					'trab_telefono': invoice.partner_id.trab_telefono,
+					'trab_street': invoice.partner_id.trab_street or "",
+	                'trab_city': invoice.partner_id.trab_city or "",
+	                'trab_cargo': invoice.partner_id.trab_cargo or "",
+					'trab_antiguedad_a': invoice.partner_id.trab_antiguedad_a or "",
+					'trab_antiguedad_m': invoice.partner_id.trab_antiguedad_m or "",
+					'casa_propia': invoice.partner_id.casa_propia or "",
+				    'casa_alquiler': invoice.partner_id.casa_alquiler or "",
+					'trab_salario': invoice.partner_id.trab_salario or "",
+					'conyuge_id':[{
+					        'cony_id': invoice.partner_id.conyuge_id.id or "",
+							'cony_name': invoice.partner_id.conyuge_id.name or "",
+							'cony_ruc': invoice.partner_id.conyuge_id.ruc or "",
+			                'cony_phone': invoice.partner_id.conyuge_id.phone or "",
+			                'cony_mobile': invoice.partner_id.conyuge_id.mobile or "",
+							'cony_city': invoice.partner_id.conyuge_id.city or "",
+							'cony_street': invoice.partner_id.conyuge_id.street or "",
+			                'cony_trab_empresa': invoice.partner_id.conyuge_id.trab_empresa or "",
+			                'cony_trab_telefono': invoice.partner_id.conyuge_id.trab_telefono or "",
+					}],
+					'ref_personal_ids': [{
+						'id': refPartner.id or "",
+						'name': refPartner.name or "",
+						'phone': refPartner.phone or "",
+					    'email': refPartner.email or "",
+					} for refPartner in invoice.partner_id.ref_personal_ids],
+
+					'ref_comercial_ids': [{
+						'id': comPartner.id  or "",
+						'name': comPartner.name or "",
+						'phone': comPartner.phone or "",
+					} for comPartner in invoice.partner_id.ref_comercial_ids],
+
+				}],
+                # COMPANY INFO
+				'company_id': [{
+					'id':invoice.user_id.company_id.id,
+	                'name': invoice.user_id.company_id.name,
+	                'logo': invoice.user_id.company_id.logo,
+	                'phone': invoice.user_id.company_id.phone,
+				}],
+				# CURRENCY INFO
+				'currency_id':[{
+					'id': invoice.currency_id.id,
+					'name': invoice.currency_id.name,
+					'symbol': invoice.currency_id.symbol,
+					'thousands_separator': invoice.currency_id.thousands_separator,
+					'decimal_separator': invoice.currency_id.decimal_separator,
+					'decimal_places': invoice.currency_id.decimal_places,
+					'symbol_position': invoice.currency_id.symbol,
+				}],
+			})
+
+		return values
+
+	@api.model
+	def getAccountInvoicePagareQuota(self,domain):
+		AccountInvoice = self.env['account.invoice'].search(domain)
+		AccountMoveLine = self.env['account.move.line'].search([('move_id','=',AccountInvoice.number),('debit','>',0),('date_maturity','!=', False)],order='date_maturity')
+
+		i = 1
+		x = len(AccountMoveLine)
+		values = []
+
+		for line in AccountMoveLine:
+			amount = 0
+			value = 0
+			state = 'No pagado'
+			if(line.reconcile_ref != False):
+				if(line.amount_residual == 0):
+					state = 'Pagado'
+
+				if(line.amount_residual > 0):
+					value = line.debit - line.amount_residual
+					state = 'Amortizado'
+
+			values.append({
+				'date': line.date_maturity,
+				'name': 'Cuota ' + str(i) + ' / ' + str(x),
+				'state': state,
+				'value': value,
+				'amount': line.debit,
+				'residual': line.amount_residual,
+				'tot_cuota': str(x),
+			})
+			i = i + 1
+
+		return values
+
+class AccountInvoiceLine(models.Model):
+	_inherit = 'account.invoice.line'
+
+	@api.model
+	def getAccountInvoiceLinePagare(self,domain):
+		AccountInvoiceLine = self.env['account.invoice.line'].search(domain)
+		values = []
+		for line in AccountInvoiceLine:
+			values.append({
+				'id': line.id or "",
+                'name': line.name or "",
+                'quantity': line.quantity or "",
+                'price_unit': line.price_unit or "",
+                'price_subtotal': line.price_subtotal or "",
+				'product_id': [
+					line.product_id.id or "",
+					line.product_id.list_price or "",
+					line.product_id.t_descripcion or "",
+				],
+			})
+
+		return values

二進制
static/description/icon.png


+ 4 - 0
static/src/css/style.css

@@ -0,0 +1,4 @@
+.contrato_button_box {
+    width: auto;
+    float: left;
+}

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

@@ -0,0 +1,404 @@
+openerp.contrato_inmobiliaria = function (instance, local) {
+    local.widgetInstance = null;
+    local.parentInstance = null;
+
+    local.ContratoInmobiliariaWidget = instance.Widget.extend({
+        template : "contrato_inmobiliaria.ContratoInmobiliaria",
+        jsonDoc:[],
+
+        init:function(parent){
+            this._super(parent);
+        },
+
+        updateId : function(id){
+            var self = this;
+            self.id=id;
+        },
+
+        start: function () {
+            var self = this;
+            this.$el.click(function (e) {
+                self.fecthInitial();
+            });
+        },
+
+        valorNull:function(dato){
+            var valor ="";
+            if (dato){
+                if(dato == true && typeof dato == 'boolean'){
+                    valor=" ";
+                }else{
+                    valor=dato;
+                }
+            }
+            return valor;
+        },
+
+        fecthInitial: function(){
+            var id= openerp.webclient._current_state.id;
+            var self = this;
+            self.fetchAccountInvoice(id).then(function(AccountInvoice){
+                return AccountInvoice;
+            }).then(function(AccountInvoice){
+                self.AccountInvoice = AccountInvoice;
+                return self.fetchAccountInvoiceQuota(id);
+            }).then(function(AccountInvoiceQuota){
+                self.AccountInvoiceQuota = AccountInvoiceQuota;
+                return self.fetchAccountInvoiceLine();
+            }).then(function(AccountInvoiceLine){
+                self.AccountInvoiceLine = AccountInvoiceLine;
+                return self.drawPDF();
+            });
+            return false;
+        },
+
+        fetchAccountInvoice: function(id){
+            var domain=[['id','=', id]];
+            var AccountInvoice = new instance.web.Model('account.invoice');
+            return AccountInvoice.call('getAccountInvoicePagare',[domain], {
+                context: new instance.web.CompoundContext()
+            });
+        },
+
+        fetchAccountInvoiceQuota: function(id){
+            var domain=[['id','=', id]];
+            var AccountInvoice = new instance.web.Model('account.invoice');
+            return AccountInvoice.call('getAccountInvoicePagareQuota',[domain], {
+                context: new instance.web.CompoundContext()
+            });
+        },
+
+        fetchAccountInvoiceLine: function () {
+            var self = this;
+            var invoice_ids = _.flatten(_.map(self.AccountInvoice,function(map){
+                return map.id;
+            }));
+            var domain=[['invoice_id','in',invoice_ids]];
+            var AccountInvoiceLine = new instance.web.Model('account.invoice.line');
+            return AccountInvoiceLine.call('getAccountInvoiceLinePagare',[domain], {
+                context: new instance.web.CompoundContext()
+            });
+        },
+
+        drawPDF:function(){
+            var self = this;
+            var AccountInvoice = self.AccountInvoice;
+            var CurrencyBase = self.AccountInvoice[0].currency_id[0];
+            var docItem = [];
+            var docQuotaItem = [];
+            var getColumns = [];
+            var getColumnsQuota = [];
+
+
+            var pdfDoc = new jsPDF("p","mm","legal");
+
+            pdfDoc.autoTable(getColumns, docItem, {
+
+                addPageContent: function (data) {
+
+                    // // Cuadro principal
+                    // pdfDoc.rect(10, 30, pdfDoc.internal.pageSize.getWidth() - 20 , 40, 'S');
+                    // pdfDoc.rect(10, 40, pdfDoc.internal.pageSize.getWidth() - 20 , 40, 'S');
+                    var texto_terreno ="";
+                    var list_price = 0;
+                    var monto_cuota = 0;
+                    _.each(self.AccountInvoiceLine, function(item){
+                         texto_terreno = item.product_id[2];
+                         list_price = item.product_id[1];
+                         monto_cuota = item.price_unit;
+                    });
+
+                    var total_in_letters = instance.web.num2word(list_price);
+                    var cuota_in_letters = instance.web.num2word(monto_cuota);
+                    pdfDoc.setFontSize(11);
+                    pdfDoc.setFontStyle('bold');
+                    pdfDoc.setTextColor(20);
+                    pdfDoc.text(80, 25,'CONTRATO DE COMPRA - VENTA');
+
+
+                    pdfDoc.setFontSize(10);
+                    pdfDoc.setFontStyle('bold');
+                    pdfDoc.text(12, 31,'DATOS DEL LOTEAMIENTO');
+
+                    pdfDoc.setFontSize(10);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.text(texto_terreno,12,36,{maxWidth:188,align:'justify'});
+
+                    pdfDoc.setFontSize(10);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.text(12,56,'En Ciudad del Este, Republica del Paraguay, a los ' + moment(AccountInvoice[0].date_invoice).format('DD MMMM YYYY'));
+
+                    pdfDoc.setFontSize(10);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.text(12, 60,'Entre: GRUPO VZ S.A. en adelante (El Vendedor), por una parte y el señor ' + AccountInvoice[0].partner_id[0].name + ' de ');
+                    pdfDoc.text(12, 64,'estado civil ' + AccountInvoice[0].partner_id[0].estado_civil + ' con C.I.N°: ' + AccountInvoice[0].partner_id[0].ruc + '  en adelante El (la) Comprador(a), por la otra, quienes para los');
+                    pdfDoc.text(12, 68,'efectos de este contrato de compra - venta fijan sus domicilios en las casas de las calles ');
+                    pdfDoc.text(12, 72, AccountInvoice[0].partner_id[0].address + ',' + AccountInvoice[0].partner_id[0].city);
+                    pdfDoc.text(12, 76,'respectivamente, convienen en suscribir el presente contrato de compra-venta, que se regirá por las clausulas sgtes.');
+                    pdfDoc.text(12, 80,'PRIMERA: El Vendedor vende y el (la) Comprador (a) compra el lote de terreno descripto precedentemente.');
+                    pdfDoc.text(12, 85,'SEGUNDA: El precio de venta del lote es de ' + accounting.formatMoney(list_price ,CurrencyBase.symbol,CurrencyBase.decimal_places, CurrencyBase.thousands_separator, CurrencyBase.decimal_separator) + ', (' +total_in_letters+')_ ');
+                    pdfDoc.text(12, 89,'Que el (la) Comprador (a) abonará a El Vendedor en cuotas mensuales, iguales y consecutivas de: ' + ' cuotas de ');
+                    pdfDoc.text(12, 93, accounting.formatMoney(monto_cuota ,CurrencyBase.symbol,CurrencyBase.decimal_places, CurrencyBase.thousands_separator, CurrencyBase.decimal_separator) + '(' +cuota_in_letters+'). ');
+                    pdfDoc.text(12, 97,'Cada una, hasta la total cancelación del precio del lote. Todos los pagos deberán ser realizados por el (la) ');
+                    pdfDoc.text(12, 101,'Comprador (a), por mensualidades adelantadas el uno al quince de cada mes, en la Oficina de El Vendedor sito en');
+                    pdfDoc.text(12, 105, 'la calle KM. 4, Edificio EMPORIO DE LA CONSTRUCCION de Ciudad del Este, quien otorgara en cada caso las ');
+                    pdfDoc.text(12, 109,'correspondientes facturas de pago.');
+
+                    var finalY2 = 114
+                    pdfDoc.setFontSize(10);
+                    pdfDoc.setFontStyle('normal');
+                    var paragraph= "TERCERA: El precio del lote y el importe de las cuotas permanecerán fijos e inalterables siempre y cuando el índice de precios al consumidor (IPC) no sufra una variación mayor al diez por ciento (10%) en los doce (12) meses precedentes. Si en los doce meses precedentes el (IPC) sufriera una variación superior al diez por ciento (10%) el saldo impago del precio del lote y las cuotas sufrirán una corrección, pero solamente en el porcentaje que sobrepase el diez por ciento. Si en un plazo inferior a doce (12) meses el (IPC) sufriera una variación superior al diez por ciento (10%) se aplicara la regla precedente tomando como base la proporción correspondiente al tiempo transcurrido y variación del (IPC)";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=30
+                    var paragraph= "CUARTA: Queda expresamente convenido que el mero vencimiento de los plazos fijados en la clausula segunda para el pago de las cuotas, por parte de el(la) Comprador(a), lo hará incurrir en mora de pleno derecho, sin que sea necesario para ello requerimiento judicial o extrajudicial de ninguna clase.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=14
+                    var paragraph= "QUINTA: El Vendedor se obliga a dar posesión inmediata del terreno a el(la) Comprador(a) después de firmado el presente contrato, tenencia esta a titulo precario que ejercerá el(la) Comprador(a) a nombre de El Vendedor hasta la fecha del pago total del precio.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=14
+                    var paragraph= "SEXTA: A requerimiento de el(la) Comprador(a),  El Vendedor le otorgara la escritura de transferencia, toda vez que el(la) Comprador(a) haya abonado el 25% del precio total, quedando el inmueble hipotecado a favor de El Vendedor, en hipoteca de primer rango y en garantía del saldo del precio, hasta la cancelación total de la deuda. Las partes, de común acuerdo, podrán suscribir la escritura de transferencia, en un plazo menor dentro de las mismas condiciones hipotecarias.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=23
+                    var paragraph= "SEPTIMA: Si el(la) Comprador(a) no abonase las cuotas en forma y plazos estipulados, pagara por el retardo en el pago de las cuotas un interés del 2% mensual en concepto de interés moratorio y el 1% mensual en concepto de interés punitorio, sin que ello implique novación, prorroga, o espera, y a ser calculados sobre cada una de las cuotas o mensualidades atrasadas, desde su expiración, sin necesidad de requerimiento judicial o extrajudicial y sin perjuicio de los otros derechos que el presente contrato otorga a El Vendedor.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=23
+                    var paragraph= "OCTAVA: La falta de pago por el(la) Comprador(a), de mas de seis (6) cuotas, producirá la caducidad y/o resolución del presente contrato, por el mero transcurso de dicho termino, conforme al art. 255 inc. C, de la Ley 3.966/190 Orgánica Municipal, Capitulo IV, de los Loteamientos, sin necesidad de interpelación judicial o extrajudicial alguna, debiendo imputarse lo ya abonado, en concepto de indemnización, alquiler del inmueble y gastos generales de El Vendedor, salvo las excepciones siguientes: a) Si la falta de pago expresada tuviere lugar después de haberse abonado el 25% del precio del terreno, El Vendedor solo tendrá la opción de cumplimiento, reputándose vencidas y exigibles todas las demás cuotas. b) Si la falta de pago tuviere lugar antes de haberse abonado el 25% del precio y existieren en el terreno mejoras introducidas por el(la) Comprador(a) por un valor que alcance dicho porcentaje y que no puedan ser retiradas por este(a) en un plazo no mayor de sesenta días. Después de haberse producido la caducidad y/o resolución del presente contrato, el terreno será subastado con las mejoras para cobrarse El Vendedor de su producido, lo que adeudare el(la) Comprador(a), perteneciendo el excedente que resultare de la subasta al dueño de las mejoras.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=46
+                    var paragraph= "NOVENA: Queda entendido, que el precio establecido en la clausula segunda, es del terreno sin empedrado, vereda ni muralla, cuyos costos serán por cuenta exclusiva de el(la) Comprador(a), asimismo, serán de su cuenta en el caso de que la Municipalidad, exija a El Vendedor por no mediar aun la escritura de transferencia, la ejecución de cualquiera de estas obras o el pago de las ejecutadas, como así también la instalación de agua corriente, cloacas, luz eléctrica, etc.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    pdfDoc.addPage();
+
+                    var finalY2 = 30
+                    pdfDoc.setFontSize(10);
+                    pdfDoc.setFontStyle('normal');
+                    var paragraph= "DECIMA: Los gastos e impuestos de las escritura de transferencia del lote de terreno objeto de este contrato, en todos los casos, serán por cuenta exclusiva de el(la) Comprador(a) y que la misma será hecha ante el Escribano Público que designe El Vendedor. El(la) Comprador(a) asume el compromiso expreso e irrevocable de escriturar el lote dentro de los noventa días, desde el pago de la ultima cuota, deslindando de toda responsabilidad a El Vendedor por la imposibilidad del otorgamiento a partir de dicho plazo.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 += 22
+                    var paragraph= "UNDECIMA: El(la) Comprador(a) no podrá transferir los derechos de la presente compra, sin la previa conformidad por escrito de El Vendedor. El(la) Comprador(a) deberá acreditar el pago del impuesto inmobiliario al día para cualquier gestión en la inmobiliaria.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 += 14
+                    var paragraph= "DUODECIMA: El Vendedor entrega/n en este acto a el(la) Comprador(a), la posesión del terreno quien/es asume/n la responsabilidad de tomar las providencias tendientes a la limpieza, construcción y conservación de sus limites. La posesión cedida a el(la) Comprador(a) es entendida con los derechos a protegerla contra todo aquel que intente turbarlo quedando facultado a efectuar por si todas las acciones y defensas que las leyes procesales y el capitulo IV del C.C. le confieren y demás actos posesorios que consoliden su derecho";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 += 23
+                    var paragraph= "DECIMO TERCERA: A partir del año siguiente de la compra, todos los impuestos, tasas y contribuciones existentes y/o a crearse que afecten al lote de terreno objeto de este contrato, es responsabilidad exclusiva de el(la) Comprador(a); El Vendedor queda facultado a realizar el pago de dichos tributos, sin perjuicio de los costos financieros que pudieran ocasionar por el incumplimiento de esta clausula por parte de El Vendedor, conforme a los art. 1808 y 1812 del Código Civil.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=22
+                    var paragraph= "DECIMO CUARTA: Cualquier mejora que el(la) Comprador(a) realicen en su lote deberá estar correctamente ubicada dentro de los limites del lote adquirido. Toda obra, construcción de pozo, alambrado o mejora de cualquier clase que se realice total o parcialmente en el lote ajeno, podrá ser destruida sin necesidad de tramite alguno, por el Propietario o Comprador del lote afectado, sin perjuicio de las acciones legales que correspondan por los daños y perjuicios que se derivasen de la correcta ubicación de las mejoras. El(la) Comprador(a) no tendrán derecho de reclamar con relación a las obras y mejoras realizadas en los lotes ajenos contra El Vendedor, ni contra los propietarios, ni contra los terceros adquirientes de los lotes afectados.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=30
+                    var paragraph= "DECIMO QUINTA: El(la) Comprador(a) deberá dar cumplimiento a las Leyes 294/93 evaluación del impacto ambiental y la Ley 716/96 que tipifica y castiga los delitos ecológicos.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 += 11
+                    var paragraph= "DECIMO SEXTA: El(la) Comprador(a) AUTORIZA A El Vendedor a que caso de mas de 90 días de mora en el cumplimiento del presente contrato o en caso de ejecución judicial del mismo sus datos sean incluidos en los registros de INFORMCONF S.A. u otras firmas similares, conforme (Art. 9 Inc. A) Ley Nro. 1682/2001. El(la) Comprador(a) autoriza a El Vendedor a que proceda a recabar los datos de entidades o instituciones que prestan servicios de información sobre su estado patrimonial, financiero o comercial y/o legales. La autorización se extiende a pedidos futuros que El Vendedor deba solicitar sin que ello obligue al mismo a otorgar créditos o servicios, pudiendo esta información ser transferida a cualquiera de sus filiales, agencias o a terceros que prestan servicios de datos y a su vez ceder estos datos a empresas u organismos que presten servicios de información sobre solvencia.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=36
+                    var paragraph= "DECIMO SEPTIMA: El(la) Comprador(a) constituye domicilio especial, con fuerza legal, a los efectos del cumplimiento y ejecución judicial del contrato, en el domicilio indicado mas arriba, lugar en el cual consideraran validas las notificaciones que se hagan aun cuando no fuera su domicilio real o se hubiera mudado del mismo, aceptando expresamente los partes la Jurisdicción de los Tribunales de Ciudad del Este a fin de la ejecución judicial del contrato. El(la) Comprador(a) podrá hacer cambio de domicilio especial constituido, en cuyo caso deberá comunicar por escrito a El Vendedor a efectos de ser tenido en cuenta a los fines pertinentes del presente CONTRATO DE COMPRA-VENTA.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 +=26
+                    var paragraph= "Quedando así concluido el presente Contrato de Compra Venta, se obligan las partes a su fiel cumplimiento, conforme con las clausulas que anteceden, en prueba de lo cual firman este instrumento en tres ejemplares de un mismo tenor, y a un solo efecto, en el lugar y fecha arriba indicados.";
+                    pdfDoc.text(paragraph,12,finalY2,{maxWidth:188,align:'justify'});
+
+                    finalY2 += 26
+                    pdfDoc.setFontSize(9);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.setTextColor(40);
+                    pdfDoc.text(23,finalY2 ,'......................................... ');
+                    pdfDoc.text(130,finalY2 ,'.............................................................');
+                    finalY2 += 5
+                    pdfDoc.text(26,finalY2, 'GRUPO VZ S.A.');
+                    pdfDoc.text(132,finalY2, self.valorNull(AccountInvoice[0].partner_id[0].name));
+                    finalY2 += 5
+                    pdfDoc.text(26,finalY2,'RUC: 80077711-5 ');
+                    pdfDoc.text(138,finalY2, self.valorNull(AccountInvoice[0].partner_id[0].ruc));
+
+                    //
+                    // // celular
+                    // pdfDoc.rect(115, 90, 90, 7, 'S');
+                    // pdfDoc.text(120, 94,'Celular: ' + self.valorNull(AccountInvoice[0].partner_id[0].mobile));
+                    //
+                    // // Direccion
+                    // pdfDoc.rect(10, 97, 105, 7, 'S');
+                    // pdfDoc.text(12, 101,'Barrio: ' + self.valorNull(AccountInvoice[0].partner_id[0].barrio));
+                    //
+                    // // celular
+                    // pdfDoc.rect(115, 97, 90, 7, 'S');
+                    // pdfDoc.text(120, 101,'Ciudad: ' + self.valorNull(AccountInvoice[0].partner_id[0].city));
+                    //
+                    // // Direccion
+                    // pdfDoc.rect(10, 104, 105, 7, 'S');
+                    // pdfDoc.text(12, 108,'Estado Civil: ' + self.valorNull(AccountInvoice[0].partner_id[0].estado_civil));
+                    //
+                    // // celular
+                    // pdfDoc.rect(115, 104, 90, 7, 'S');
+                    // pdfDoc.text(120, 108,'Email: ' + self.valorNull(AccountInvoice[0].partner_id[0].email));
+                    //
+                    // var tipo;
+                    // if(AccountInvoice[0].partner_id[0].casa_propia == true){
+                    //        tipo = "Vivienda Propia";
+                    //    }else{
+                    //        tipo = "Vivienda Alquilada";
+                    // }
+                    // // TIPO DE VIVIENDA
+                    // pdfDoc.rect(10, 111, 105, 7, 'S');
+                    // pdfDoc.text(12, 115,'Tipo de Vivienda: ' + self.valorNull(tipo));
+                    //
+                    // // celular
+                    // pdfDoc.rect(115, 111, 90, 7, 'S');
+                    // // pdfDoc.text(120, 100,'Vivienda Alquilada: ' + self.valorNull(AccountInvoice[0].partner_id[0].casa_alquiler));
+
+
+
+
+                }
+
+
+
+            });
+
+
+
+
+
+
+            // finalY2 +=20
+            // console.log(finalY2);
+            // if (finaly2 > 220) {
+
+               // pdfDoc.setFontSize(9);
+               // pdfDoc.setFontStyle('bold');
+               // var paragraph="Declaramos que los datos consignados en esta solicitud de MyS DECORART; son fiel reflejo de nuestra situación.";
+               // pdfDoc.text(paragraph,12, 20,{maxWidth:188,align:'justify'});
+               //
+               // pdfDoc.setFontSize(9);
+               // pdfDoc.setFontStyle('normal');
+               // pdfDoc.setTextColor(40);
+               // pdfDoc.text(12, 25,'Firma del Solicitante: _ _ _ _ _ _ _ _ _ _ _ _ _');
+               //
+               // pdfDoc.setFontSize(9);
+               // pdfDoc.setFontStyle('normal');
+               // pdfDoc.setTextColor(40);
+               // pdfDoc.text(12, 30,'Aclaración de Firma y N° de C.I.N°: _ _ _ _ _ _ _ _ _ _ _ _');
+               //
+               // pdfDoc.setFontSize(9);
+               // pdfDoc.setFontStyle('normal');
+               // pdfDoc.setTextColor(40);
+               // pdfDoc.text(12, 35,'Sello de la Empresa:');
+            //
+            // }
+
+            // if (finaly2<220) {
+                // finalY2 +=20
+                // pdfDoc.setFontSize(9);
+                // pdfDoc.setFontStyle('bold');
+                // var paragraph="Declaramos que los datos consignados en esta solicitud de MyS DECORART; son fiel reflejo de nuestra situación.";
+                // pdfDoc.text(paragraph,12, finalY2,{maxWidth:188,align:'justify'});
+                //
+                // finalY2 +=10
+                // pdfDoc.setFontSize(9);
+                // pdfDoc.setFontStyle('normal');
+                // pdfDoc.setTextColor(40);
+                // pdfDoc.text(12, finalY2,'Firma del Solicitante: _ _ _ _ _ _ _ _ _ _ _ _ _');
+                //
+                // finalY2 +=10
+                // pdfDoc.setFontSize(9);
+                // pdfDoc.setFontStyle('normal');
+                // pdfDoc.setTextColor(40);
+                // pdfDoc.text(12, finalY2,'Aclaración de Firma y N° de C.I.N°: _ _ _ _ _ _ _ _ _ _ _ _');
+                //
+                // finalY2 +=10
+                // pdfDoc.setFontSize(9);
+                // pdfDoc.setFontStyle('normal');
+                // pdfDoc.setTextColor(40);
+                // pdfDoc.text(12, finalY2,'Sello de la Empresa:');
+            // }
+
+
+
+
+
+            // pdfDoc.addPage();
+            // pdfDoc.setTextColor(40);
+            // i=0
+            // _.each(self.AccountInvoiceQuota, function(item){
+            //
+            // pdfDoc.setFontSize(14);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.text(80,15+i,'MyS DECORART');
+            // pdfDoc.setFontSize(12);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.rect(10, 18+i, 95, 0, 'S');
+            // pdfDoc.text(12,23+i,'Número de Operación:' + AccountInvoice[0].origin);
+            // pdfDoc.setFontSize(12);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.rect(105, 18+i, 95, 0, 'S');
+            // pdfDoc.text(110,23+i,'Fecha de Operación: ' + moment(AccountInvoice[0].date_invoice).format('DD/MM/YYYY'));
+            // pdfDoc.setFontSize(12);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.text(12,28+i,'C.I. N°: ' + self.valorNull(AccountInvoice[0].partner_id[0].ruc));
+            // pdfDoc.setFontSize(12);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.text(110,28+i,'Vendedor: ' + self.valorNull(AccountInvoice[0].user_name));
+            // pdfDoc.setFontSize(12);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.text(12,33+i,'Cliente: ' + self.valorNull(AccountInvoice[0].partner_id[0].name));
+            // pdfDoc.rect(10, 35+i, 95, 0, 'S');
+            // pdfDoc.setFontSize(12);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.text(12,43+i,'Cuota N°:' + item.name);
+            // pdfDoc.rect(105, 35+i, 95, 0, 'S');
+            // pdfDoc.setFontSize(12);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.text(110,43+i,'Vence: ' + moment(item.date).format('DD/MM/YYYY'));
+            // pdfDoc.setFontSize(12);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.text(12,49+i,'Monto Cuota:' + item.amount);
+            // pdfDoc.setFontSize(12);
+            // pdfDoc.setFontStyle('bold');
+            // pdfDoc.text(110,56+i,'Firma: _ _ _ _ _ _ _ _ _');
+
+              // i=i+55
+              // if (i>220) {
+              //    pdfDoc.addPage();
+              //    i=0
+              // }
+            // });
+
+
+
+
+            pdfDoc.save('Contrato.pdf');
+        },
+    });
+    if (instance.web && instance.web.FormView) {
+        instance.web.FormView.include({
+            load_form: function (record) {
+                this._super.apply(this, arguments);
+                if (this.model !== 'account.invoice') return;
+                local.parentInstance = this;
+                if (local.widgetInstance) {
+                    local.widgetInstance.updateId(record.id);
+                }
+                local.widgetInstance = new local.ContratoInmobiliariaWidget(this);
+                var elemento = this.$el.find('.oe_form').find('.contrato_button_box');
+                local.widgetInstance.appendTo(elemento);
+                local.widgetInstance.updateId(record.id);
+            }
+        });
+    }
+};

+ 8 - 0
static/src/xml/main.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template xml:space="preserve">
+    <t t-name="contrato_inmobiliaria.ContratoInmobiliaria">
+        <button class="print_contrato_inmobiliaria oe_button oe_form_button oe_highlight">
+            <div> Imprimir Contrato</div>
+        </button>
+    </t>
+</template>

+ 18 - 0
views/account_invoice_view.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+	<data>
+        <record model="ir.ui.view" id="account_invoice_button">
+            <field name="name">account.invoice.button</field>
+            <field name="model">account.invoice</field>
+            <field name="inherit_id" ref="account.invoice_form"/>
+            <field name="arch" type="xml">
+				<xpath expr="//button[@name='invoice_print']" position="replace">
+					<div class="contrato_button_box" attrs="{'invisible': [('state','not in',['open','paid'])]}"></div>
+				</xpath>
+				<xpath expr="//button[@name='action_invoice_sent']" position="attributes">
+					<attribute name="invisible">1</attribute>
+				</xpath>
+            </field>
+        </record>
+	</data>
+</openerp>

+ 10 - 0
views/template.xml

@@ -0,0 +1,10 @@
+<openerp>
+    <data>
+        <template id="contrato_inmobiliaria.assets_backend" name="contrato_inmobiliaria_assets" inherit_id="eiru_assets.assets">
+            <xpath expr="." position="inside">
+                <link rel="stylesheet" href="/contrato_inmobiliaria/static/src/css/style.css"/>
+                <script type="text/javascript" src="/contrato_inmobiliaria/static/src/js/main.js"/>
+            </xpath>
+        </template>
+    </data>
+</openerp>