Initial version

main
Frédérik Benoist 2023-07-08 08:44:32 +02:00
commit cbcd3666ae
416 changed files with 2030 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

160
.gitignore vendored Normal file
View File

@ -0,0 +1,160 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

106
backit html.py Normal file
View File

@ -0,0 +1,106 @@
from fogbugz import FogBugz
import sys
from jinja2 import Template
import os
import urllib
def main():
S_FOGBUGZ_URL = 'https://mobileretail.fogbugz.com/'
S_EMAIL = 'frederik.benoist@gfi.fr'
S_PASSWORD = '6brOc-gAr6'
MAX_BUGS = 10
TEMPLATE_FILE = '/Users/fbenoist68/Code/python/fogbugz/fbBackupTemplate.html'
fb = FogBugz(S_FOGBUGZ_URL)
fb.logon(S_EMAIL, S_PASSWORD)
resp = fb.search(q='type:"Cases"',
cols='ixBug',
max=MAX_BUGS)
tmpl = Template(open(TEMPLATE_FILE,'r').read())
for case in resp.cases.findAll('case'):
ixBug = int(case['ixBug'])
print(ixBug)
respBug = fb.search(q='%s' % ixBug,cols ='sTitle,sPersonAssignedTo,sProject,sArea,sCategory,sPriority,events')
xmlBug = respBug.cases.findAll('case')[0]
bug = {}
bug['ixBug'] = int(xmlBug['ixBug'])
bug['sTitle'] = xmlBug.sTitle.string if xmlBug.sTitle.string else ''
bug['sPersonAssignedTo'] = xmlBug.sPersonAssignedTo.string if xmlBug.sPersonAssignedTo.string else ''
bug['sProject'] = xmlBug.sProject.string if xmlBug.sProject.string else ''
bug['sArea'] = xmlBug.sArea.string if xmlBug.sArea.string else ''
bug['sCategory'] = xmlBug.sCategory.string if xmlBug.sCategory.string else ''
bug['sPriority'] = xmlBug.sPriority.string if xmlBug.sPriority.string else ''
bug['events'] = []
BACKUP_DIR = '/Users/fbenoist68/Code/python/fogbugz/fogbackup'
BACKUP_DIR += '/' + xmlBug.sProject.string if xmlBug.sProject.string else ''
if not os.path.exists(BACKUP_DIR):
os.makedirs(BACKUP_DIR)
BACKUP_DIR += '/' + str(xmlBug['ixBug'])
if not os.path.exists(BACKUP_DIR):
os.makedirs(BACKUP_DIR)
for event in xmlBug.events.findAll('event'):
bugEvent = {}
bugEvent['ixBugEvent'] = int(event['ixBugEvent'])
bugEvent['sVerb'] = event.sVerb.string if event.sVerb.string else ''
bugEvent['dt'] = event.dt.string if event.dt.string else ''
bugEvent['s'] = event.s.string if event.s.string else ''
bugEvent['sChanges'] = event.sChanges.string if event.sChanges.string else ''
bugEvent['evtDescription'] = event.evtDescription.string if event.evtDescription.string else ''
bugEvent['sPerson'] = event.sPerson.string if event.sPerson.string else ''
bugEvent['s'] = event.s.string.encode('ascii', 'ignore').decode('utf-8') if event.s.string else ''
theAttachments = ''
for att in event.rgAttachments:
theAttachments += 'Attachment: ' +att.sFileName.string + '\n'
print('Downloading attachment: ' + att.sFileName.string)
str1 = att.sURL.string
str2 = 'ixAttachment='
loc1 = str1.find(str2) + len(str2)
loc2 = str1.find('&sFileName')
str3 = ';sFileName='
loc3 = str1.find(str3) + len(str3)
loc4 = str1.find('&sTicket')
theURL = S_FOGBUGZ_URL #+ att.sURL.string
theURL += 'default.asp?'
theURL += 'ixAttachment=' + str1[loc1:loc2]
theURL += '&pg=pgDownload&pgType=pgFile&sFilename=' + str1[loc3:loc4]
theURL += '&token=rnl0t87rp34rfg6q0u0rgbhe85v5r8'
#fix the replace
newFileName = att.sFileName.string.replace('/','')
newFileName = newFileName.replace(':','')
newFileName = BACKUP_DIR+'/'+newFileName
print(newFileName)
urllib.request.urlretrieve(theURL, newFileName)
bugEvent['attachment'] = theAttachments
bug['events'].append(bugEvent)
f = open('%s\\%s.html' % (BACKUP_DIR,bug['ixBug']),'w')
f.write(tmpl.render(bug=bug))
f.close()
fb.view(ixBug=ixBug)
main()

232
backit.py Normal file
View File

