Commit 8523d4b7 by Maria Agustina

1482

1 parent 6653c0fa
......@@ -30,9 +30,11 @@
# always loaded
'data': [
'security/ir.model.access.csv',
'views/compra_orden.xml',
'security/permisos.xml',
'views/compra_solicitud.xml',
'views/compra_solicitudpresupuesto.xml',
'wizard/crear_solicitudp.xml',
'views/compra_orden.xml',
'views/menu.xml',
],
# only loaded in demonstration mode
......
from . import compra_orden
from . import compra_solicitud
from . import compra_solicitudlinea
from . import compra_solicitudpresupuesto
from . import compra_orden
......@@ -13,7 +13,34 @@ class hgt_compra_orden(models.Model):
selection = [
('b', 'Borrador'),
('a', 'Aprobada'),
('r', 'Rechazada'),
('e', 'Enviada'),
],
store = True
)
\ No newline at end of file
store = True,
default = 'b',
)
cor_linea_solicitud = fields.One2many(
string = u'Línea de Solicitud',
comodel_name = 'hgt.compra_solicitudlinea',
inverse_name = 'csl_co',
)
cor_sp = fields.Many2one(
string = u'Solicitud de Presupuesto',
comodel_name = 'hgt.compra_solicitudpresupuesto',
)
def rechazar_orden(self):
self.cor_sp.orden_rechazada()
self.cor_estados = 'r'
return (True)
def aprobar_orden(self):
self.cor_estados = 'a'
return (True)
def enviar_orden(self):
self.cor_estados = 'e'
return (True)
\ No newline at end of file
from odoo import models, fields, api
from datetime import date, datetime
from odoo.exceptions import UserError
class hgt_compra_solicitud(models.Model):
_name='hgt.compra_solicitud'
......@@ -32,11 +33,14 @@ class hgt_compra_solicitud(models.Model):
('pe', 'Pendiente'),
('pr', 'Procesada'),
],
store = True
store = True,
default= 'b',
readonly = True,
)
cs_fecha_creacion = fields.Date(
string = u'Fecha Creación',
default = str(date.today())
)
cs_fecha_limite = fields.Date(
......@@ -53,6 +57,11 @@ class hgt_compra_solicitud(models.Model):
default=''
)
cs_solicit_generada = fields.Boolean(
string="Solicitud generada?",
default=False,
)
def CargarNotas(self):
if (self.cs_texto == "") or (self.cs_texto == False):
return(True)
......@@ -61,4 +70,70 @@ class hgt_compra_solicitud(models.Model):
self.cs_texto, self.cs_notitas)
self.cs_notitas = Texto
self.cs_texto = ""
return(True)
\ No newline at end of file
return(True)
def aprobar(self):
self.cs_linea_solicitud.aprobar()
return (True)
def rechazar(self):
self.cs_linea_solicitud.rechazar()
return (True)
def generar_solicitud_p(self):
lineas = []
lineas_proov = []
lineas = self.cs_linea_solicitud.filtered(lambda t: t.csl_select == True)
if lineas:
#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'])
for lin in agrupado:
proov = lin['csl_proovedor_propuesto']
proov = proov[0]
lineas_proov = self.env['hgt.compra_solicitudlinea'].search([('csl_proovedor_propuesto','=', proov),('csl_cs','=',self.id),('csl_select','=',True)]).ids
datos = {
'csp_solicitante': self.cs_solicitante.id,
'csp_proovedorp': proov,
}
nva_sol = self.env['hgt.compra_solicitudpresupuesto'].create(datos)
nva_sol.csp_solicitudlinea = lineas_proov
#modifica estado solicitud d compra
self.cs_estados = 'pr'
#marco como generada solicitud para desaparicion de botones
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
# return {
# 'name': 'Solicitudes de Presupuesto',
# 'view_type': 'form',
# 'view_mode':'tree',
# 'view_id': self.env.ref('hgt_compras.view_hgt_compra_solicitudpresupuesto_tree').id,
# 'res_model':'hgt.compra_solicitudpresupuesto',
# 'type':'ir.actions.act_window',
# 'target':'current'
# }
return (True)
else:
raise UserError('No hay líneas de solicitud seleccionadas para generar la solicitud de Presupuesto')
def aprobar_solicitud(self):
lineas = self.cs_linea_solicitud
for lin in lineas:
if lin.csl_estados == 'pe':
raise UserError('Debe Aprobar o Rechazar todas las líneas de solicitud')
self.cs_estados = 'pr'
return (True)
def generar_orden_c(self):
self.cs_estados = 'pr'
return (True)
def procesar_solicitud(self):
self.cs_estados = 'pe'
def seleccionar_todo(self):
for lin in self.cs_linea_solicitud:
if lin.csl_estados in ['pr']:
lin.csl_select = True
return (True)
......@@ -17,6 +17,11 @@ class hgt_compra_solicitudlinea(models.Model):
comodel_name = 'hgt.compra_solicitud',
)
csl_co = fields.Many2one(
string = u'Orden de Compra',
comodel_name = 'hgt.compra_orden',
)
csl_solicitante = fields.Many2one(
string =u'Solicitante',
comodel_name ='res.users',
......@@ -30,7 +35,9 @@ class hgt_compra_solicitudlinea(models.Model):
('pe', 'Pendiente'),
('pr', 'Procesada'),
],
store = True
store = True,
default='pe',
readonly= True,
)
csl_proovedor_propuesto = fields.Many2one (
......@@ -48,6 +55,15 @@ class hgt_compra_solicitudlinea(models.Model):
default=''
)
csl_select = fields.Boolean(
string="Seleccionar",
default=False,
)
csl_cs_estados = fields.Selection(
related = 'csl_cs.cs_estados',
)
def CargarNotas(self):
if (self.csl_texto == "") or (self.csl_texto == False):
return(True)
......@@ -56,4 +72,12 @@ class hgt_compra_solicitudlinea(models.Model):
self.csl_texto, self.csl_notitas)
self.csl_notitas = Texto
self.csl_texto = ""
return(True)
\ No newline at end of file
return(True)
def aprobar(self):
self.csl_estados = 'pr'
return (True)
def rechazar(self):
self.csl_estados = 'r'
return (True)
\ No newline at end of file
from odoo import models, fields, api
from odoo.exceptions import UserError
class hgt_compra_solicitudpresupuesto(models.Model):
_name='hgt.compra_solicitudpresupuesto'
_order = 'id asc'
csp_solicitante = fields.Many2one(
string =u'Solicitante',
comodel_name ='res.users',
default = lambda self: self.env.user.id,
)
csp_proovedorp= fields.Many2one (
......@@ -27,3 +28,55 @@ class hgt_compra_solicitudpresupuesto(models.Model):
string='Archivos Adjuntos'
)
csp_estados = fields.Selection(
string = 'Estado',
selection = [
('pe', 'Pendiente'),
('e', 'Enviado al Proovedor'),
('a', 'Presupuesto Aprobado'),
('r', 'Presupuesto Rechazado'),
],
store = True,
default= 'pe',
readonly = True,
)
csp_orden_generada = fields.Boolean(
string="Orden generada?",
default=False,
)
def enviar_pdf(self):
self.csp_estados = 'e'
#aca meter el qreport p obtener PDF
def chequear_ajuntos(self):
if not self.csp_adjuntos:
raise UserError("Debe haber algún presupuesto cargado en adjuntos para poder aceptarlo o rechazarlo")
def aceptar_presup(self):
self.chequear_ajuntos()
self.csp_estados = 'a'
def rechazar_presup(self):
self.chequear_ajuntos()
self.csp_estados = 'r'
def generar_sc(self):
lista = []
datos = {'cor_comprador': self.csp_solicitante.id,
'cor_sp': self.id}
nva_orden = self.env['hgt.compra_orden'].create(datos)
for lin in self.csp_solicitudlinea:
lista.append(lin.id)
nva_orden.cor_linea_solicitud = lista
self.csp_orden_generada = True
return (True)
def orden_rechazada(self):
self.csp_orden_generada = False
return (True)
<odoo>
<data>
<record model="ir.module.category" id="module_category_hgt_compras">
<field name="name">Gestión de compras</field>
<field name="description">Gestión de compras</field>
</record>
<record model="res.groups" id="module_category_hgt_gestor_compras">
<field name="name">Gestor de Compras</field>
<field name="category_id" eval="ref('module_category_hgt_compras')"/>
</record>
</data>
</odoo>
\ No newline at end of file
......@@ -40,10 +40,26 @@
<form>
<header>
<field name="cor_estados" widget="statusbar"/>
<button name="rechazar_orden" string="Rechazar Orden" type="object" class="btn btn-danger" attrs="{'invisible':[('cor_estados','in',['r','a','e'])]}"/>
<button name="aprobar_orden" string="Aprobar Orden" type="object" class="btn btn-success" attrs="{'invisible':[('cor_estados','in',['r','a','e'])]}"/>
<button name="enviar_orden" string="Enviar Orden" type="object" class="btn btn-info" attrs="{'invisible':[('cor_estados','not in',['a'])]}"/>
</header>
<group string="Órden de Compra" col="2">
<field colspan="1" name="cor_comprador" />
<field colspan="1" name="cor_comprador" attrs="{'readonly':[('cor_estados','not in',['b'])]}" />
</group>
<notebook colspan="4">
<page string="Líneas de solicitud">
<field nolabel="1" name="cor_linea_solicitud" readonly="1">
<tree create="0" edit="0" editable="0">
<field name="name" readonly="1" />
<field name="csl_descripcion" />
<field name="csl_solicitante"/>
<field name="csl_estados" />
<field name="csl_proovedor_propuesto"/>
</tree>
</field>
</page>
</notebook>
</form>
</field>
</record>
......
......@@ -45,23 +45,34 @@
<!--<sheet>-->
<header>
<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="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="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_orden_c" string="Generar Orden de Compra" type="object" class="oe_highlight" attrs="{'invisible':[('cs_estados','in',['b','pe'])]}" /> -->
</header>
<group col="4" string="Datos Solicitud">
<h3><field nolabel="1" colspan="4" readonly="1" name="name"/></h3>
<field colspan="4" name="cs_solicitante" />
<field colspan="4" name="cs_referencia" />
<field colspan="2" name="cs_fecha_creacion" />
<field colspan="2" name="cs_fecha_limite" />
<field colspan="4" name="cs_solicitante" 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_limite" attrs="{'readonly':[('cs_estados','not in',['b'])]}" />
<field name="cs_solicit_generada" invisible="1" />
</group>
<notebook colspan="4">
<page string="Líneas de Solicitud">
<button type="object" class="btn btn-info" style="margin:5px;" name="seleccionar_todo" string="Seleccionar todo" attrs="{'invisible':[('cs_estados','in',['b','pe'])]}" />
<field nolabel="1" name="cs_linea_solicitud">
<tree create="1" edit="1" editable="1">
<field name="name" readonly="1" />
<field name="csl_descripcion" />
<field name="csl_solicitante"/>
<field name="csl_estados" />
<field name="csl_proovedor_propuesto"/>
<field name="csl_descripcion" 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_cs_estados" invisible="1"/>
<field name="csl_proovedor_propuesto" attrs="{'readonly':[('csl_cs_estados','not in',['b'])]}"/>
<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'])]}" />
<field name="csl_select" attrs="{'invisible':[('csl_estados','in',['pe','r'])]}"/>
</tree>
</field>
</page>
......
......@@ -40,14 +40,20 @@
<form>
<!--<sheet>-->
<header>
<field name="csp_orden_generada" invisible="1"/>
<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="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="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>
<group col="4">
<field name="csp_solicitante" />
<field name="csp_proovedorp" />
<field name="csp_solicitante" attrs="{'readonly':[('csp_estados','not in',['pe'])]}"/>
<field name="csp_proovedorp" attrs="{'readonly':[('csp_estados','not in',['pe'])]}"/>
</group>
<notebook colspan="4">
<page string="A presupuestar">
<field nolabel="1" name="csp_solicitudlinea">
<field nolabel="1" name="csp_solicitudlinea" attrs="{'readonly':[('csp_estados','not in',['pe'])]}">
<tree create="1" edit="1" editable="1">
<field name="name" readonly="1" />
<field name="csl_descripcion" />
......@@ -58,7 +64,7 @@
</field>
</page>
<page string="Adjuntos">
<field name="csp_adjuntos" required="0" nolabel="1" >
<field name="csp_adjuntos" required="0" nolabel="1" attrs="{'readonly':[('csp_estados','not in',['pe','e'])]}">
<tree create="1" edit="1" editable="1">
<field name="file" filename="file_name" editable="1" />
<field name="file_name" />
......
from . import crear_solicitudp
No preview for this file type
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class hgt_solicitarp(models.TransientModel):
_name = "hgt.solicitarp"
wiz_lineasol = fields.Many2one (
string =u'Linea de solicitud',
comodel_name ='hgt.compra_solicitudlinea',
)
wiz_proovedor= fields.Many2one (
string =u'Proovedor',
comodel_name ='hgt.instituciones',
)
def procesar_solicitudp(self):
return (True)
\ No newline at end of file
<odoo>
<data>
<record id="view_form_solicitar_p_ui" model="ir.ui.view">
<field name="name">Solicitar Presupuesto</field>
<field name="model">hgt.solicitarp</field>
<field name="arch" type="xml">
<form>
<group string="Seleccionar proovedor">
<field name="wiz_proovedor"/>
</group>
<footer>
<button name="procesar_solicitudp" type="object" string="Generar" class="btn-default" special="cancel"/>
<button string="Cancel" class="btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<act_window id="hgt_solicitar_p_action"
name="Solicitar Presupuesto"
src_model="hgt.solicitarp"
res_model="hgt.solicitarp"
view_mode="form"
target="new"
multi="True"/>
</data>
</odoo>
\ 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!