Commit 6c906563 by Maria Agustina

wizard sin adjunto, avance compras

1 parent ccce6cdd
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
'reportes/rep_solicitud_presup.xml', 'reportes/rep_solicitud_presup.xml',
'reportes/template_rep_solicitud_presup.xml', 'reportes/template_rep_solicitud_presup.xml',
'wizard/crear_solicitudp.xml', 'wizard/crear_solicitudp.xml',
'wizard/presup_noadjunto.xml',
'views/compra_orden.xml', 'views/compra_orden.xml',
'views/menu.xml', 'views/menu.xml',
], ],
......
...@@ -27,7 +27,7 @@ class hgt_compra_orden(models.Model): ...@@ -27,7 +27,7 @@ class hgt_compra_orden(models.Model):
) )
cor_sp = fields.Many2one( cor_sp = fields.Many2one(
string = u'Solicitud de Presupuesto', string = u'Solicitud de Presupuesto asociada',
comodel_name = 'hgt.compra_solicitudpresupuesto', comodel_name = 'hgt.compra_solicitudpresupuesto',
) )
......
...@@ -63,6 +63,11 @@ class hgt_compra_solicitud(models.Model): ...@@ -63,6 +63,11 @@ class hgt_compra_solicitud(models.Model):
default=False, default=False,
) )
# cs_solicitudpre = fields.Many2many(
# string="Solicitudes de Presupuesto asociadas",
# comodel_name = "hgt.compra_solicitudpresupuesto",
# )
def compute_codigo_unico(self): def compute_codigo_unico(self):
for record in self: for record in self:
txt = str(record.id) txt = str(record.id)
...@@ -95,32 +100,34 @@ class hgt_compra_solicitud(models.Model): ...@@ -95,32 +100,34 @@ class hgt_compra_solicitud(models.Model):
#agrupo lineas segun proovedor para armar solicitudes distintas por proovedor #agrupo lineas segun proovedor para armar solicitudes distintas por proovedor
agrupado = lineas.read_group([('csl_cs','=', self.id)],fields=['csl_proovedor_propuesto'], groupby=['csl_proovedor_propuesto']) agrupado = lineas.read_group([('csl_cs','=', self.id)],fields=['csl_proovedor_propuesto'], groupby=['csl_proovedor_propuesto'])
for lin in agrupado: for lin in agrupado:
if lin['csl_proovedor_propuesto']:
proov = lin['csl_proovedor_propuesto'] proov = lin['csl_proovedor_propuesto']
proov = proov[0] proov = proov[0]
lineas_proov = self.env['hgt.compra_solicitudlinea'].search([('csl_proovedor_propuesto','=', proov),('csl_cs','=',self.id),('csl_select','=',True)]).ids lineas_proov = self.env['hgt.compra_solicitudlinea'].search([('csl_proovedor_propuesto','=', proov),('csl_cs','=',self.id),('csl_select','=',True)]).ids
datos = { datos = {
'csp_solicitante': self.cs_solicitante.id, 'csp_solicitante': self.cs_solicitante.id,
'csp_proovedorp': proov, 'csp_proovedorp': proov,
'csp_compra_solicitud': self.id,
} }
nva_sol = self.env['hgt.compra_solicitudpresupuesto'].create(datos) nva_sol = self.env['hgt.compra_solicitudpresupuesto'].create(datos)
nva_sol.csp_solicitudlinea = lineas_proov nva_sol.csp_solicitudlinea = lineas_proov
else:
raise UserError('Debe proponer proovedores para cada línea de solicitud')
#modifica estado solicitud d compra #modifica estado solicitud d compra
self.cs_estados = 'pr' self.cs_estados = 'pr'
#marco como generada solicitud para desaparicion de botones #marco como generada solicitud para desaparicion de botones
self.cs_solicit_generada = True self.cs_solicit_generada = True
#devuelvo vista tree de solicitudes de presupuesto, NO ME SALIO, PQ NO SALE LA VISTA ORIGINAL Y NO SE PUEDE ENTRAR A LAS SOLICITUDES #devuelve solicitud
# return { return {
# 'name': 'Solicitudes de Presupuesto', 'type': 'ir.actions.act_window',
# 'view_type': 'form', 'res_model': 'hgt.compra_solicitudpresupuesto',
# 'view_mode':'tree', 'view_mode': 'form',
# 'view_id': self.env.ref('hgt_compras.view_hgt_compra_solicitudpresupuesto_tree').id, 'view_type': 'form',
# 'res_model':'hgt.compra_solicitudpresupuesto', 'res_id': nva_sol.id,
# 'type':'ir.actions.act_window', 'views': [(False, 'form')],
# 'target':'current' 'target': 'current',
# } }
return (True)
else: else:
raise UserError('No hay líneas de solicitud seleccionadas para generar la solicitud de Presupuesto') raise UserError('No hay líneas de solicitud seleccionadas para generar la solicitud de Presupuesto')
...@@ -144,3 +151,5 @@ class hgt_compra_solicitud(models.Model): ...@@ -144,3 +151,5 @@ class hgt_compra_solicitud(models.Model):
if lin.csl_estados in ['pr']: if lin.csl_estados in ['pr']:
lin.csl_select = True lin.csl_select = True
return (True) return (True)
\ No newline at end of file \ No newline at end of file
...@@ -13,6 +13,15 @@ class hgt_compra_solicitudlinea(models.Model): ...@@ -13,6 +13,15 @@ class hgt_compra_solicitudlinea(models.Model):
string = u'Descripción', string = u'Descripción',
) )
csl_cantidad = fields.Float(
string = 'Cantidad',
)
csl_producto = fields.Many2one(
string = u'Producto Comprable',
comodel_name = 'asw.producto',
)
csl_cs = fields.Many2one( csl_cs = fields.Many2one(
string = u'Solicitud de Compra', string = u'Solicitud de Compra',
comodel_name = 'hgt.compra_solicitud', comodel_name = 'hgt.compra_solicitud',
...@@ -66,7 +75,7 @@ class hgt_compra_solicitudlinea(models.Model): ...@@ -66,7 +75,7 @@ class hgt_compra_solicitudlinea(models.Model):
) )
csl_aprobador = fields.Many2one( csl_aprobador = fields.Many2one(
string =u'Aprobó/Rechazó', string =u'Aprobó/Rechazó sin adjunto',
comodel_name ='res.users', comodel_name ='res.users',
) )
......
from odoo import models, fields, api from odoo import models, fields, api
from odoo.exceptions import UserError from odoo.exceptions import UserError
from datetime import date
class hgt_compra_solicitudpresupuesto(models.Model): class hgt_compra_solicitudpresupuesto(models.Model):
_name='hgt.compra_solicitudpresupuesto' _name='hgt.compra_solicitudpresupuesto'
...@@ -10,6 +11,11 @@ class hgt_compra_solicitudpresupuesto(models.Model): ...@@ -10,6 +11,11 @@ class hgt_compra_solicitudpresupuesto(models.Model):
comodel_name ='res.users', comodel_name ='res.users',
) )
csp_compra_solicitud = fields.Many2one(
string = 'Solicitud de Compra Asociada',
comodel_name = 'hgt.compra_solicitud',
)
csp_proovedorp= fields.Many2one ( csp_proovedorp= fields.Many2one (
string =u'Proovedor', string =u'Proovedor',
comodel_name ='hgt.instituciones', comodel_name ='hgt.instituciones',
...@@ -46,27 +52,97 @@ class hgt_compra_solicitudpresupuesto(models.Model): ...@@ -46,27 +52,97 @@ class hgt_compra_solicitudpresupuesto(models.Model):
default=False, default=False,
) )
csp_ordencompra = fields.Many2one(
comodel_name="hgt.compra_orden",
string=u"Órden de Compra asociada",
)
csp_notas = fields.Text( csp_notas = fields.Text(
string="Notas", string="Observaciones",
)
csp_pna_ejecuto = fields.Many2one(
string =u'Aceptó/Rechazó sin adjunto',
comodel_name ='res.users',
readonly=True,
)
csp_pna_fecha = fields.Date(
string = u'Fecha',
readonly=True,
) )
@api.depends('csp_pna_ejecuto')
def onchange_fecha_pna(self):
self.csp_pna_fecha = str(date.today())
def enviar_pdf(self): def enviar_pdf(self):
#PDF #PDF
obj = self.env.ref('hgt_compras.solicitud_presupuesto_proovedor').report_action(self) obj = self.env.ref('hgt_compras.solicitud_presupuesto_proovedor').report_action(self)
self.csp_estados = 'e' self.csp_estados = 'e'
return obj return obj
def chequear_ajuntos(self): def duplicar_solicitud(self):
if not self.csp_adjuntos: #abrir wizard p elegir proovedores
raise UserError("Debe haber algún presupuesto cargado en adjuntos para poder aceptarlo o rechazarlo") datos = {'wiz_solicitud': self.id}
nwiz = self.env['hgt.solicitarp'].create(datos)
return {
'type': 'ir.actions.act_window',
'res_model': 'hgt.solicitarp',
'view_mode': 'form',
'view_type': 'form',
'res_id': nwiz.id,
'views': [(False, 'form')],
'target': 'new',
}
def aceptar_presup(self): def aceptar_presup(self):
self.chequear_ajuntos() if not self.csp_adjuntos:
datos = {'pna_solicitudpres': self.id,
'pna_opcion': 'a'}
nwiz = self.env['hgt.presupnoadjunto'].create(datos)
return {
'type': 'ir.actions.act_window',
'res_model': 'hgt.presupnoadjunto',
'view_type': 'form',
'view_mode': 'form',
'res_id': nwiz.id,
'views': [(False, 'form')],
'target': 'new',
'context': self.env.context,
"view_id": self.env.ref("hgt_compras.view_form_procesar_sa_ui").id,
}
else:
self.csp_estados = 'a'
return(True)
def acepto_prend(self):
self.csp_estados = 'a' self.csp_estados = 'a'
return(True)
def rechazo_prend(self):
self.csp_estados = 'r'
return(True)
def rechazar_presup(self): def rechazar_presup(self):
self.chequear_ajuntos() if not self.csp_adjuntos:
datos = {'pna_solicitudpres': self.id,
'pna_opcion': 'r'}
nwiz = self.env['hgt.presupnoadjunto'].create(datos)
return {
'type': 'ir.actions.act_window',
'res_model': 'hgt.presupnoadjunto',
'view_type': 'form',
'view_mode': 'form',
'res_id': nwiz.id,
'views': [(False, 'form')],
'target': 'new',
'context': self.env.context,
"view_id": self.env.ref("hgt_compras.view_form_procesar_sa_ui").id,
}
else:
self.csp_estados = 'r' self.csp_estados = 'r'
return(True)
def generar_sc(self): def generar_sc(self):
lista = [] lista = []
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<td colspan='2' t-att-style="estilo_celda" ><span t-field="o.csp_proovedorp"></span></td> <td colspan='2' t-att-style="estilo_celda" ><span t-field="o.csp_proovedorp"></span></td>
</tr> </tr>
<tr style="font-size:20px; border: 2px solid black; height: 80px; text-align:center; vertical-align: middle;" > <tr style="font-size:20px; border: 2px solid black; height: 80px; text-align:center; vertical-align: middle;" >
<td colspan='6' t-att-style="estilo_celda" ><span></span><strong>Notas:</strong><span t-field="o.csp_notas"></span></td> <td colspan='6' t-att-style="estilo_celda" ><span></span><strong>Observaciones:</strong><span t-field="o.csp_notas"></span></td>
</tr> </tr>
<tr> <tr>
<td colspan='6' style="font-size:20px; border: 2px solid black; height: 50px; text-align:center; vertical-align: middle;" ><strong>Productos</strong></td> <td colspan='6' style="font-size:20px; border: 2px solid black; height: 50px; text-align:center; vertical-align: middle;" ><strong>Productos</strong></td>
...@@ -29,19 +29,17 @@ ...@@ -29,19 +29,17 @@
<tr> <tr>
<td t-att-style="estilo_cabecera" ><strong>Código</strong></td> <td t-att-style="estilo_cabecera" ><strong>Código</strong></td>
<td t-att-style="estilo_cabecera" ><strong>Producto</strong></td> <td t-att-style="estilo_cabecera" ><strong>Producto</strong></td>
<td t-att-style="estilo_cabecera" ><strong>Estado solicitud</strong></td> <td t-att-style="estilo_cabecera" ><strong>Cantidad</strong></td>
<td t-att-style="estilo_cabecera" ><strong>Solicitante</strong></td>
<td t-att-style="estilo_cabecera" ><strong>Aprobó</strong></td>
<td t-att-style="estilo_cabecera" ><strong>Fecha aprobación</strong></td> <td t-att-style="estilo_cabecera" ><strong>Fecha aprobación</strong></td>
<td t-att-style="estilo_cabecera" ><strong>Código del Producto Proovedor</strong></td>
</tr> </tr>
<t t-foreach="o.csp_solicitudlinea" t-as="ee"> <t t-foreach="o.csp_solicitudlinea" t-as="ee">
<tr> <tr>
<td t-att-style="estilo_celda"> <span t-field="ee.name"/> </td> <td t-att-style="estilo_celda"> <span t-field="ee.name"/> </td>
<td t-att-style="estilo_celda"> <span t-field="ee.csl_descripcion"/> </td> <td t-att-style="estilo_celda"> <span t-field="ee.csl_descripcion"/> </td>
<td t-att-style="estilo_celda"> <span t-field="ee.csl_estados"/> </td> <td t-att-style="estilo_celda"> <span t-field="ee.csl_cantidad"/> </td>
<td t-att-style="estilo_celda"> <span t-field="ee.csl_solicitante"/> </td>
<td t-att-style="estilo_celda"> <span t-field="ee.csl_aprobador"/> </td>
<td t-att-style="estilo_celda"> <span t-field="ee.csl_fecha_creacion"/> </td> <td t-att-style="estilo_celda"> <span t-field="ee.csl_fecha_creacion"/> </td>
<td t-att-style="estilo_celda"> <span t-field="ee.csl_producto"/> </td>
</tr> </tr>
</t> </t>
</tbody> </tbody>
......
...@@ -4,9 +4,17 @@ ...@@ -4,9 +4,17 @@
<field name="name">Gestión de compras</field> <field name="name">Gestión de compras</field>
<field name="description">Gestión de compras</field> <field name="description">Gestión de compras</field>
</record> </record>
<record model="res.groups" id="module_category_hgt_solicitud_compras">
<field name="name">Solicitud Compras</field>
<field name="category_id" ref="module_category_hgt_compras"/>
</record>
<record model="res.groups" id="module_category_hgt_gestor_compras"> <record model="res.groups" id="module_category_hgt_gestor_compras">
<field name="name">Gestor de Compras</field> <field name="name">Administrativo Compras</field>
<field name="category_id" eval="ref('module_category_hgt_compras')"/> <field name="category_id" ref="module_category_hgt_compras"/>
</record>
<record model="res.groups" id="module_category_hgt_comprador_compras">
<field name="name">Comprador</field>
<field name="category_id" ref="module_category_hgt_compras"/>
</record> </record>
</data> </data>
</odoo> </odoo>
\ No newline at end of file \ No newline at end of file
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
<button name="enviar_orden" string="Enviar Orden" type="object" class="btn btn-info" attrs="{'invisible':[('cor_estados','not in',['a'])]}"/> <button name="enviar_orden" string="Enviar Orden" type="object" class="btn btn-info" attrs="{'invisible':[('cor_estados','not in',['a'])]}"/>
</header> </header>
<group string="Órden de Compra" col="2"> <group string="Órden de Compra" col="2">
<field name="cor_sp" readonly="1" />
<field colspan="1" name="cor_comprador" attrs="{'readonly':[('cor_estados','not in',['b'])]}" /> <field colspan="1" name="cor_comprador" attrs="{'readonly':[('cor_estados','not in',['b'])]}" />
</group> </group>
<notebook colspan="4"> <notebook colspan="4">
...@@ -55,7 +56,7 @@ ...@@ -55,7 +56,7 @@
<field name="csl_descripcion" /> <field name="csl_descripcion" />
<field name="csl_solicitante"/> <field name="csl_solicitante"/>
<field name="csl_estados" /> <field name="csl_estados" />
<field name="csl_proovedor_propuesto"/> <!-- <field name="csl_proovedor_propuesto"/> -->
</tree> </tree>
</field> </field>
</page> </page>
......
...@@ -2,15 +2,22 @@ ...@@ -2,15 +2,22 @@
<odoo> <odoo>
<data noupdate="0"> <data noupdate="0">
<record id="action_hgt_compra_solicitud_act_window" model="ir.actions.act_window"> <record id="view_hgt_revision_compra_solicitud_tree" model="ir.ui.view">
<field name="type">ir.actions.act_window</field> <field name="name">Revisión de Solicitudes de Compra</field>
<field name="name">Solicitud de Compra</field> <field name="model">hgt.compra_solicitud</field>
<field name="res_model">hgt.compra_solicitud</field> <field name="type">tree</field>
<field name="view_mode">tree,form</field> <field name="mode">primary</field>
<field name="view_type">form</field> <field name="priority" eval="16" />
<field name="target">current</field> <field name="active" eval="True" />
<field name="help" type="html"> <field name="arch" type="xml">
<p class="oe_view_nocontent_create">Cree la primera solicitud de compra</p> <tree>
<field name="name"/>
<field name="cs_solicitante" />
<field name="cs_referencia" />
<field name="cs_estados" />
<field name="cs_fecha_creacion" />
<field name="cs_fecha_limite" />
</tree>
</field> </field>
</record> </record>
...@@ -46,9 +53,8 @@ ...@@ -46,9 +53,8 @@
<header> <header>
<field name="cs_estados" widget="statusbar"/> <field name="cs_estados" widget="statusbar"/>
<button name="procesar_solicitud" string="Enviar a Aprobación" type="object" class="btn btn-success" attrs="{'invisible':[('cs_estados','not in',['b'])]}"/> <button name="procesar_solicitud" string="Enviar a Aprobación" type="object" class="btn btn-success" attrs="{'invisible':[('cs_estados','not in',['b'])]}"/>
<button name="aprobar_solicitud" string="Procesar" type="object" class="btn btn-success" attrs="{'invisible':[('cs_estados','in',['b','pr'])]}" groups="hgt_compras.module_category_hgt_gestor_compras"/> <button name="aprobar_solicitud" string="Procesar" type="object" class="btn btn-success" groups="hgt_compras.module_category_hgt_gestor_compras" attrs="{'invisible':[('cs_estados','in',['b','pr'])]}"/>
<button name="generar_solicitud_p" string="Generar Solicitud/es de Presupuesto" type="object" class="oe_highlight" attrs="{'invisible':['|',('cs_estados','in',['b','pe']),('cs_solicit_generada','=',True)]}" /> <button name="generar_solicitud_p" string="Generar Solicitud/es de Presupuesto" type="object" class="oe_highlight" groups="hgt_compras.module_category_hgt_gestor_compras" attrs="{'invisible':['|',('cs_estados','in',['b','pe']),('cs_solicit_generada','=',True)]}" />
<!-- <button name="generar_orden_c" string="Generar Orden de Compra" type="object" class="oe_highlight" attrs="{'invisible':[('cs_estados','in',['b','pe'])]}" /> -->
</header> </header>
<group col="4" string="Datos Solicitud"> <group col="4" string="Datos Solicitud">
<h3><field nolabel="1" colspan="4" readonly="1" name="name"/></h3> <h3><field nolabel="1" colspan="4" readonly="1" name="name"/></h3>
...@@ -56,6 +62,7 @@ ...@@ -56,6 +62,7 @@
<field colspan="4" name="cs_referencia" attrs="{'readonly':[('cs_estados','not in',['b'])]}" /> <field colspan="4" name="cs_referencia" attrs="{'readonly':[('cs_estados','not in',['b'])]}" />
<field colspan="2" name="cs_fecha_creacion" attrs="{'readonly':[('cs_estados','not in',['b'])]}" /> <field colspan="2" name="cs_fecha_creacion" attrs="{'readonly':[('cs_estados','not in',['b'])]}" />
<field colspan="2" name="cs_fecha_limite" attrs="{'readonly':[('cs_estados','not in',['b'])]}" /> <field colspan="2" name="cs_fecha_limite" attrs="{'readonly':[('cs_estados','not in',['b'])]}" />
<!-- <field name="cs_solicitudpre" readonly="1" /> -->
<field name="cs_solicit_generada" invisible="1" /> <field name="cs_solicit_generada" invisible="1" />
</group> </group>
<notebook colspan="4"> <notebook colspan="4">
...@@ -66,13 +73,14 @@ ...@@ -66,13 +73,14 @@
<tree create="1" edit="1" editable="1"> <tree create="1" edit="1" editable="1">
<field name="name" readonly="1" /> <field name="name" readonly="1" />
<field name="csl_descripcion" attrs="{'readonly':[('csl_cs_estados','not in',['b'])]}"/> <field name="csl_descripcion" attrs="{'readonly':[('csl_cs_estados','not in',['b'])]}"/>
<field name="csl_cantidad" attrs="{'readonly':[('csl_cs_estados','not in',['b'])]}"/>
<field name="csl_solicitante" attrs="{'readonly':[('csl_cs_estados','not in',['b'])]}"/> <field name="csl_solicitante" attrs="{'readonly':[('csl_cs_estados','not in',['b'])]}"/>
<field name="csl_estados" readonly="1"/> <field name="csl_estados" readonly="1"/>
<field name="csl_cs_estados" invisible="1"/> <field name="csl_cs_estados" invisible="1"/>
<field name="csl_proovedor_propuesto" attrs="{'readonly':[('csl_cs_estados','not in',['b'])]}"/> <field name="csl_proovedor_propuesto" groups="hgt_compras.module_category_hgt_gestor_compras" />
<button type="object" class="btn btn-primary" name="aprobar" string="Aprobar" groups="hgt_compras.module_category_hgt_gestor_compras" attrs="{'invisible':[('csl_cs_estados','not in',['pe'])]}" /> <button type="object" class="btn btn-primary" name="aprobar" string="Aprobar" groups="hgt_compras.module_category_hgt_gestor_compras" attrs="{'invisible':[('csl_cs_estados','not in',['pe'])]}" />
<button type="object" class="btn btn-primary" name="rechazar" string="Rechazar" groups="hgt_compras.module_category_hgt_gestor_compras" attrs="{'invisible':[('csl_cs_estados','not in',['pe'])]}" /> <button type="object" class="btn btn-primary" name="rechazar" string="Rechazar" groups="hgt_compras.module_category_hgt_gestor_compras" attrs="{'invisible':[('csl_cs_estados','not in',['pe'])]}" />
<field name="csl_select" attrs="{'invisible':[('csl_estados','in',['pe','r'])]}"/> <field name="csl_select" groups="hgt_compras.module_category_hgt_gestor_compras" attrs="{'invisible':[('csl_estados','in',['pe','r'])]}"/>
</tree> </tree>
</field> </field>
</page> </page>
...@@ -94,5 +102,32 @@ ...@@ -94,5 +102,32 @@
</field> </field>
</record> </record>
<record id="action_hgt_revision_compra_solicitud_act_window" model="ir.actions.act_window">
<field name="type">ir.actions.act_window</field>
<field name="name">Revisión Solicitud de Compra</field>
<field name="res_model">hgt.compra_solicitud</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
<field name="view_ids" eval="[(5, 0, 0),(0, 0, {'view_mode': 'tree', 'view_id': ref('view_hgt_revision_compra_solicitud_tree')})]"/>
<field name="target">current</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">No hay solicitudes de compra para revisar</p>
</field>
</record>
<record id="action_hgt_compra_solicitud_act_window" model="ir.actions.act_window">
<field name="type">ir.actions.act_window</field>
<field name="name">Solicitud de Compra</field>
<field name="res_model">hgt.compra_solicitud</field>
<field name="domain">[('cs_solicitante','=',uid)]</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
<field name="view_ids" eval="[(5, 0, 0),(0, 0, {'view_mode': 'tree', 'view_id': ref('view_hgt_compra_solicitud_tree')})]"/>
<field name="target">current</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Cree la primera solicitud de compra</p>
</field>
</record>
</data> </data>
</odoo> </odoo>
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
<tree> <tree>
<field name="csp_solicitante" /> <field name="csp_solicitante" />
<field name="csp_proovedorp" /> <field name="csp_proovedorp" />
<field name="csp_compra_solicitud" />
<field name="csp_estados" />
</tree> </tree>
</field> </field>
</record> </record>
...@@ -42,12 +44,15 @@ ...@@ -42,12 +44,15 @@
<header> <header>
<field name="csp_orden_generada" invisible="1"/> <field name="csp_orden_generada" invisible="1"/>
<field name="csp_estados" widget="statusbar"/> <field name="csp_estados" widget="statusbar"/>
<button name="enviar_pdf" string="Imprimir PDF para Proovedor" type="object" class="btn btn-primary" attrs="{'invisible':[('csp_estados','not in',['pe'])]}"/> <button name="enviar_pdf" string="Procesar e Imprimir PDF" type="object" class="btn btn-primary" attrs="{'invisible':[('csp_estados','not in',['pe'])]}"/>
<button name="duplicar_solicitud" string="Duplicar Solicitud - Nuevo Proovedor" type="object" class="btn btn-primary" attrs="{'invisible':[('csp_estados','not in',['pe'])]}"/>
<button name="aceptar_presup" string="Aceptar Presupuesto" type="object" class="btn btn-success" attrs="{'invisible':[('csp_estados','not in',['e'])]}"/> <button name="aceptar_presup" string="Aceptar Presupuesto" type="object" class="btn btn-success" attrs="{'invisible':[('csp_estados','not in',['e'])]}"/>
<button name="rechazar_presup" string="Rechazar Presupuesto" type="object" class="btn btn-danger" attrs="{'invisible':[('csp_estados','not in',['e'])]}"/> <button name="rechazar_presup" string="Rechazar Presupuesto" type="object" class="btn btn-danger" attrs="{'invisible':[('csp_estados','not in',['e'])]}"/>
<button name="generar_sc" string="Generar Orden de Compra" type="object" class="btn btn-info" attrs="{'invisible':['|',('csp_estados','not in',['a']),('csp_orden_generada','=',True)]}"/> <button name="generar_sc" string="Generar Orden de Compra" type="object" class="btn btn-info" attrs="{'invisible':['|',('csp_estados','not in',['a']),('csp_orden_generada','=',True)]}"/>
</header> </header>
<group col="4"> <group col="4">
<field name="csp_compra_solicitud" readonly="1"/>
<field name="csp_ordencompra" readonly="1" />
<field name="csp_solicitante" attrs="{'readonly':[('csp_estados','not in',['pe'])]}"/> <field name="csp_solicitante" attrs="{'readonly':[('csp_estados','not in',['pe'])]}"/>
<field name="csp_proovedorp" attrs="{'readonly':[('csp_estados','not in',['pe'])]}"/> <field name="csp_proovedorp" attrs="{'readonly':[('csp_estados','not in',['pe'])]}"/>
<field name="csp_notas" attrs="{'readonly':[('csp_estados','not in',['pe'])]}"/> <field name="csp_notas" attrs="{'readonly':[('csp_estados','not in',['pe'])]}"/>
...@@ -60,11 +65,17 @@ ...@@ -60,11 +65,17 @@
<field name="csl_descripcion" /> <field name="csl_descripcion" />
<field name="csl_solicitante"/> <field name="csl_solicitante"/>
<field name="csl_estados" /> <field name="csl_estados" />
<field name="csl_proovedor_propuesto"/> <field name="csl_cantidad" />
<field name="csl_producto" />
<!-- <field name="csl_proovedor_propuesto"/> -->
</tree> </tree>
</field> </field>
</page> </page>
<page string="Adjuntos"> <page string="Adjuntos">
<group>
<field name="csp_pna_ejecuto" />
<field name="csp_pna_fecha" />
</group>
<field name="csp_adjuntos" required="0" nolabel="1" attrs="{'readonly':[('csp_estados','not in',['pe','e'])]}"> <field name="csp_adjuntos" required="0" nolabel="1" attrs="{'readonly':[('csp_estados','not in',['pe','e'])]}">
<tree create="1" edit="1" editable="1"> <tree create="1" edit="1" editable="1">
<field name="file" filename="file_name" editable="1" /> <field name="file" filename="file_name" editable="1" />
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<odoo> <odoo>
<data noupdate="0"> <data noupdate="0">
<menuitem name="Gestión de Compras" sequence="50" id="hgt_compras_gestion" parent="asw_tpv.asw_tpv_compras"/> <menuitem name="Gestión de Compras" sequence="50" id="hgt_compras_gestion" parent="asw_tpv.asw_tpv_compras"/>
<menuitem name="Solicitud de Compra" sequence="10" id="hgt_compras_solicitud" parent="hgt_compras_gestion" action="action_hgt_compra_solicitud_act_window"/> <menuitem name="Revisión de Solicitudes Compra" sequence="20" id="hgt_compras_revision_solicitud" parent="hgt_compras_gestion" action="action_hgt_revision_compra_solicitud_act_window" groups="hgt_compras.module_category_hgt_gestor_compras"/>
<menuitem name="Solicitud de Presupuesto" parent="hgt_compras_gestion" id="hgt_compras_presupuesto" action="action_hgt_compra_solicitudpresupuesto_act_window" /> <menuitem name="Solicitud de Compra" sequence="10" id="hgt_compras_solicitud" parent="hgt_compras_gestion" action="action_hgt_compra_solicitud_act_window" groups="hgt_compras.module_category_hgt_solicitud_compras"/>
<menuitem name="Órdenes de Compra" parent="hgt_compras_gestion" id="hgt_compras_orden" action="action_hgt_compra_orden_act_window" /> <menuitem name="Solicitud de Presupuesto" sequence="30" parent="hgt_compras_gestion" id="hgt_compras_presupuesto" action="action_hgt_compra_solicitudpresupuesto_act_window" />
</data> <menuitem name="Órdenes de Compra" sequence="40" parent="hgt_compras_gestion" id="hgt_compras_orden" action="action_hgt_compra_orden_act_window" /> </data>
</odoo> </odoo>
\ No newline at end of file \ No newline at end of file
from . import crear_solicitudp from . import crear_solicitudp
from . import presup_noadjunto
\ No newline at end of file \ No newline at end of file
...@@ -5,17 +5,25 @@ from odoo import models, fields, api ...@@ -5,17 +5,25 @@ from odoo import models, fields, api
class hgt_solicitarp(models.TransientModel): class hgt_solicitarp(models.TransientModel):
_name = "hgt.solicitarp" _name = "hgt.solicitarp"
wiz_lineasol = fields.Many2one ( wiz_solicitud = fields.Many2one (
string =u'Linea de solicitud', string =u'Solicitud Original',
comodel_name ='hgt.compra_solicitudlinea', comodel_name ='hgt.compra_solicitudpresupuesto',
) )
wiz_proovedor= fields.Many2one ( wiz_proovedor= fields.Many2many (
string =u'Proovedor', string =u'Proovedores',
comodel_name ='hgt.instituciones', comodel_name ='hgt.instituciones',
) )
def procesar_solicitudp(self): def procesar_solicitudp(self):
return (True) for proov in self.wiz_proovedor:
datos = {
'csp_solicitante': self.env.uid,
'csp_proovedorp' : proov.id,
'csp_solicitudlinea' : [(6, 0, self.wiz_solicitud.csp_solicitudlinea.ids)],
'csp_compra_solicitud': self.wiz_solicitud.csp_compra_solicitud.id
}
nva_sol = self.env['hgt.compra_solicitudpresupuesto'].create(datos)
return(True)
\ No newline at end of file \ No newline at end of file
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
<field name="model">hgt.solicitarp</field> <field name="model">hgt.solicitarp</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form> <form>
<group string="Seleccionar proovedor"> <group string="Seleccionar proovedores">
<field name="wiz_proovedor"/> <field name="wiz_proovedor" widget='many2many_tags'/>
</group> </group>
<footer> <footer>
<button name="procesar_solicitudp" type="object" string="Generar" class="btn-default" special="cancel"/> <button name="procesar_solicitudp" type="object" string="Generar" class="btn-default"/>
<button string="Cancel" class="btn-default" special="cancel"/> <button string="Cancel" class="btn-default" special="cancel"/>
</footer> </footer>
</form> </form>
......
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from datetime import datetime, date
class hgt_presupnoadjunto(models.TransientModel):
_name = "hgt.presupnoadjunto"
pna_solicitudpres = fields.Many2one(
string='Solicitud asociada',
comodel_name ='hgt.compra_solicitudpresupuesto',
)
pna_opcion = fields.Selection(
string=u'Acepto o Rechazo',
selection=[('a', 'a'), ('r', 'r')]
)
def acepto_pna(self):
self.pna_solicitudpres.csp_pna_ejecuto = self.env.user.id
self.pna_solicitudpres.onchange_fecha_pna()
if self.pna_opcion == 'a':
self.pna_solicitudpres.acepto_prend()
if self.pna_opcion == 'r':
self.pna_solicitudpres.rechazo_prend()
return(True)
\ No newline at end of file \ No newline at end of file
<odoo>
<data>
<record id="view_form_procesar_sa_ui" model="ir.ui.view">
<field name="name">Aceptar/Rechazar sin Adjunto</field>
<field name="model">hgt.presupnoadjunto</field>
<field name="arch" type="xml">
<form>
<h3>No es conveniente aceptar o rechazar un presupuesto sin tener archivos adjuntos en este formulario. Si acepta, quedará registro</h3>
<field name="pna_solicitudpres" invisible="1"/>
<footer>
<button name="acepto_pna" type="object" string="Aceptar" class="btn-default"/>
<button string="Cancel" class="btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<act_window id="hgt_procesar_sa_action"
name="Aceptar/Rechazar sin Adjunto"
src_model="hgt.presupnoadjunto"
res_model="hgt.presupnoadjunto"
view_mode="form"
target="new"
multi="True"/>
</data>
</odoo>
\ No newline at end of file \ No newline at end of file
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!