@ -0,0 +1,232 @@
import requests
from fogbugz import FogBugz
import os
import urllib
import mimetypes
import re
GITEA_INSTANCE_URL = 'https://gitea.q2ii.fr'
GITEA_API_TOKEN = 'e5595a8807eb22fed9663c67553609832aaac909'
OWNER = 'fbenoist68'
REPO = 'mobileportal'
S_FOGBUGZ_URL = 'https://mobileretail.fogbugz.com/'
S_EMAIL = 'frederik.benoist@gfi.fr'
S_PASSWORD = '6brOc-gAr6'
MAX_BUGS = 999
def create_gitea_issue(title, body):
headers = {
'Authorization': 'token ' + GITEA_API_TOKEN
}
data = {
'title': title,
'body': body
}
url = f'{GITEA_INSTANCE_URL}/api/v1/repos/{OWNER}/{REPO}/issues'
response = requests.post(url, json=data, headers=headers)
if response.status_code == 201:
print('Issue created successfully.')
return response.json()['number']
else:
print('Failed to create issue:', response.text)
return None
def create_gitea_comment(issue_number, comment):
headers = {
'Authorization': 'token ' + GITEA_API_TOKEN
}
data = {
'body': comment
}
url = f'{GITEA_INSTANCE_URL}/api/v1/repos/{OWNER}/{REPO}/issues/{issue_number}/comments'
response = requests.post(url, json=data, headers=headers)
if response.status_code == 201:
print('Comment created successfully.')
comment_id = response.json()['id']
return comment_id
else:
print('Failed to create comment:', response.text)
return None
def upload_attachment_to_gitea_event(filename, attachment_data, comment_id):
headers = {
'Authorization': 'token ' + GITEA_API_TOKEN
}
# Determine the content type based on the file extension
content_type, _ = mimetypes.guess_type(filename)
if not content_type:
content_type = 'application/octet-stream'
data = {
'name': filename,
'attachment': (filename, attachment_data, content_type), # Provide the content type here
}
url = f'{GITEA_INSTANCE_URL}/api/v1/repos/{OWNER}/{REPO}/issues/comments/{comment_id}/assets'
response = requests.post(url, files=data, headers=headers)
if response.status_code == 201:
print('Attachment linked successfully to the event.')
# Get the browser_download_url from the response
download_url = response.json().get('browser_download_url')
print('Download URL:', download_url)
return download_url
else:
print('Failed to link attachment:', response.text)
return None
def update_gitea_comment(comment_id, updated_sHtml):
headers = {
'Authorization': 'token ' + GITEA_API_TOKEN
}
GITEA_PATCH_URL = f'{GITEA_INSTANCE_URL}/api/v1/repos/{OWNER}/{REPO}/issues/comments/{comment_id}'
patch_data = {
'body': updated_sHtml
}
response = requests.patch(GITEA_PATCH_URL, json=patch_data, headers=headers)
if response.status_code == 200:
print('Comment updated successfully.')
else:
print('Failed to update comment:', response.text)
def get_issue_id(issue):
return int(issue['ixBug'])
def get_event_id(event):
return int(event['ixBugEvent'])
def main():
fb = FogBugz(S_FOGBUGZ_URL)
fb.logon(S_EMAIL, S_PASSWORD)
resp = fb.search(q='type:"Cases"',
cols='ixBug',
max=MAX_BUGS)
for case in sorted(resp.cases.findAll('case'), key=get_issue_id, reverse=False):
ixBug = int(case['ixBug'])
if ixBug >= 242: # 93,242
print(ixBug)
respBug = fb.search(q='%s' % ixBug, cols='sTitle,sPersonAssignedTo,sProject,sArea,sCategory,sPriority,events')
xmlBug = respBug.cases.findAll('case')[0]
BACKUP_DIR = '/Users/fbenoist68/Code/python/fogbugz/fogbackup'
BACKUP_DIR += '/' + xmlBug.sProject.string if xmlBug.sProject.string else ''
if not os.path.exists(BACKUP_DIR):
os.makedirs(BACKUP_DIR)
BACKUP_DIR += '/' + str(xmlBug['ixBug'])
if not os.path.exists(BACKUP_DIR):
os.makedirs(BACKUP_DIR)
# Create Gitea issue
issue_title = f"[FogBugz #{ixBug}] {xmlBug.sTitle.string if xmlBug.sTitle.string else ''}"
issue_body = f"Assigned To: {xmlBug.sPersonAssignedTo.string}\n"
issue_body += f"Project: {xmlBug.sProject.string}\n"
issue_body += f"Area: {xmlBug.sArea.string}\n"
issue_body += f"Category: {xmlBug.sCategory.string}\n"
issue_body += f"Priority: {xmlBug.sPriority.string}\n"
issue_number = create_gitea_issue(issue_title, issue_body)
if issue_number is not None:
# Create Gitea comment for each event in reverse !!
for event in sorted(xmlBug.events.findAll('event'), key=get_event_id, reverse=True):
bugEvent = {}
bugEvent['ixBugEvent'] = int(event['ixBugEvent'])
bugEvent['sVerb'] = event.sVerb.string if event.sVerb.string else ''
bugEvent['dt'] = event.dt.string if event.dt.string else ''
bugEvent['s'] = event.s.string if event.s.string else ''
bugEvent['sChanges'] = event.sChanges.string if event.sChanges.string else ''
bugEvent['evtDescription'] = event.evtDescription.string if event.evtDescription.string else ''
bugEvent['sPerson'] = event.sPerson.string if event.sPerson.string else ''
if event.s and event.s.string:
bugEvent['s'] = event.s.string.encode('ascii', 'ignore').decode('utf-8')
else:
bugEvent['s'] = ''
if event.sHtml and event.sHtml.string:
bugEvent['sHtml'] = event.sHtml.string.encode('ascii', 'ignore').decode('utf-8')
else:
bugEvent['sHtml'] = ''
comment = f"Event ID: {bugEvent['ixBugEvent']}\n"
comment += f"Date: {bugEvent['dt']}\n"
comment += f"Person: {bugEvent['sPerson']}\n"
comment += f"Description: {bugEvent['evtDescription']}\n\n\n"
# Afficher sHtml s'il n'est pas vide, sinon afficher s
content = bugEvent['sHtml'] if bugEvent['sHtml'] else bugEvent['s']
comment += f"{content}"
comment_id = create_gitea_comment(issue_number=issue_number, comment=comment)
print('comment id',comment_id);
if comment_id is not None:
new_links = {}
for att in event.rgAttachments:
print('Downloading attachment: ' + att.sFileName.string)
str1 = att.sURL.string
str2 = 'ixAttachment='
loc1 = str1.find(str2) + len(str2)
loc2 = str1.find('&sFileName')
str3 = ';sFileName='
loc3 = str1.find(str3) + len(str3)
loc4 = str1.find('&sTicket')
theURL = S_FOGBUGZ_URL # + att.sURL.string
theURL += 'default.asp?'
theURL += 'ixAttachment=' + str1[loc1:loc2]
theURL += '&pg=pgDownload&pgType=pgFile&sFilename=' + str1[loc3:loc4]
theURL += '&token=rnl0t87rp34rfg6q0u0rgbhe85v5r8'
# fix the replace
newFileName = att.sFileName.string.replace('/', '')
newFileName = newFileName.replace(':', '')
newFileName = BACKUP_DIR + '/' + newFileName
print(newFileName)
urllib.request.urlretrieve(theURL, newFileName)
with open(newFileName, 'rb') as attachment_file:
attachment_data = attachment_file.read()
print('Uploading screenshot:', att.sFileName.string)
download_url = upload_attachment_to_gitea_event(att.sFileName.string, attachment_data, comment_id)
if download_url:
# Stocker le nouveau lien avec l'ID de l'attachement comme clé
new_links[str1[loc1:loc2]] = download_url
if new_links:
# Remplacer les liens d'attachement dans sHtml avec les nouvelles URLs
updated_sHtml = comment
for att_id, download_url in new_links.items():
# Utilisation d'une expression régulière pour trouver les liens img avec ixAttachment=574
pattern = fr'<img[^>]*?ixAttachment={att_id}[^>]*>'
# Remplacement de tous les liens correspondant au modèle par le nouveau download_url
updated_sHtml = re.sub(pattern, f'<img src="{download_url}"/>', updated_sHtml)
update_gitea_comment(comment_id, updated_sHtml)
fb.view(ixBug=ixBug)
main()

