ajout module devis
This commit is contained in:
113
mondumas/models/devis.py
Normal file
113
mondumas/models/devis.py
Normal file
@@ -0,0 +1,113 @@
|
||||
# -*- coding: utf8 -*-
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import (
|
||||
scoped_session,
|
||||
sessionmaker,
|
||||
)
|
||||
from zope.sqlalchemy import (
|
||||
ZopeTransactionExtension,
|
||||
mark_changed
|
||||
)
|
||||
|
||||
from datetime import *
|
||||
import transaction
|
||||
import os
|
||||
|
||||
from ..views.default import (
|
||||
to_int,
|
||||
)
|
||||
|
||||
|
||||
def execute_query(request, query, params):
|
||||
"""Execute query and mark session as changed"""
|
||||
request.dbsession.execute(query, params)
|
||||
mark_changed(request.dbsession)
|
||||
transaction.commit()
|
||||
|
||||
def get_devis_byName(request, societe, name):
|
||||
numero = to_int(name)
|
||||
|
||||
if numero > 0:
|
||||
query = """SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, nopol, nochantier, web
|
||||
FROM devis WHERE societe=:societe AND no_id >=:name LIMIT 300;;""" % (societe, name)
|
||||
elif len(name) == 0:
|
||||
query = """SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, nopol, nochantier, web
|
||||
FROM devis WHERE societe=:societe ORDER BY no_id DESC LIMIT 300;"""
|
||||
else:
|
||||
query = """(SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, nopol , nochantier, web
|
||||
FROM devis WHERE societe=:societe AND c_nom LIKE ':name%' LIMIT 500)"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'name': name}).fetchall()
|
||||
return results
|
||||
|
||||
def get_devfac_by_no(request,nodossier):
|
||||
# lire devis, facture ou proforma
|
||||
|
||||
societe = nodossier[0:2]
|
||||
type_doc = nodossier[3:5]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
if type_doc == 'DE':
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM devis d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
elif type_doc == 'FA':
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM facture d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
else:
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM proforma d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
return results
|
||||
|
||||
def get_devis_lig_by_no(request,nodossier):
|
||||
|
||||
societe = nodossier[0:2]
|
||||
type_doc = nodossier[3:5]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
if type_doc == 'DE':
|
||||
query = "SELECT * FROM devis_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
elif type_doc == 'FA':
|
||||
query = "SELECT * FROM facture_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
else:
|
||||
query = "SELECT * FROM proforma_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall()
|
||||
return results
|
||||
|
||||
def insert_devis_from_dossier(request, nodossier, logged_in):
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[3:]
|
||||
|
||||
query = "CALL spINS_DEVIS_FROM_DOSSIER(:societe, 'DDW', :no_id, :logged_in);"
|
||||
results = request.dbsession.execute(query,{'societe': societe, 'no_id': no_id, 'logged_in': logged_in}).first()
|
||||
return results
|
||||
|
||||
def get_devis_by_no(request,nodossier):
|
||||
# lire devis, facture ou proforma
|
||||
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM devis d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
return results
|
||||
@@ -57,35 +57,6 @@ def get_clients_byName(request, societe, nom):
|
||||
return results
|
||||
|
||||
|
||||
def get_devis_by_no(request,nodossier):
|
||||
societe = nodossier[0:2]
|
||||
type_doc = nodossier[3:5]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
if type_doc == 'DE':
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM devis d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
elif type_doc == 'FA':
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM facture d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
else:
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM proforma d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
return results
|
||||
|
||||
def get_dossier_rdv_by_no(request,nodossier, nolig):
|
||||
societe = nodossier[0:2]
|
||||
@@ -150,22 +121,6 @@ WHERE societe<>:societe AND C_NOM=:C_NOM AND C_ADR=:C_ADR AND C_CP=:C_CP AND C_V
|
||||
|
||||
return results
|
||||
|
||||
def get_devis_lig_by_no(request,nodossier):
|
||||
|
||||
societe = nodossier[0:2]
|
||||
type_doc = nodossier[3:5]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
if type_doc == 'DE':
|
||||
query = "SELECT * FROM devis_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
elif type_doc == 'FA':
|
||||
query = "SELECT * FROM facture_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
else:
|
||||
query = "SELECT * FROM proforma_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall()
|
||||
return results
|
||||
|
||||
def get_docs_attaches(request, nodossier, norapport, nosection, filename):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
|
||||
Reference in New Issue
Block a user