Amigos presentes por favor requiero de su apoyo, en este momento tengo un formulario cuya funcion es calcular la suma de las dimensiones de las piezas: ingreso alto ancho y largo a travez de esta clase (pieces.py)
# -*- coding: utf-8 -*-
#################################################################
# xxxxxxprueba formulario #
#################################################################
from datetime import timedelta, datetime
from openerp import models,fields,api, osv
from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp
###################################################################3
#Clase para llamado del codigo al formulario nuevo
####################################################################
class pickup(models.Model):
_name = 'pickup'
_description = u'Clase pickup'
_rec_name = 'consecutivo'
####################################################################
def _get_consecutivo_num(self, cr, uid, context=None):
last_id = 0
get_count = self.search(cr, uid, [(1, '=', 1)], order='id')
if get_count:
for item in self.browse(cr, uid, get_count, context):
sec = item.consecutivo.split('-')
sec_num = int(sec[1]) + 1
last_id = sec_num
else:
last_id = 1
prefijo = 'PSUG-'
serie = last_id
consecutivo = prefijo + str(serie).rjust(5, '0')
return consecutivo
###################################################################
@api.one
def eliminar_buque(self):
self.write({'eliminado': True, })
return True
###################################################################
@api.one
@api.depends('consecutivo')
def extras(self):
self.consecutivo2 = self.consecutivo
#########################################################################
# datos de pestaña general
#####################################################################
consecutivo = fields.Char(_(u'Numero de Pickup order:'),required=True, help='Este código de pickup orden es generado por el sistema y no puede modificarse.')
creation_date_time = fields.Datetime(_(u'Creation Date / Fecha y hora de creación:'), required=True, default=datetime.today().strftime('%Y-%m-%d %H:%M:%S'))
Pick_up = fields.Datetime(_(u'Pick-up Date / Fecha y hora de Recoger:'), required=True, default=datetime.today().strftime('%Y-%m-%d %H:%M:%S'))
Delivery_date = fields.Datetime(_(u'Delivery Date / Fecha y hora de Entrega:'), required=True, default=datetime.today().strftime('%Y-%m-%d %H:%M:%S'))
employee = fields.Many2one('res.users')
issued_by =fields.Many2one('res.partner', _(u'Issued_by/Emitido por:'), domain=[('customer', '=', True)])
destination_agent = fields.Many2one('res.partner', _(u'Destination Agent/Agente de Destino:'), domain=[('customer', '=', True)])
eliminado = fields.Boolean('Eliminado', default=True)
#####################################################################
# datos de pestaña Shipper
# EL CAMPO SHIPPER TRAE LA INFORMACION DEL MODULO CLIENTE
#####################################################################
shipper = fields.Many2one('res.partner', _(u'Shipper / Name:'), domain=[('customer', '=', True)])
pickup_location = fields.Many2one('res.partner', _(u'Pickup Location / Name:'), domain=[('customer', '=', True)])
# name = fields.Many2one('res.partner', _(u'Name:'), domain=[('customer', '=', True)])
place = fields.Many2one('place',string = 'Place:',required=False)
#string que se utiliza ariiba es para darle nombre al campo en la vista xml utilizando many2one cargando campos.
address = fields.Many2one('res.partner', _(u'Address:'), domain=[('customer', '=', True)])
#####################################################################
# datos de pestaña CONSIGNEE
#####################################################################
CONSIGNEE = fields.Many2one('res.partner', _(u'Consignee / Name:'), domain=[('customer', '=', True)])
#place1 = fields.Many2one('place','id',required=True)
CONSIGNEE_location = fields.Many2one('res.partner', _(u'Delivery Location / Name:'), domain=[('customer', '=', True)])
cliente_to_bill = fields.Many2one('res.partner', _(u'Cliente to bill:'), domain=[('customer', '=', True)])
cliente_to_bill_2 = fields.Many2one('res.partner', domain=[('customer', '=', True)])
address = fields.Many2one('res.partner', _(u'Address:'), domain=[('customer', '=', True)])
#####################################################################
# datos modulo SUPLIER
#####################################################################
Name = fields.Many2one('res.partner', _(u'Name:'), domain=[('customer', '=', True)])
invoice_number = fields.Char(_(u'Invoice Number:'))
Purchase_order_number = fields.Char(_(u'Purchase Order Number:'))
#####################################################################
# datos modulo CARRIER
#####################################################################
carrier = fields.Many2one('res.partner', _(u'Inland Carrier:'), domain=[('customer', '=', True)])
pro_number = fields.Char(_(u'PRO number:'))
driver_name = fields.Char(_(u'Drivers Name:'))
driver_licence = fields.Char(_(u'Drives Licence Number:'))
tracking_number = fields.Char(_(u'Tracking Number:'))
arrier = fields.Many2one('res.partner', _(u'Main Carrier:'), domain=[('customer', '=', True)])
bookin = fields.Char(_(u'Booking Number:'))
preferred = fields.Selection ([('Air', 'Air'), ('Land', 'Land')],_(u'Preferred Mode of Transportation'), required = False)
########################################################################
# datos modulo COMODITIES
#####################################################################
consecutivo2 = fields.Char(string='PK', digits=dp.get_precision('Account'), # este fields hace un llamado a el codigo de Pick Order el cual es la clave en todos los llamados.
store=True, readonly=True, compute='extras', track_visibility='always')
descrip = fields.Text( _(u'Descriptión:'), Translate= True) #Area de Notes solicitada por Global
pack = fields.Many2one('res.partner', _(u'Package Type:'), domain=[('customer', '=', True)])#Este fields debera realizar un llamado a listas predeterminadas.
loc = fields.Many2one('res.partner', _(u'Location:'), domain=[('customer', '=', True)])#Este fields debera realizar un llamado a listas predeterminadas.
notes = fields.Text( _(u'Notes:'), Translate= True) #Area de Notes solicitada por Global
dimensiones = fields.One2many('pieces', 'id', string=_(u'Dimensiones')) #Este campo realiza un llamado al archivo 'pieces' ubicado en la carpeta de models para mostrar los datos en unas listas dinamicas modificables en este caso es una lista de calculos
#####################################################################
#la funcion default me muestra el codigo capturado en _get
#####################################################################
_defaults = {
'consecutivo': _get_consecutivo_num,
}
#####################################################################
#
#####################################################################
_sql_constraints = [
('consecutivo_uniq', 'unique(consecutivo)', 'Este campo debe ser unico'),
]
------------------------------------------------------------------------------------------------------------------------------------FIN DE CODIGO---------------------------
Pickup _Order.py ES EL CODIGO QUE GENERA EL FORMULARIO COMPLEMENTARIO AL ANTERIOR Y MUESTRA LAS VISTAS RESULTANTES DEL CALCULO QUE HAGO EN EL FORMULARIO ANTERIOR.
# -*- coding: utf-8 -*-
#################################################################
# Ms2 Consulting Group #
#################################################################
from datetime import timedelta, datetime
from openerp import models, fields, api
from openerp.exceptions import ValidationError
from openerp.tools.translate import _
class contenedor_movimiento(models.Model):
_name = 'pieces'
_description = u'Clase Descripcion de las Cargas'
_rec_name = 'total'
#####################################################################
# Resultado suma
#########################################################################
@api.one
@api.depends('medida1', 'medida2', 'medida3', 'piece')
def _calcular_suma_pieces(self):
# print "Calcular suma y multiplicaciones de variables Commodity"
if self.piece > 0:
cantidad = self.piece
length = self.medida2
width = self.medida1
height = self.medida3
self.total = width + length + height
self.total1 = (width + length + height) * cantidad
else:
self.piece = 1
cantidad = self.piece
width = self.medida1
length = self.medida2
height = self.medida3
self.total = width + length + height
self.total1 = (width + length + height) * cantidad
#########################################################################
piece = fields.Integer(_(u'Amount of Pieces:'), required=False)
medida1 = fields.Float(_(u'Workpiece Width:'), required=False)
medida2 = fields.Float(_(u'Workpiece Length:'), required=False)
medida3 = fields.Float(_(u'Workpiece Height:'), required=False)
total1 = fields.Float(_(u'Total Global'), required=False,
store=True, compute='_calcular_suma_pieces')
total = fields.Float(_(u'Total Individual'), required=False,
store=True, compute='_calcular_suma_pieces')
#########################################################################
-----------------------------------------------------------------------------------------------------------------------------------------------FIN DE CODIGO------
muestro las dos vistas tanto del calculo como la del formulario en estos dos grupos de codigo
Pieces.xml: La presente vista me mostrara el calculo a realizar el cual sera guardado en base de datos y deberá ser mostrado en este caso no se muestra la informacion que error consideran que pudiera haber por favor ayudenme.
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Vista formulario -->
<record id='view_pieces_form' model='ir.ui.view' >
<field name='name'>view.pieces.form</field>
<field name='model'>pieces</field>
<field name='arch' type='xml'>
<form string='Pieces' version='7.0'>
<group col="4">
<field name='piece' />
<field name='medida1' />
<field name='medida2' />
<field name='medida3' />
<field name='total' />
<field name='total1' />
</group>
</form>
</field>
</record>
<!-- Vista arbol -->
<record id='view_pieces_tree' model='ir.ui.view' >
<field name='name'>view.pieces.tree</field>
<field name='model'>pieces</field>
<field name='arch' type='xml'>
<tree string='Pieces' version='7.0'>
<field name='piece' />
<field name='medida1' />
<field name='medida2' />
<field name='medida3' />
<field name='total' />
<field name='total1' />
</tree>
</field>
</record>
<!-- Busqueda -->
<record id='view_pieces_search' model='ir.ui.view'>
<field name='name'>view.pieces.search</field>
<field name='model'>pieces</field>
<field name='arch' type='xml'>
<search string='Búsqueda Pieces' version='7.0'>
<field name='piece' />
<field name='medida1' />
<field name='medida2' />
<field name='medida3' />
<field name='total' />
<field name='total1' />
</search>
</field>
</record>
<!-- Accion de menu -->
<record id='action_pieces' model='ir.actions.act_window'>
<field name="name">Pieces</field>
<field name="res_model">pieces</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
<field name="domain">[('eliminado','=', False)]</field>
</record>
<!-- Accion de menu Administrador-->
<record id='action_pieces_administrador' model='ir.actions.act_window'>
<field name="name">Pieces</field>
<field name="res_model">pieces</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
</record>
<!-- Menu -->
<menuitem name="Proyecto" id="menu_naviero_main" sequence="25" />
<menuitem name="Pieces" id="menu_Pieces_sub" sequence="1" parent="menu_naviero_main" />
<!-- <menuitem id="action_pieces" sequence="1"
parent="menu_Pieces_sub" action="action_buque" groups="naviero.group_naviero_user"/> -->
<menuitem id="menu_buque_administrador" sequence="1"
parent="menu_Pieces_sub" action="action_pieces_administrador" groups="naviero.group_naviero_admin"/>
</data>
</openerp>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------FIN DE VISTA 1
Pickup_Order.xml : vista principal la cual debera mostrar el resultado del calculo desde la base de datos QUE contine los calculos hechos en mi VISTA 1
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Vista formulario -->
<record id='view_pickup_form' model='ir.ui.view' >
<field name='name'>view.pickup.form</field>
<field name='model'>pickup</field>
<field name='arch' type='xml'>
<form string='Pickup Order' version='7.0'>
<notebook colspan="4" position="inside">
<page string="General">
<group col="4">
<group>
<field name='consecutivo' />
<field name='creation_date_time' />
<field name='Pick_up'/>
<field name='Delivery_date'/>
<field name='employee' t-field="user.name"/>
<field name='issued_by'/>
<field name='destination_agent'/>
</group>
</group>
</page>
<page string="Shipper ">
<group col="4">
<group>
<field name='shipper' />
<field name='pickup_location' />
<field name='place' />
</group>
</group>
</page>
<page string="Consiggnee ">
<group col="4">
<group>
<field name='CONSIGNEE' />
<field name='CONSIGNEE_location' />
<field name='place' />
</group>
</group>
<notebook>
<page string="">
<group>
<field name='cliente_to_bill' />
<field name='cliente_to_bill_2' />
</group>
</page>
</notebook>
</page>
<page string="Supplier">
<group col="4">
<group>
<field name="Name" widget="handle"/>
<field name="invoice_number" widget="handle"/>
<field name="Purchase_order_number" widget="handle"/>
</group>
</group>
</page>
<page string="Carrier">
<group col="4">
<group>
<field name="carrier" widget="handle"/>
<field name="pro_number" widget="handle"/>
<field name="driver_name" widget="handle"/>
<field name="driver_licence" widget="handle"/>
<field name="tracking_number" widget="handle"/>
<field name="arrier" widget="handle"/>
<field name="bookin" widget="handle"/>
<field name="preferred" widget="handle"/>
</group>
</group>
</page>
<page string="Comoditties">
<group col="4">
<group>
<field name="consecutivo2" widget="handle"/>
<field name="pack" widget="handle"/>
<field name="loc" widget="handle"/>
<field name="descrip" widget="handle"/>
<field name="notes" widget="handle"/>
<!-- <field name="total1" widget="handle"/> -->
</group>
</group>
<notebook>
<page string="Dimention of Pieces" > <!-- Este Nnotebook es el que me muestra el listado de campos editablles llamados de la clase piece.py desde el Pickup_order.py -->
<field name="dimensiones" />
</page>
</notebook>
</page>
</notebook>
</form>
</field>
</record>
<!-- Vista arbol -->
<record id='view_pickup_tree' model='ir.ui.view' >
<field name='name'>view.pickup.tree</field>
<field name='model'>pickup</field>
<field name='arch' type='xml'>
<tree string='pickup' version='7.0'> <!--colors='#FF0000:full_view==False'> -->
<field name='consecutivo' />
<field name='creation_date_time' />
<field name='Pick_up'/>
<field name='Delivery_date'/>
</tree>
</field>
</record>
<!-- Busqueda -->
<record id='view_pickup_search' model='ir.ui.view'>
<field name='name'>view.pickup.search</field>
<field name='model'>pickup</field>
<field name='arch' type='xml'>
<search string='Búsqueda pickup' version='7.0'>
<field name='creation_date_time' />
<field name='Pick_up'/>
</search>
</field>
</record>
<!-- Accion de menu -->
<record id='action_pickup' model='ir.actions.act_window'>
<field name="name">Pickup Order</field>
<field name="res_model">pickup</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
<field name="domain">[('eliminado','=', False)]</field>
</record>
<!-- Accion de menu Administrador-->
<record id='action_pickup_administrador' model='ir.actions.act_window'>
<field name="name">Pickup Order </field>
<field name="res_model">pickup</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
</record>
<!-- Menu -->
<menuitem name="Proyecto" id="menu_naviero_main" sequence="25" />
<menuitem name="Pickup Order" id="menu_pickup_sub" sequence="1" parent="menu_naviero_main" />
<!-- <menuitem id="menu_pickup" sequence="1"
parent="menu_pickup_sub" action="action_pickup" groups="naviero.group_naviero_user"/> -->
<menuitem id="menu_pickup_administrador" sequence="1"
parent="menu_pickup_sub" action="action_pickup_administrador" groups="naviero.group_naviero_admin"/>
</data>
</openerp>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------VISTA 2
En resumen, lo que requiero de estos conjuntos de codigos py y xml es que se realicen los calculos primeramente y esos calculos sean guardados en mi base de datos que los mismos se guardan correctamente, pero al instante de mostrarlos en mi Vista 2 hago el llamado a travez de la variable 'dimensiones' y no me muestra en absoluto nada, hubo un instante en que si me la mostraba pero no se que paso:
Aqui el fragmento de codigo donde se deben mostrar las dimensiones de las pieces y el resultado
<notebook>
<page string="Dimention of Pieces" > <!-- Este Nnotebook es el que me muestra el listado de campos editablles llamados de la clase piece.py desde el Pickup_order.py -->
<field name="dimensiones" />
</page>
</notebook>
Alguien que me apoye por favor le estare agradecido ......feliz tarde