55
fbBackupTemplate.html Normal file
View File

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{bug.ixBug|e}} | {{bug.sTitle|e}}</title>
<style type="text/css">
.bugHeader {
outline-width: 2px;
outline-style: solid;
width: 90%;
padding: 5px;
background: #B8DDFF;
font: 24px "Trebuchet MS", Arial, Helvetica, sans-serif;
}
.bugEvent {
outline-width: 2px;
outline-style: solid;
outline-color: blue;
width: 90%;
padding: 5px;
background: #D2E9FF;
font: 12px Arial, Helvetica, sans-serif;
}
pre.s {
white-space: pre-wrap;
}
</style>
</head>
<body>
<div class="bugHeader">
<span class="ixBug">Bug ID: {{bug.ixBug|e}}</span><br>
<span class="sTitle">Title: {{bug.sTitle|e}}</span><br>
<span class="sPersonAssignedTo">Assigned To: {{bug.sPersonAssignedTo|e}}</span><br>
<span class="sProject">Project: {{bug.sProject|e}}</span><br>
<span class="sArea">Area: {{bug.sArea|e}}</span><br>
<span class="sCategory">Category: {{bug.sCategory|e}}</span><br>
<span class="sPriority">Title: {{bug.sPriority|e}}</span><br>
</div>
<div class="bugEvents">
{% for event in bug.events %}
<div class="bugEvent">
<span class="ixBugEvent">BugEvent ID: {{event.ixBugEvent|e}}</span><br>
<span class="dt">Date/Time: {{event.dt|e}}</span><br>
<span class="sVerb">Verb: {{event.sVerb|e}}</span><br>
<span class="evtDescription">Event Description: {{event.evtDescription|e}}</span><br>
<span class="sChanges">Changes: {{event.sChanges|e}}</span><br>
<span class="sPerson">Person: {{event.sPerson|e}}</span><br>
<span class="Text">Text: </span><br>
<pre class="s">{{event.s|e}}</pre><br>
<pre class="s">{{event.attachment|e}}</pre><br>
</div>
{% endfor %}
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -0,0 +1,415 @@
/* Formatted on 19/02/2013 16:27:45 (QP5 v5.206) */
SELECT a0a1a0a0.id_produit AS a0a1a0a0a1,
a0a1a0a0.id_famille AS a0a1a0a0a4,
a0a1a0a0.code_modele AS a0a1a0a0a3,
a0a1a0a0.id_type_produit AS a0a1a0a0a2,
a0a1a0a0.id_type_axe_valeur1 AS a0a1a0a0a6,
a0a1a0a0.id_type_axe_valeur2 AS a0a1a0a0a7,
a0a1a0a0.id_type_axe_valeur3 AS a0a1a0a0a8,
a0a1a0a0.id_type_axe_valeur4 AS a0a1a0a0a9,
a0a1a0a0.id_taxe AS a0a1a0a0a10,
a0a1a0a0.id_marque AS a0a1a0a0a21,
a0a1a0a0.id_structure AS a0a1a0a0a28,
a0a1a0a0.code_reference AS a0a1a0a0a11,
a0a1a0a0.nom AS a0a1a0a0a5,
a0a1a0a0.garantie_plantation AS a0a1a0a0a12,
a0a1a0a0.troc_axe1 AS a0a1a0a0a13,
a0a1a0a0.troc_axe2 AS a0a1a0a0a14,
a0a1a0a0.troc_axe3 AS a0a1a0a0a15,
a0a1a0a0.troc_axe4 AS a0a1a0a0a16,
a0a1a0a0.messagecentrale AS a0a1a0a0a17,
a0a1a0a0.ecotaxe AS a0a1a0a0a18,
a0a1a0a0.ecotaxe_tva AS a0a1a0a0a19,
a0a1a0a0.prix_vente AS a0a1a0a0a20,
a0a1a0a0.reference_constructeur AS a0a1a0a0a22,
a0a1a0a0.garantie_5_ans AS a0a1a0a0a26,
a0a1a0a0.garantieenpourcent AS a0a1a0a0a27,
a0a1a0a0.gestion_valeur AS a0a1a0a0a29,
a0a1a0a0.prochaine_reference AS a0a1a0a0a30,
a0a1a0a0.id_etat AS a0a1a0a0a31,
a0a1a0a0.annules AS a0a1a0a0a32,
a0a1a0a0.abandonnes AS a0a1a0a0a33,
a1a154a1a0.id_type_carte AS a1a154a1a0a6941,
a1a154a1a0.id_produit AS a1a154a1a0a6942,
a1a154a1a0.capoint AS a1a154a1a0a6943,
a1a154a1a0.capointremise AS a1a154a1a0a6944,
a1a134a1a0.id_marque AS a1a134a1a0a6141,
a1a134a1a0.nom AS a1a134a1a0a6142,
a1a20a1a0.produit_bipable AS a1a20a1a0a722,
a1a20a1a0.id_type_produit AS a1a20a1a0a721,
a20a21a2a0.id_type_produit AS a20a21a2a0a761,
a20a21a2a0.id_distrib AS a20a21a2a0a762,
a20a21a2a0.accept_repart_remis_pd_tick AS a20a21a2a0a782,
a20a21a2a0.afficher_dans_panneau_bouton AS a20a21a2a0a777,
a20a21a2a0.autoriser_retour AS a20a21a2a0a775,
a20a21a2a0.couleur AS a20a21a2a0a776,
a20a21a2a0.dispo_mode_deconnecte AS a20a21a2a0a781,
a20a21a2a0.exclure_calcul_fidelisation AS a20a21a2a0a784,
a20a21a2a0.exclure_calcul_op_commercial AS a20a21a2a0a785,
a20a21a2a0.forcer_selection_consommateur AS a20a21a2a0a763,
a20a21a2a0.forcer_selection_motif AS a20a21a2a0a765,
a20a21a2a0.print_comme_ligne_sur_ticket AS a20a21a2a0a766,
a20a21a2a0.imprimer_en_pied_ticket AS a20a21a2a0a768,
a20a21a2a0.montant_mini AS a20a21a2a0a770,
a20a21a2a0.montant_modifiable AS a20a21a2a0a773,
a20a21a2a0.pourcentage_mini_total_ticket AS a20a21a2a0a771,
a20a21a2a0.quantite_modifiable AS a20a21a2a0a774,
a20a21a2a0.remise_interdite AS a20a21a2a0a783,
a20a21a2a0.saisie_montant AS a20a21a2a0a764,
a20a21a2a0.sens_accepte AS a20a21a2a0a769,
a20a21a2a0.texte_remplacement_mt_null AS a20a21a2a0a772,
a20a21a2a0.total_en_pied_ticket AS a20a21a2a0a767,
a20a21a2a0.type_remise_maxi AS a20a21a2a0a778,
a20a21a2a0.un_seul_par_ticket AS a20a21a2a0a780,
a20a21a2a0.valeur_remise_maxi AS a20a21a2a0a779,
a20a21a2a0.prefix_code_barre AS a20a21a2a0a786,
a20a21a2a0.longueur_code_barre AS a20a21a2a0a787,
a20a21a2a0.type_code_barre AS a20a21a2a0a788,
a20a21a2a0.id_type_bon_achat AS a20a21a2a0a789,
a20a21a2a0.gestion_stock AS a20a21a2a0a792,
a20a21a2a0.impressionba AS a20a21a2a0a791,
a21a26a3a0.id_type_produit AS a21a26a3a0a1001,
a21a26a3a0.id_distrib AS a21a26a3a0a1002,
a21a26a3a0.code_motif AS a21a26a3a0a1003,
a21a26a3a0.date_deb AS a21a26a3a0a1004,
a21a26a3a0.date_fin AS a21a26a3a0a1005,
a21a26a3a0.id_pays AS a21a26a3a0a1006,
a26a27a4a0.code_motif AS a26a27a4a0a1041,
a26a27a4a0.forcer_selection_vendeur AS a26a27a4a0a1044,
a26a27a4a0.autoris_saisie_nouveau_prix AS a26a27a4a0a1050,
a26a27a4a0.deductible_du_total_ticket AS a26a27a4a0a1049,
a26a27a4a0.deduire_remise_pour_retour AS a26a27a4a0a1048,
a26a27a4a0.detail_par_ligne_article AS a26a27a4a0a1046,
a26a27a4a0.libelle AS a26a27a4a0a1042,
a26a27a4a0.libellecourt AS a26a27a4a0a1043,
a26a27a4a0.message_sur_ticket AS a26a27a4a0a1051,
a26a27a4a0.possible_pour_pied_ticket AS a26a27a4a0a1056,
a26a27a4a0.possible_pour_sous_total AS a26a27a4a0a1055,
a26a27a4a0.saisie_commentaire AS a26a27a4a0a1045,
a26a27a4a0.sens_valeur_accepte AS a26a27a4a0a1052,
a26a27a4a0.total_en_pied_de_ticket AS a26a27a4a0a1047,
a26a27a4a0.type_valeur AS a26a27a4a0a1053,
a26a27a4a0.valeur_defaut AS a26a27a4a0a1054,
a26a27a4a0.restockage_produit_retour AS a26a27a4a0a1057,
a26a27a4a0.alimenter_panier_litige AS a26a27a4a0a1058,
a26a27a4a0.valeur_maxi AS a26a27a4a0a1059,
a27a103a5a0.code_motif AS a27a103a5a0a4901,
a27a103a5a0.code AS a27a103a5a0a4902,
a27a103a5a0.libelle AS a27a103a5a0a4903,
a27a103a5a0.libellecourt AS a27a103a5a0a4904,
a21a57a3a0.id_type_bon_achat AS a21a57a3a0a2241,
a21a57a3a0.prefix_code_barre AS a21a57a3a0a2242,
a21a57a3a0.libelle AS a21a57a3a0a2243,
a21a57a3a0.longueur AS a21a57a3a0a2244,
a21a57a3a0.TYPE AS a21a57a3a0a2245,
a21a57a3a0.duree_validite_en_jours AS a21a57a3a0a2246,
a21a57a3a0.remonter_client AS a21a57a3a0a2247,
a57a120a4a0.id_type_bon_achat AS a57a120a4a0a5581,
a57a120a4a0.id_distrib AS a57a120a4a0a5582,
a57a120a4a0.duree_validite_en_jours AS a57a120a4a0a5583,
a57a120a4a0.secable AS a57a120a4a0a5584,
a1a99a1a0.id_produit AS a1a99a1a0a4741,
a1a99a1a0.code AS a1a99a1a0a4742,
a1a99a1a0.nom AS a1a99a1a0a4743,
a1a99a1a0.troc_axe1 AS a1a99a1a0a4744,
a1a99a1a0.troc_axe2 AS a1a99a1a0a4745,
a1a99a1a0.troc_axe3 AS a1a99a1a0a4746,
a1a99a1a0.troc_axe4 AS a1a99a1a0a4747,
a1a99a1a0.messagecentrale AS a1a99a1a0a4748,
a1a15a1a0.id_produit AS a1a15a1a0a562,
a1a15a1a0.code_barre AS a1a15a1a0a561,
a1a24a1a0.id_taxe AS a1a24a1a0a921,
a1a24a1a0.nom AS a1a24a1a0a922,
a24a25a2a0.id_pays AS a24a25a2a0a961,
a24a25a2a0.id_taxe AS a24a25a2a0a962,
a24a25a2a0.pourcentage AS a24a25a2a0a963,
a24a25a2a0.nom AS a24a25a2a0a964,
a25a161a3a0.id_pays AS a25a161a3a0a7122,
a25a161a3a0.id_taxe AS a25a161a3a0a7121,
a25a161a3a0.date_deb AS a25a161a3a0a7123,
a25a161a3a0.pourcentage AS a25a161a3a0a7125,
a25a161a3a0.date_fin AS a25a161a3a0a7124,
a1a119a1a0.id_pays AS a1a119a1a0a5541,
a1a119a1a0.id_produit AS a1a119a1a0a5542,
a1a119a1a0.id_taxe AS a1a119a1a0a5543,
a119a24a2a1.id_taxe AS a119a24a2a1a921,
a119a24a2a1.nom AS a119a24a2a1a922,
a24a25a3a1.id_pays AS a24a25a3a1a961,
a24a25a3a1.id_taxe AS a24a25a3a1a962,
a24a25a3a1.pourcentage AS a24a25a3a1a963,
a24a25a3a1.nom AS a24a25a3a1a964,
a25a161a4a1.id_pays AS a25a161a4a1a7122,
a25a161a4a1.id_taxe AS a25a161a4a1a7121,
a25a161a4a1.date_deb AS a25a161a4a1a7123,
a25a161a4a1.pourcentage AS a25a161a4a1a7125,
a25a161a4a1.date_fin AS a25a161a4a1a7124,
a1a126a1a0.id_distrib AS a1a126a1a0a5821,
a1a126a1a0.id_structure AS a1a126a1a0a5822,
a1a126a1a0.id_produit AS a1a126a1a0a5823,
a1a126a1a0.id_carte_fidelite_type AS a1a126a1a0a5825,
a1a126a1a0.garantie AS a1a126a1a0a5824,
a1a4a1a0.id_famille AS a1a4a1a0a81,
a1a4a1a0.id_famille_parent AS a1a4a1a0a82,
a1a4a1a0.id_type_axe1 AS a1a4a1a0a83,
a1a4a1a0.id_type_axe2 AS a1a4a1a0a84,
a1a4a1a0.id_type_axe3 AS a1a4a1a0a85,
a1a4a1a0.id_type_axe4 AS a1a4a1a0a86,
a1a4a1a0.niveau AS a1a4a1a0a87,
a1a4a1a0.id_couleur AS a1a4a1a0a89,
a1a4a1a0.nom AS a1a4a1a0a88,
a1a4a1a0.ecotaxe AS a1a4a1a0a90,
a1a4a1a0.garantie_par_defaut AS a1a4a1a0a91,
a1a4a1a0.saisie_serie AS a1a4a1a0a92,
a1a4a1a0.extension_garantie AS a1a4a1a0a93,
a1a4a1a0.code_externe AS a1a4a1a0a94,
a4a137a2a0.id_type_carte AS a4a137a2a0a6261,
a4a137a2a0.id_famille AS a4a137a2a0a6262,
a4a137a2a0.capoint AS a4a137a2a0a6263,
a4a137a2a0.capointremise AS a4a137a2a0a6264,
a1a4a1a1.id_famille AS a1a4a1a1a81,
a1a4a1a1.id_famille_parent AS a1a4a1a1a82,
a1a4a1a1.id_type_axe1 AS a1a4a1a1a83,
a1a4a1a1.id_type_axe2 AS a1a4a1a1a84,
a1a4a1a1.id_type_axe3 AS a1a4a1a1a85,
a1a4a1a1.id_type_axe4 AS a1a4a1a1a86,
a1a4a1a1.niveau AS a1a4a1a1a87,
a1a4a1a1.id_couleur AS a1a4a1a1a89,
a1a4a1a1.nom AS a1a4a1a1a88,
a1a4a1a1.ecotaxe AS a1a4a1a1a90,
a1a4a1a1.garantie_par_defaut AS a1a4a1a1a91,
a1a4a1a1.saisie_serie AS a1a4a1a1a92,
a1a4a1a1.extension_garantie AS a1a4a1a1a93,
a1a4a1a1.code_externe AS a1a4a1a1a94,
a1a4a1a2.id_famille AS a1a4a1a2a81,
a1a4a1a2.id_famille_parent AS a1a4a1a2a82,
a1a4a1a2.id_type_axe1 AS a1a4a1a2a83,
a1a4a1a2.id_type_axe2 AS a1a4a1a2a84,
a1a4a1a2.id_type_axe3 AS a1a4a1a2a85,
a1a4a1a2.id_type_axe4 AS a1a4a1a2a86,
a1a4a1a2.niveau AS a1a4a1a2a87,
a1a4a1a2.id_couleur AS a1a4a1a2a89,
a1a4a1a2.nom AS a1a4a1a2a88,
a1a4a1a2.ecotaxe AS a1a4a1a2a90,
a1a4a1a2.garantie_par_defaut AS a1a4a1a2a91,
a1a4a1a2.saisie_serie AS a1a4a1a2a92,
a1a4a1a2.extension_garantie AS a1a4a1a2a93,
a1a4a1a2.code_externe AS a1a4a1a2a94,
a1a4a1a3.id_famille AS a1a4a1a3a81,
a1a4a1a3.id_famille_parent AS a1a4a1a3a82,
a1a4a1a3.id_type_axe1 AS a1a4a1a3a83,
a1a4a1a3.id_type_axe2 AS a1a4a1a3a84,
a1a4a1a3.id_type_axe3 AS a1a4a1a3a85,
a1a4a1a3.id_type_axe4 AS a1a4a1a3a86,
a1a4a1a3.niveau AS a1a4a1a3a87,
a1a4a1a3.id_couleur AS a1a4a1a3a89,
a1a4a1a3.nom AS a1a4a1a3a88,
a1a4a1a3.ecotaxe AS a1a4a1a3a90,
a1a4a1a3.garantie_par_defaut AS a1a4a1a3a91,
a1a4a1a3.saisie_serie AS a1a4a1a3a92,
a1a4a1a3.extension_garantie AS a1a4a1a3a93,
a1a4a1a3.code_externe AS a1a4a1a3a94,
a1a17a1a0.id AS a1a17a1a0a641,
a1a17a1a0.id_type_axe AS a1a17a1a0a642,
a1a17a1a0.id_principal AS a1a17a1a0a643,
a1a17a1a0.valeur AS a1a17a1a0a644,
a1a17a1a0.code_externe AS a1a17a1a0a645,
a17a18a2a0.id AS a17a18a2a0a681,
a17a18a2a0.code AS a17a18a2a0a682,
a17a18a2a0.libelle AS a17a18a2a0a683,
a17a18a2a0.valeur AS a17a18a2a0a684,
a17a18a2a0.code_externe AS a17a18a2a0a685,
a1a17a1a1.id AS a1a17a1a1a641,
a1a17a1a1.id_type_axe AS a1a17a1a1a642,
a1a17a1a1.id_principal AS a1a17a1a1a643,
a1a17a1a1.valeur AS a1a17a1a1a644,
a1a17a1a1.code_externe AS a1a17a1a1a645,
a1a91a1a0.id_ligne AS a1a91a1a0a4381,
a1a91a1a0.id_catalogue AS a1a91a1a0a4382,
a1a91a1a0.id_produit AS a1a91a1a0a4383,
a1a95a1a0.id_produit AS a1a95a1a0a4581,
a1a95a1a0.id_pays AS a1a95a1a0a4582,
a1a95a1a0.ecotaxe AS a1a95a1a0a4583,
a1a11a1a0.id_tarif AS a1a11a1a0a401,
a1a11a1a0.id_produit AS a1a11a1a0a402,
a1a11a1a0.prix_vente AS a1a11a1a0a403,
a1a11a1a0.prix_vente_points AS a1a11a1a0a404,
a1a11a1a0.points_prix_vente AS a1a11a1a0a405,
a1a11a1a0.points AS a1a11a1a0a406,
a1a11a1a0.prix_minimal AS a1a11a1a0a407,
a11a14a2a0.id_tarif AS a11a14a2a0a521,
a11a14a2a0.id_structure AS a11a14a2a0a522,
a11a14a2a0.datedeb AS a11a14a2a0a523,
a11a14a2a0.datefin AS a11a14a2a0a524,
a11a14a2a0.datecreation AS a11a14a2a0a525,
a11a36a2a0.id_tarif AS a11a36a2a0a1441,
a11a36a2a0.code_motif AS a11a36a2a0a1444,
a11a36a2a0.code_saison AS a11a36a2a0a1443,
a11a36a2a0.id_devise AS a11a36a2a0a1445,
a11a36a2a0.solde AS a11a36a2a0a1442,
a11a36a2a0.type_tarif AS a11a36a2a0a1446,
a11a36a2a0.ht AS a11a36a2a0a1447,
a36a27a3a1.code_motif AS a36a27a3a1a1041,
a36a27a3a1.forcer_selection_vendeur AS a36a27a3a1a1044,
a36a27a3a1.autoris_saisie_nouveau_prix AS a36a27a3a1a1050,
a36a27a3a1.deductible_du_total_ticket AS a36a27a3a1a1049,
a36a27a3a1.deduire_remise_pour_retour AS a36a27a3a1a1048,
a36a27a3a1.detail_par_ligne_article AS a36a27a3a1a1046,
a36a27a3a1.libelle AS a36a27a3a1a1042,
a36a27a3a1.libellecourt AS a36a27a3a1a1043,
a36a27a3a1.message_sur_ticket AS a36a27a3a1a1051,
a36a27a3a1.possible_pour_pied_ticket AS a36a27a3a1a1056,
a36a27a3a1.possible_pour_sous_total AS a36a27a3a1a1055,
a36a27a3a1.saisie_commentaire AS a36a27a3a1a1045,
a36a27a3a1.sens_valeur_accepte AS a36a27a3a1a1052,
a36a27a3a1.total_en_pied_de_ticket AS a36a27a3a1a1047,
a36a27a3a1.type_valeur AS a36a27a3a1a1053,
a36a27a3a1.valeur_defaut AS a36a27a3a1a1054,
a36a27a3a1.restockage_produit_retour AS a36a27a3a1a1057,
a36a27a3a1.alimenter_panier_litige AS a36a27a3a1a1058,
a36a27a3a1.valeur_maxi AS a36a27a3a1a1059,
a27a103a4a1.code_motif AS a27a103a4a1a4901,
a27a103a4a1.code AS a27a103a4a1a4902,
a27a103a4a1.libelle AS a27a103a4a1a4903,
a27a103a4a1.libellecourt AS a27a103a4a1a4904,
a1a127a1a0.id_structure AS a1a127a1a0a5861,
a1a127a1a0.id_produit AS a1a127a1a0a5862,
a1a127a1a0.pvttc AS a1a127a1a0a5863,
a127a33a2a0.id_structure AS a127a33a2a0a1321,
a127a33a2a0.id_devise AS a127a33a2a0a1324,
a127a33a2a0.id_pays3 AS a127a33a2a0a1325,
a127a33a2a0.id_distrib AS a127a33a2a0a1326,
a127a33a2a0.id_cp3 AS a127a33a2a0a1330,
a127a33a2a0.id_taxe AS a127a33a2a0a1334,
a127a33a2a0.num_interne AS a127a33a2a0a1336,
a127a33a2a0.nom AS a127a33a2a0a1322,
a127a33a2a0.enseigne AS a127a33a2a0a1323,
a127a33a2a0.adresse1 AS a127a33a2a0a1327,
a127a33a2a0.adresse2 AS a127a33a2a0a1328,
a127a33a2a0.adresse3 AS a127a33a2a0a1329,
a127a33a2a0.tel3 AS a127a33a2a0a1331,
a127a33a2a0.fax3 AS a127a33a2a0a1332,
a127a33a2a0.mail AS a127a33a2a0a1333,
a127a33a2a0.droits_speciaux AS a127a33a2a0a1335,
a127a33a2a0.cp_sur_ticket AS a127a33a2a0a1337,
a127a33a2a0.campagne_chalandise_debut AS a127a33a2a0a1338,
a127a33a2a0.campagne_chalandise_fin AS a127a33a2a0a1339,
a127a33a2a0.decalage_horaire_ete AS a127a33a2a0a1340,
a127a33a2a0.decalage_horaire_hiver AS a127a33a2a0a1341,
a127a33a2a0.langue AS a127a33a2a0a1342,
a127a33a2a0.tel_sav AS a127a33a2a0a1343,
a127a33a2a0.capital_social AS a127a33a2a0a1344,
a127a33a2a0.type_societe AS a127a33a2a0a1345,
a127a33a2a0.num_siret AS a127a33a2a0a1346,
a127a33a2a0.numero_rc AS a127a33a2a0a1347,
a127a33a2a0.num_tva AS a127a33a2a0a1348,
a127a33a2a0.numero_id_fiscale AS a127a33a2a0a1349,
a127a33a2a0.id_niveau AS a127a33a2a0a1350,
a127a33a2a0.id_structure_parent AS a127a33a2a0a1351,
a127a33a2a0.structures_parents AS a127a33a2a0a1352,
a127a33a2a0.prefix_ip AS a127a33a2a0a1353,
a127a33a2a0.nb_factures AS a127a33a2a0a1354,
a127a33a2a0.nbre_jour_validite_pwd AS a127a33a2a0a1355,
a127a33a2a0.denominationsociale AS a127a33a2a0a1356,
a127a33a2a0.mentionlegale AS a127a33a2a0a1357,
a127a33a2a0.gpslatitude AS a127a33a2a0a1358,
a127a33a2a0.gpslongitude AS a127a33a2a0a1359,
a127a33a2a0.horaires_jours_ouverture AS a127a33a2a0a1360,
a127a33a2a0.ecommerce AS a127a33a2a0a1361
FROM produit a0a1a0a0
LEFT OUTER JOIN carte_fidelite_type_produit a1a154a1a0
ON (a0a1a0a0.id_produit = a1a154a1a0.id_produit)
LEFT OUTER JOIN marque a1a134a1a0
ON (a0a1a0a0.id_marque = a1a134a1a0.id_marque)
INNER JOIN produit_type a1a20a1a0
ON (a0a1a0a0.id_type_produit = a1a20a1a0.id_type_produit)
LEFT OUTER JOIN produit_type_distrib a20a21a2a0
ON (a1a20a1a0.id_type_produit = a20a21a2a0.id_type_produit)
AND ( (a20a21a2a0.id_distrib = '3'))
LEFT OUTER JOIN produit_type_distrib_motif a21a26a3a0
ON ( a20a21a2a0.id_type_produit =
a21a26a3a0.id_type_produit
AND a20a21a2a0.id_distrib = a21a26a3a0.id_distrib)
AND ( (a21a26a3a0.id_distrib = '3'))
LEFT OUTER JOIN motif a26a27a4a0
ON (a21a26a3a0.code_motif = a26a27a4a0.code_motif)
LEFT OUTER JOIN language_motif a27a103a5a0
ON (a26a27a4a0.code_motif = a27a103a5a0.code_motif)
AND ( (a27a103a5a0.code = '3'))
LEFT OUTER JOIN param_type_bon_achat a21a57a3a0
ON (a20a21a2a0.id_type_bon_achat = a21a57a3a0.id_type_bon_achat)
LEFT OUTER JOIN param_type_bon_achat_distrib a57a120a4a0
ON (a21a57a3a0.id_type_bon_achat =
a57a120a4a0.id_type_bon_achat)
AND ( (a57a120a4a0.id_distrib = '3'))
LEFT OUTER JOIN language_produit a1a99a1a0
ON (a0a1a0a0.id_produit = a1a99a1a0.id_produit)
AND ( (a1a99a1a0.id_produit = '1019629')
AND (a1a99a1a0.code = '3'))
LEFT OUTER JOIN produit_code_barre a1a15a1a0
ON (a0a1a0a0.id_produit = a1a15a1a0.id_produit)
LEFT OUTER JOIN param_taxes a1a24a1a0
ON (a0a1a0a0.id_taxe = a1a24a1a0.id_taxe)
LEFT OUTER JOIN param_taxes_valeur a24a25a2a0
ON (a1a24a1a0.id_taxe = a24a25a2a0.id_taxe)
AND ( (a24a25a2a0.id_pays = '59'))
LEFT OUTER JOIN param_taxes_valeur_histo a25a161a3a0
ON ( a24a25a2a0.id_pays = a25a161a3a0.id_pays
AND a24a25a2a0.id_taxe = a25a161a3a0.id_taxe)
LEFT OUTER JOIN param_taxes_produit_pays a1a119a1a0
ON (a0a1a0a0.id_produit = a1a119a1a0.id_produit)
AND ( (a1a119a1a0.id_pays = '59'))
LEFT OUTER JOIN param_taxes a119a24a2a1
ON (a1a119a1a0.id_taxe = a119a24a2a1.id_taxe)
LEFT OUTER JOIN param_taxes_valeur a24a25a3a1
ON (a119a24a2a1.id_taxe = a24a25a3a1.id_taxe)
AND ( (a24a25a3a1.id_pays = '59'))
LEFT OUTER JOIN param_taxes_valeur_histo a25a161a4a1
ON ( a24a25a3a1.id_pays = a25a161a4a1.id_pays
AND a24a25a3a1.id_taxe = a25a161a4a1.id_taxe)
LEFT OUTER JOIN produit_structure_garantie a1a126a1a0
ON (a0a1a0a0.id_produit = a1a126a1a0.id_produit)
AND ( (a1a126a1a0.id_distrib = '3'))
LEFT OUTER JOIN produit_famille a1a4a1a0
ON (a0a1a0a0.id_famille = a1a4a1a0.id_famille)
LEFT OUTER JOIN carte_fidelite_type_famille a4a137a2a0
ON (a1a4a1a0.id_famille = a4a137a2a0.id_famille)
LEFT OUTER JOIN produit_famille a1a4a1a1
ON (a0a1a0a0.id_famille = a1a4a1a1.id_famille)
LEFT OUTER JOIN produit_famille a1a4a1a2
ON (a0a1a0a0.id_famille = a1a4a1a2.id_famille)
LEFT OUTER JOIN produit_famille a1a4a1a3
ON (a0a1a0a0.id_famille = a1a4a1a3.id_famille)
LEFT OUTER JOIN param_axe_valeur a1a17a1a0
ON (a0a1a0a0.id_type_axe_valeur1 = a1a17a1a0.id)
LEFT OUTER JOIN language_param_axe_valeur a17a18a2a0
ON (a1a17a1a0.id = a17a18a2a0.id)
LEFT OUTER JOIN param_axe_valeur a1a17a1a1
ON (a0a1a0a0.id_type_axe_valeur2 = a1a17a1a1.id)
LEFT OUTER JOIN catalogue_ligne a1a91a1a0
ON (a0a1a0a0.id_produit = a1a91a1a0.id_produit)
LEFT OUTER JOIN produit_ecopart_pays a1a95a1a0
ON (a0a1a0a0.id_produit = a1a95a1a0.id_produit)
AND ( (a1a95a1a0.id_produit = '1019629')
AND (a1a95a1a0.id_pays = '59'))
INNER JOIN tarif_ligne a1a11a1a0
ON (a0a1a0a0.id_produit = a1a11a1a0.id_produit)
INNER JOIN tarif_structure a11a14a2a0
ON (a1a11a1a0.id_tarif = a11a14a2a0.id_tarif)
AND ( (a11a14a2a0.id_structure = '760'))
INNER JOIN tarif a11a36a2a0
ON (a1a11a1a0.id_tarif = a11a36a2a0.id_tarif)
LEFT OUTER JOIN motif a36a27a3a1
ON (a11a36a2a0.code_motif = a36a27a3a1.code_motif)
LEFT OUTER JOIN language_motif a27a103a4a1
ON (a36a27a3a1.code_motif = a27a103a4a1.code_motif)
AND ( (a27a103a4a1.code = '3'))
LEFT OUTER JOIN produit_structure_visu a1a127a1a0
ON (a0a1a0a0.id_produit = a1a127a1a0.id_produit)
AND ( ( a1a127a1a0.id_structure = '760'
OR a1a127a1a0.id_structure = '243'
OR a1a127a1a0.id_structure = '2'
OR a1a127a1a0.id_structure = '1'))
LEFT OUTER JOIN structure a127a33a2a0
ON (a1a127a1a0.id_structure = a127a33a2a0.id_structure)
WHERE a0a1a0a0.id_produit = 1019629

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,186 @@
// .///.
// (0 o)
//-------------0000--(_)--0000---------------
//
// (C) 2012-2014 Frédérik BENOIST / Garsys
// Tout droits réservés
//
// oooO Oooo
//------------( )-----( )---------------
// \ ( ) /
// \_) (_/
package RestWebServices;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import my.lib.db.CallDB;
import my.lib.rest.RestUtils;
import org.json.JSONObject;
@Path("Concurrence")
public class Concurrence {
@Context
private UriInfo context;
/**
* Creates a new instance of Concurrence
*/
public Concurrence() {
}
/**
* Récupération de la liste des enseignes concurrentes
*/
@GET
@Path("/liste")
@Produces("application/json")
public Response getListe(@QueryParam("guid") String pguid) {
JSONObject oResult = new JSONObject();
JSONObject oParam = new JSONObject();
CallDB oDb = new CallDB();
// json des paramètres
oParam.put("guid", pguid);
oResult = oDb.jsCallPROCReturnCLOB(
"p_mportal_concurrence.ws_concurrence_ens_liste",
oParam);
if (oDb.CallSuccess()) {
return RestUtils.MakeResponse(oResult.toString());
} else {
return RestUtils.MakeResponse("{}");
}
}
/**
* retourne les informations d'un concurrent
*/
@GET
@Path("/info/{pid_concurrence_enseigne}")
@Produces("application/json")
public Response getInfo(
@PathParam("pid_concurrence_enseigne") int pid_concurrence_enseigne,
@QueryParam("guid") String pguid) {
JSONObject oResult = new JSONObject();
JSONObject oParam = new JSONObject();
CallDB oDb = new CallDB();
// json des paramètres
oParam.put("guid", pguid);
oParam.put("id_concurrence_enseigne", pid_concurrence_enseigne);
oResult = oDb.jsCallPROCReturnVARCHAR2(
"p_mportal_concurrence.ws_concurrence_ens_get",
oParam);
if (oDb.CallSuccess()) {
return RestUtils.MakeResponse(oResult.toString());
} else {
return RestUtils.MakeResponse("{}");
}
}
/**
* enregistre les informations d'un nouveau concurrent
*/
@GET
@Path("/nouveau")
@Produces("application/json")
public Response getNouveau(
@QueryParam("guid") String pguid,
@QueryParam("libelle") String plibelle,
@QueryParam("site_web") String psite_web) {
JSONObject oResult = new JSONObject();
JSONObject oParam = new JSONObject();
CallDB oDb = new CallDB();
// json des paramètres
oParam.put("guid", pguid);
oParam.put("libelle", plibelle);
oParam.put("site_web", psite_web);
oResult = oDb.jsCallPROCReturnVARCHAR2(
"p_mportal_concurrence.ws_concurrence_ens_new",
oParam);
if (oDb.CallSuccess()) {
return RestUtils.MakeResponse(oResult.toString());
} else {
return RestUtils.MakeResponse("{}");
}
}
/**
* modifie les informations d'un concurrent
*/
@PUT
@Path("/modifie/{pid_concurrence_enseigne}")
@Consumes("application/x-www-form-urlencoded")
@Produces("application/json")
public Response putModifie(
@PathParam("pid_concurrence_enseigne") int pid_concurrence_enseigne,
@FormParam("guid") String pguid,
@FormParam("libelle") String plibelle,
@FormParam("site_web") String psite_web) {
JSONObject oResult = new JSONObject();
JSONObject oParam = new JSONObject();
CallDB oDb = new CallDB();
// json des paramètres
oParam.put("guid", pguid);
oParam.put("id_concurrence_enseigne", pid_concurrence_enseigne);
oParam.put("libelle", plibelle);
oParam.put("site_web", psite_web);
oResult = oDb.jsCallPROCReturnVARCHAR2(
"p_mportal_concurrence.ws_concurrence_ens_mod",
oParam);
if (oDb.CallSuccess()) {
return RestUtils.MakeResponse(oResult.toString());
} else {
return RestUtils.MakeResponse("{}");
}
}
/**
* supprime un concurrent
*/
@DELETE
@Path("/supprime/{pid_concurrence_enseigne}")
@Consumes("application/x-www-form-urlencoded")
@Produces("application/json")
public Response delSupprime(
@PathParam("pid_concurrence_enseigne") int pid_concurrence_enseigne,
@FormParam("guid") String pguid) {
JSONObject oResult = new JSONObject();
JSONObject oParam = new JSONObject();
CallDB oDb = new CallDB();
// json des paramètres
oParam.put("guid", pguid);
oParam.put("id_concurrence_enseigne", pid_concurrence_enseigne);
oResult = oDb.jsCallPROCReturnVARCHAR2(
"p_mportal_concurrence.ws_concurrence_ens_del",
oParam);
if (oDb.CallSuccess()) {
return RestUtils.MakeResponse(oResult.toString());
} else {
return RestUtils.MakeResponse("{}");
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Some files were not shown because too many files have changed in this diff Show More