|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:cti_control="CTI.technique.controls.*" xmlns="*"
|
|
|
creationComplete="onCreationComplete()"
|
|
|
styleName="CTIView"
|
|
|
paddingTop="0" paddingBottom="0" paddingRight="0" paddingLeft="0"
|
|
|
creationPolicy="all">
|
|
|
<mx:Script>
|
|
|
<![CDATA[
|
|
|
|
|
|
import CTI.properties.CTI_Properties;
|
|
|
import CTI.technique.CTI_Utilitaires;
|
|
|
import CTI.technique.utils.DateUtil;
|
|
|
import CTI.vo.PmsiMat2aImport;
|
|
|
import flash.events.Event;
|
|
|
import flash.events.IEventDispatcher;
|
|
|
import flash.events.TimerEvent;
|
|
|
import flash.events.IOErrorEvent;
|
|
|
import flash.events.SecurityErrorEvent;
|
|
|
import flash.events.ProgressEvent;
|
|
|
import flash.net.FileFilter;
|
|
|
import flash.net.FileReference;
|
|
|
import flash.net.URLRequest;
|
|
|
import flash.net.URLVariables;
|
|
|
import flash.utils.ByteArray;
|
|
|
import flash.utils.Timer;
|
|
|
import mx.collections.ArrayCollection;
|
|
|
import mx.controls.Alert;
|
|
|
import mx.controls.DataGrid;
|
|
|
import mx.controls.dataGridClasses.DataGridColumn;
|
|
|
import mx.events.CloseEvent;
|
|
|
import mx.formatters.CurrencyFormatter;
|
|
|
import mx.formatters.DateFormatter;
|
|
|
import mx.formatters.NumberFormatter;
|
|
|
import mx.rpc.events.FaultEvent;
|
|
|
import mx.rpc.events.ResultEvent;
|
|
|
import mx.rpc.remoting.RemoteObject;
|
|
|
|
|
|
//private static const URL:String = './modules/pmsi/php/amfphp/index.php';
|
|
|
//private static const SOURCE:String = 'CtiPmsiImportService';
|
|
|
//private static const OPERATION:String = 'hello';
|
|
|
|
|
|
/**
|
|
|
* Objet qui gère les appels aux différents services AMFPHP
|
|
|
*/
|
|
|
private var _ro:RemoteObject;
|
|
|
|
|
|
[Bindable]
|
|
|
public var title:String = "Import des fichiers MAT2A/OVALIDE";
|
|
|
|
|
|
[Bindable]
|
|
|
public var hasHelp:Boolean = false;
|
|
|
|
|
|
[Bindable]
|
|
|
private var _imports_list:ArrayCollection = new ArrayCollection();
|
|
|
|
|
|
private var _fileRef:FileReference;
|
|
|
|
|
|
private var _dateFormatter:DateFormatter;
|
|
|
|
|
|
private var _numberFormatter:NumberFormatter;
|
|
|
|
|
|
private var _currencyFormatter:CurrencyFormatter;
|
|
|
|
|
|
private var _timer:Timer;
|
|
|
|
|
|
private var _ctiProperties:CTI_Properties;
|
|
|
|
|
|
private static const DATE_FORMAT:String = 'DD/MM/YYYY';
|
|
|
private static const IMPORT_SERVICE:String = 'CtiPmsiImportService';
|
|
|
private static const MODULE:String = 'pmsi';
|
|
|
|
|
|
|
|
|
public function onCreationComplete():void {
|
|
|
|
|
|
if (application.currentHelpFile != "") {
|
|
|
hasHelp = true;
|
|
|
}
|
|
|
|
|
|
// Initialse les labels des boutons des alertes (par défaut 'Yes' et 'No')
|
|
|
Alert.yesLabel = "Oui";
|
|
|
Alert.noLabel = "Non";
|
|
|
|
|
|
_ctiProperties = application.environmentProperties;
|
|
|
|
|
|
// Initialise le gestionnaire de services AMFPHP
|
|
|
// Détecte si l'application est lancée par https
|
|
|
var _secureAMF:Boolean = this.url.indexOf('https') >= 0 ? true : false;
|
|
|
_ro = application.ctiRemoteObjectProvider.getRemoteObject(MODULE, IMPORT_SERVICE, _secureAMF);
|
|
|
|
|
|
message.text = "Vérification de la configuration du serveur...";
|
|
|
checkPhpConfig();
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Vérifie sur le serveur que les extensions nécessaires aux différents services sont bien chargées.
|
|
|
*/
|
|
|
private function checkPhpConfig():void {
|
|
|
refreshButton.enabled = false;
|
|
|
browseButton.enabled = false;
|
|
|
//generateButton.enabled = false;
|
|
|
downloadButton.enabled = false;
|
|
|
progressBar.visible = false;
|
|
|
_ro.addEventListener(ResultEvent.RESULT, handlePhpConfigResult);
|
|
|
_ro.addEventListener(FaultEvent.FAULT, handlePhpConfigFault);
|
|
|
_ro.checkPhpConfig();
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Si la configuratin du serveur PHP est OK, on lance la récupération des imports, si non
|
|
|
* on demande à l'utilisateur s'il veut paramétrer le serveur
|
|
|
*
|
|
|
* @param event Retour de la fonction de vérification de la config PHP du serveur
|
|
|
*/
|
|
|
private function handlePhpConfigResult(event:ResultEvent):void {
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handlePhpConfigResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handlePhpConfigFault);
|
|
|
message.text = "";
|
|
|
// La configuration nécessite une mise à jour
|
|
|
if (event.result == 'KO') {
|
|
|
Alert.show( "La configuration du serveur doit être modifiée pour que l'import puisse fonctionner correctement. Voulez-vous effectuer cette modification maintenant ?",
|
|
|
"Erreur configuration serveur", Alert.YES | Alert.NO, null, applyPhpConfig, null, Alert.YES);
|
|
|
}
|
|
|
// Configuration OK, on lance la récupération des imports Mat2a
|
|
|
else {
|
|
|
getData();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
* @param event Fermeture de la fenêtre de dialogue de choix de modification de la configuration du serveur PHP
|
|
|
*/
|
|
|
private function applyPhpConfig(event:CloseEvent):void {
|
|
|
if (event.detail == Alert.YES) {
|
|
|
message.text = "Modification de la configuration du serveur en cours...";
|
|
|
// Lance la modification de la config du serveur PHP
|
|
|
CTI_Utilitaires.startRequestHTTP('modules/outils/php/httpService_wampManager_configure.php', new URLVariables(), exec, true, this.parentApplication);
|
|
|
|
|
|
function exec(resultatService:XML):void {
|
|
|
var returnCode:String = resultatService.RETURN[0].@code.toString();
|
|
|
var returnMessage:String = resultatService.RETURN[0].@message.toString();
|
|
|
|
|
|
if (returnCode == 'OK') {
|
|
|
// Met en place un petit Timer de 20 secondes le temps que le serveur PHP redémarre
|
|
|
message.text = "Veuillez patienter 20 secondes...";
|
|
|
_timer = new Timer(1000, 20);
|
|
|
_timer.addEventListener(TimerEvent.TIMER, waitHandler);
|
|
|
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, timerCompleteHandler);
|
|
|
_timer.start();
|
|
|
}
|
|
|
else {
|
|
|
Alert.show(returnMessage)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// Si l'utilisateur ne veut pas mettre à jour la config du serveur PHP, on ne fait rien de plus et on l'informe dans un message
|
|
|
else {
|
|
|
refreshButton.enabled = true;
|
|
|
message.text = "La configuration du serveur PHP doit être mise à jour pour que l'import se déroule normalement";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Met à jour l'affichage du message à chaque fin du timer (1 secondes). Cela fait comme un petit compte à rebours
|
|
|
*
|
|
|
* @param event Fin du délai du Timer
|
|
|
*/
|
|
|
private function waitHandler(event:TimerEvent):void {
|
|
|
message.text = "Veuillez patienter " + (20 - (event.target as Timer).currentCount).toString() + " secondes...";
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Quand 20 secondes se sont écoulées (20 fois le cycle d'une seconde du Timer), on relance au cas où la vérification de la config du serveur php
|
|
|
*
|
|
|
* @param event Fin des cycles du Timer
|
|
|
*/
|
|
|
private function timerCompleteHandler(event:TimerEvent):void {
|
|
|
_timer.removeEventListener(TimerEvent.TIMER, waitHandler);
|
|
|
_timer.removeEventListener(TimerEvent.TIMER_COMPLETE, timerCompleteHandler);
|
|
|
_timer.stop();
|
|
|
_timer = null;
|
|
|
message.text = "";
|
|
|
checkPhpConfig();
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
* @param event Erreur pendant l'appel au service de érification de la config du serveur
|
|
|
*/
|
|
|
private function handlePhpConfigFault(event:FaultEvent):void {
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handlePhpConfigResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handlePhpConfigFault);
|
|
|
progressBar.visible = false;
|
|
|
progressBar.label = "";
|
|
|
Alert.show("Impossible de vérifier la configuration du serveur (" + event.fault.faultString + ")");
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
* @param event Retour du service de recueil des imports Mat2a (succès)
|
|
|
*/
|
|
|
private function handleDataListResult(event:ResultEvent):void {
|
|
|
refreshButton.enabled = true;
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handleDataListResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handleDataListFault);
|
|
|
// Mapping des objets retournés par AmfPhp avec les objets Actionscript
|
|
|
var res:Array = new Array();
|
|
|
var a:PmsiMat2aImport;
|
|
|
for each (a in (event.result as Array)) {
|
|
|
res.push(a);
|
|
|
}
|
|
|
a = null;
|
|
|
// Affectation du dataProvider de la liste de données avec les données récupérées
|
|
|
_imports_list = new ArrayCollection(res);
|
|
|
setDatagridColumns();
|
|
|
progressBar.visible = false;
|
|
|
progressBar.label = "";
|
|
|
browseButton.enabled = true;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Selon le type d'établissement, ajoute les colonnes qui vont bien. Une fois ces colonnes ajoutées, il faut redéfinir leurs largeurs
|
|
|
* pour qu'elles aient bien toutes la même largeur (il doit y avoir une autre façon de faire mais ca marche comme ça)
|
|
|
*/
|
|
|
private function setDatagridColumns():void {
|
|
|
// Environnement privé, on met les colonnes "Nombre total de prestations" et "Montant base de remboursement"
|
|
|
if (_ctiProperties.properties['TYPEETS'] == '1') {
|
|
|
//addColumn(imports_list_GUI, 'mat2a_rsa_prestations_nb_total', "Nombre total de prestations", mat2a_rsa_prestations_nb_total_LF);
|
|
|
addColumn(imports_list_GUI, 'mat2a_rsa_prestations_base_remb', "Montant base de remboursement", mat2a_rsa_prestations_base_remb_LF);
|
|
|
}
|
|
|
// Environnement non privé, on met les colonnes "Nombre de séjours valorisés" et "Base de remboursement séjours valorisés"
|
|
|
else {
|
|
|
addColumn(imports_list_GUI, 'mat2a_nb_sejours_valorises', "Nombre de séjours valorisés", mat2a_nb_sejours_valorises_LF);
|
|
|
addColumn(imports_list_GUI, 'mat2a_br_sejours_valorises', "Montant base remboursement séjours valorisés", mat2a_br_sejours_valorises_LF);
|
|
|
}
|
|
|
|
|
|
// Tentative de resize correct des colonnes. Chaque colonne aura la même taille
|
|
|
this.updateDisplayList(this.unscaledWidth, this.unscaledHeight);
|
|
|
var columns:Array = imports_list_GUI.columns;
|
|
|
for each(var column:DataGridColumn in columns) {
|
|
|
column.width = imports_list_GUI.width / columns.length;
|
|
|
}
|
|
|
imports_list_GUI.columns = columns;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Ajoute une colonne à la grille de données si elle n'a pas déjà été ajoutée. Pour savoir si elle a déjà été ajoutée,
|
|
|
* on teste parmis toutes les colonnes de la datagrid si une d'elles a pour propriété 'dataField' celle de la colonne qu'on veut ajouter.
|
|
|
* Exemple commenté d'utilisation de la fonction some() sur un tableau :
|
|
|
* http://delfeld.wordpress.com/2010/04/25/array-methods-using-thisobject/
|
|
|
*
|
|
|
* @param pDatagrid Grille à laquelle il faut ajouter une colonne
|
|
|
* @param pDataField Champ à binder dans le fournisseur de données
|
|
|
* @param pHeaderText Texte de l'en-tête de la colonne
|
|
|
* @param pLabelFunction Fonction de rendu de texte associée à la colonne
|
|
|
*/
|
|
|
private function addColumn(pDatagrid:DataGrid, pDataField:String, pHeaderText:String, pLabelFunction:Function):void {
|
|
|
var a:Array = pDatagrid.columns;
|
|
|
var instanciated:Boolean = a.some(
|
|
|
function(item:*, index:int, array:Array):Boolean {
|
|
|
return item['dataField'] == this;
|
|
|
}, pDataField);
|
|
|
if (!instanciated) {
|
|
|
var column:DataGridColumn = new DataGridColumn();
|
|
|
column.dataField = pDataField;
|
|
|
column.headerText = pHeaderText;
|
|
|
column.labelFunction = pLabelFunction;
|
|
|
column.width = 90;
|
|
|
column.resizable = true;
|
|
|
column.editable = false;
|
|
|
a.push(column);
|
|
|
pDatagrid.columns = a;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
* @param event Erreur pendant l'appel au service
|
|
|
*/
|
|
|
private function handleDataListFault(event:FaultEvent):void {
|
|
|
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handleDataListResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handleDataListFault);
|
|
|
_ro.disconnect();
|
|
|
Alert.show(event.fault.faultString, "Impossible de récupérer la liste des imports Mat2a (" + event.fault.faultString + ")");
|
|
|
|
|
|
progressBar.visible = false;
|
|
|
progressBar.label = "";
|
|
|
browseButton.enabled = false;
|
|
|
//generateButton.enabled = false;
|
|
|
downloadButton.enabled = false;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Lance la récupération des données des imports mat2a
|
|
|
*/
|
|
|
private function getData():void {
|
|
|
browseButton.enabled = false;
|
|
|
//generateButton.enabled = false;
|
|
|
downloadButton.enabled = false;
|
|
|
refreshButton.enabled = false;
|
|
|
progressBar.visible = true;
|
|
|
progressBar.label = "Chargement des imports...";
|
|
|
_ro.addEventListener(ResultEvent.RESULT, handleDataListResult);
|
|
|
_ro.addEventListener(FaultEvent.FAULT, handleDataListFault);
|
|
|
_ro.getMat2aImports();
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Ouvre uen feneêtre de sélection du fichier zip à téléverser
|
|
|
*/
|
|
|
private function browseAndUpload():void {
|
|
|
var mat2aFileFilter:FileFilter = new FileFilter("Zip MAT2A/OVALIDE", "*.zip;*.do");
|
|
|
|
|
|
_fileRef = new FileReference();
|
|
|
_fileRef.addEventListener(Event.SELECT, fileRef_select);
|
|
|
_fileRef.addEventListener(Event.COMPLETE, fileRef_complete);
|
|
|
_fileRef.browse([mat2aFileFilter]);
|
|
|
message.text = "";
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Charge le fichier sélectionné par l'utilisateur
|
|
|
*
|
|
|
* @param evt Un fichier à téléverser a été sélectionné par l'utilisateur
|
|
|
*/
|
|
|
private function fileRef_select(evt:Event):void {
|
|
|
browseButton.enabled = false;
|
|
|
//generateButton.enabled = false;
|
|
|
downloadButton.enabled = false;
|
|
|
progressBar.visible = true;
|
|
|
progressBar.label = "Import en cours...";
|
|
|
_fileRef.load();
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Une fois que le fichier a été chargé en mémoire, lance le service d'upload
|
|
|
*
|
|
|
* @param evt Fichier chargé en mémoire
|
|
|
*/
|
|
|
private function fileRef_complete(evt:Event):void {
|
|
|
try {
|
|
|
var data:ByteArray = new ByteArray();
|
|
|
_fileRef.data.readBytes(data, 0, _fileRef.data.length);
|
|
|
|
|
|
data.compress();
|
|
|
|
|
|
_ro.addEventListener(ResultEvent.RESULT, handleFileUploadResult);
|
|
|
_ro.addEventListener(FaultEvent.FAULT, handleFileUploadFault);
|
|
|
_ro.uploadFile(_fileRef.name, data, _ctiProperties.properties['TYPEETS']);
|
|
|
} catch (err:Error) {
|
|
|
message.text = "ERROR: zero-byte file";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
private function handleFileUploadFault(event:FaultEvent):void {
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handleFileUploadResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handleFileUploadFault);
|
|
|
Alert.show("Erreur pendant l'envoi du fichier sur le serveur (" + event.fault.faultString);
|
|
|
progressBar.visible = false;
|
|
|
browseButton.enabled = true;
|
|
|
}
|
|
|
|
|
|
|
|
|
private function handleFileUploadResult(event:ResultEvent):void {
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handleFileUploadResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handleFileUploadFault);
|
|
|
var res:Array = event.result as Array;
|
|
|
|
|
|
if (res[0] == 'false') {
|
|
|
Alert.show(res[1], "Avertissement");
|
|
|
}
|
|
|
|
|
|
progressBar.label = "Import terminé.";
|
|
|
getData();
|
|
|
|
|
|
var timer:Timer = new Timer(3000);
|
|
|
timer.addEventListener(TimerEvent.TIMER, timerHandler);
|
|
|
timer.start();
|
|
|
}
|
|
|
|
|
|
|
|
|
private function timerHandler(timerEvent:TimerEvent):void {
|
|
|
var timer:Timer = timerEvent.currentTarget as Timer;
|
|
|
timer.stop();
|
|
|
timer.removeEventListener(TimerEvent.TIMER, timerHandler);
|
|
|
timer = null;
|
|
|
progressBar.visible = false;
|
|
|
browseButton.enabled = true;
|
|
|
}
|
|
|
|
|
|
|
|
|
public function doNothing():void { }
|
|
|
|
|
|
|
|
|
private function deleteImport():void {
|
|
|
if (imports_list_GUI.selectedItem is PmsiMat2aImport) {
|
|
|
var mat2a_import:PmsiMat2aImport = imports_list_GUI.selectedItem as PmsiMat2aImport;
|
|
|
var import_id:int = mat2a_import.oid;
|
|
|
var mat2a_annee:int = mat2a_import.mat2a_annee;
|
|
|
var mat2a_mois:String = DateUtil.int2Month(mat2a_import.mat2a_mois -1);
|
|
|
_ro.addEventListener(ResultEvent.RESULT, handleDeleteResult);
|
|
|
_ro.addEventListener(FaultEvent.FAULT, handleDeleteFault);
|
|
|
progressBar.label = "Suppression de l'import n° " + import_id.toString() + " (" + mat2a_mois + " " + mat2a_annee.toString() + ")";
|
|
|
progressBar.visible = true;
|
|
|
browseButton.enabled = false;
|
|
|
//generateButton.enabled = false;
|
|
|
downloadButton.enabled = false;
|
|
|
refreshButton.enabled = false;
|
|
|
deleteButton.enabled = false;
|
|
|
_ro.deleteImport(import_id);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/***************************************************/
|
|
|
|
|
|
private function downloadImport():void {
|
|
|
if (imports_list_GUI.selectedItem is PmsiMat2aImport) {
|
|
|
|
|
|
var request:URLRequest = new URLRequest(PmsiMat2aImport(imports_list_GUI.selectedItem).mat2a_filepath);
|
|
|
var realName:String = PmsiMat2aImport(imports_list_GUI.selectedItem).mat2a_filename + '.zip' as String;
|
|
|
try {
|
|
|
_fileRef = new FileReference();
|
|
|
configureDownloadListeners(_fileRef, true);
|
|
|
_fileRef.download(request, realName);
|
|
|
}
|
|
|
catch (err:Error) {
|
|
|
Alert.show(err.message, "Téléchargement fichier OVALIDE");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public function downloadFile():void
|
|
|
{
|
|
|
if (imports_list_GUI.selectedItem != null)
|
|
|
{
|
|
|
var urlRequest:URLRequest = new URLRequest();
|
|
|
var mat2a_import_id:String = imports_list_GUI.selectedItem.oid
|
|
|
urlRequest.url = "modules/pmsi/php/PMSI_getFile_Mat2a.php?mat2a_import_id=" + mat2a_import_id ;
|
|
|
urlRequest.method = "GET";
|
|
|
|
|
|
navigateToURL(urlRequest, "PMSI_getFile_Mat2a")
|
|
|
}
|
|
|
_fileRef.download(urlRequest, url);
|
|
|
}
|
|
|
|
|
|
private function configureDownloadListeners(dispatcher:IEventDispatcher, onOff:Boolean = true):void {
|
|
|
if (onOff == true) {
|
|
|
dispatcher.addEventListener(Event.CANCEL, cancelDownloadHandler);
|
|
|
dispatcher.addEventListener(Event.COMPLETE, completeDownloadHandler);
|
|
|
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorDownloadHandler);
|
|
|
dispatcher.addEventListener(Event.OPEN, openDownloadHandler);
|
|
|
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressDownloadHandler);
|
|
|
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorDownloadHandler);
|
|
|
dispatcher.addEventListener(Event.SELECT, selectDownloadHandler);
|
|
|
}
|
|
|
else {
|
|
|
dispatcher.removeEventListener(Event.CANCEL, cancelDownloadHandler);
|
|
|
dispatcher.removeEventListener(Event.COMPLETE, completeDownloadHandler);
|
|
|
dispatcher.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorDownloadHandler);
|
|
|
dispatcher.removeEventListener(Event.OPEN, openDownloadHandler);
|
|
|
dispatcher.removeEventListener(ProgressEvent.PROGRESS, progressDownloadHandler);
|
|
|
dispatcher.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorDownloadHandler);
|
|
|
dispatcher.removeEventListener(Event.SELECT, selectDownloadHandler);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private function cancelDownloadHandler(event:Event):void {
|
|
|
trace("cancelHandler: " + event);
|
|
|
}
|
|
|
|
|
|
private function completeDownloadHandler(event:Event):void {
|
|
|
trace("completeHandler: " + event);
|
|
|
}
|
|
|
|
|
|
private function ioErrorDownloadHandler(event:IOErrorEvent):void {
|
|
|
trace("ioErrorHandler: " + event);
|
|
|
}
|
|
|
|
|
|
private function openDownloadHandler(event:Event):void {
|
|
|
trace("openHandler: " + event);
|
|
|
}
|
|
|
|
|
|
private function progressDownloadHandler(event:ProgressEvent):void {
|
|
|
var file:FileReference = FileReference(event.target);
|
|
|
trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
|
|
|
}
|
|
|
|
|
|
private function securityErrorDownloadHandler(event:SecurityErrorEvent):void {
|
|
|
trace("securityErrorHandler: " + event);
|
|
|
}
|
|
|
|
|
|
private function selectDownloadHandler(event:Event):void {
|
|
|
var file:FileReference = FileReference(event.target);
|
|
|
trace("selectHandler: name=" + file.name);
|
|
|
}
|
|
|
/*********************************************/
|
|
|
|
|
|
|
|
|
private function handleDownloadFault(event:FaultEvent):void {
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handleDownloadResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handleDownloadFault);
|
|
|
progressBar.visible = false;
|
|
|
browseButton.enabled = true;
|
|
|
refreshButton.enabled = true;
|
|
|
deleteButton.enabled = true;
|
|
|
//generateButton.enabled = true;
|
|
|
downloadButton.enabled = true;
|
|
|
Alert.show(event.fault.faultString, "Impossible de récupérer le fichier de l'import OVALIDE (" + event.fault.faultString + ")");
|
|
|
}
|
|
|
|
|
|
|
|
|
private function handleDownloadResult(event:ResultEvent):void {
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handleDownloadResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handleDownloadFault);
|
|
|
progressBar.visible = false;
|
|
|
browseButton.enabled = true;
|
|
|
refreshButton.enabled = true;
|
|
|
deleteButton.enabled = true;
|
|
|
//generateButton.enabled = true;
|
|
|
downloadButton.enabled = true;
|
|
|
if (event.result != 'OK') {
|
|
|
Alert.show("Impossible de récupérer le fichier de l'import OVALIDE (" + event.result + ")");
|
|
|
}
|
|
|
//getData();
|
|
|
}
|
|
|
|
|
|
|
|
|
private function handleDeleteFault(event:FaultEvent):void {
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handleDeleteResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handleDeleteFault);
|
|
|
progressBar.visible = false;
|
|
|
browseButton.enabled = true;
|
|
|
refreshButton.enabled = true;
|
|
|
//generateButton.enabled = imports_list_GUI.selectedIndex > 0 ? true : false;
|
|
|
downloadButton.enabled = imports_list_GUI.selectedIndex > 0 ? true : false;
|
|
|
deleteButton.enabled = imports_list_GUI.selectedIndex > 0 ? true : false;
|
|
|
Alert.show(event.fault.faultString, "Impossible de supprimer l'import Mat2a (" + event.fault.faultString + ")");
|
|
|
}
|
|
|
|
|
|
|
|
|
private function handleDeleteResult(event:ResultEvent):void {
|
|
|
_ro.removeEventListener(ResultEvent.RESULT, handleDeleteResult);
|
|
|
_ro.removeEventListener(FaultEvent.FAULT, handleDeleteFault);
|
|
|
progressBar.visible = false;
|
|
|
browseButton.enabled = true;
|
|
|
refreshButton.enabled = true;
|
|
|
//generateButton.enabled = imports_list_GUI.selectedIndex > 0 ? true : false;
|
|
|
downloadButton.enabled = imports_list_GUI.selectedIndex > 0 ? true : false;
|
|
|
deleteButton.enabled = imports_list_GUI.selectedIndex > 0 ? true : false;
|
|
|
if (event.result != 'OK') {
|
|
|
Alert.show("Impossible de supprimer l'import Mat2a (" + event.result + ")");
|
|
|
}
|
|
|
getData();
|
|
|
}
|
|
|
|
|
|
|
|
|
private function mat2a_mois_LF(item:Object, column:DataGridColumn):String {
|
|
|
return DateUtil.addZero(item.mat2a_mois) + ' (' + DateUtil.int2Month(item.mat2a_mois -1) + ')';
|
|
|
}
|
|
|
|
|
|
|
|
|
private function date_LF(item:Object, column:DataGridColumn):String {
|
|
|
return dateLabelFunction(item, column, 'date');
|
|
|
}
|
|
|
|
|
|
|
|
|
private function mat2a_date_LF(item:Object, column:DataGridColumn):String {
|
|
|
return dateLabelFunction(item, column, 'mat2a_date');
|
|
|
}
|
|
|
|
|
|
|
|
|
private function mat2a_rsa_transmis_LF(item:Object, column:DataGridColumn):String {
|
|
|
return numberLabelFunction(item, column, 'mat2a_rsa_transmis');
|
|
|
}
|
|
|
|
|
|
|
|
|
private function mat2a_rsa_traites_LF(item:Object, column:DataGridColumn):String {
|
|
|
return numberLabelFunction(item, column, 'mat2a_rsa_traites');
|
|
|
}
|
|
|
|
|
|
|
|
|
private function mat2a_rsa_seances_LF(item:Object, column:DataGridColumn):String {
|
|
|
return numberLabelFunction(item, column, 'mat2a_rsa_seances');
|
|
|
}
|
|
|
|
|
|
|
|
|
private function mat2a_rsa_0_nuits_LF(item:Object, column:DataGridColumn):String {
|
|
|
return numberLabelFunction(item, column, 'mat2a_rsa_0_nuits');
|
|
|
}
|
|
|
|
|
|
|
|
|
private function mat2a_rsa_prestations_nb_total_LF(item:Object, column:DataGridColumn):String {
|
|
|
return numberLabelFunction(item, column, 'mat2a_rsa_prestations_nb_total');
|
|
|
}
|
|
|
|
|
|
private function mat2a_nb_sejours_valorises_LF(item:Object, column:DataGridColumn):String {
|
|
|
return numberLabelFunction(item, column, 'mat2a_nb_sejours_valorises');
|
|
|
}
|
|
|
|
|
|
private function mat2a_rsa_prestations_base_remb_LF(item:Object, column:DataGridColumn):String {
|
|
|
return currencyLabelFunction(item, column, 'mat2a_rsa_prestations_base_remb');
|
|
|
}
|
|
|
|
|
|
private function mat2a_br_sejours_valorises_LF(item:Object, column:DataGridColumn):String {
|
|
|
return currencyLabelFunction(item, column, 'mat2a_br_sejours_valorises');
|
|
|
}
|
|
|
|
|
|
|
|
|
private function dateLabelFunction(item:Object, column:DataGridColumn, property:String):String {
|
|
|
if (_dateFormatter == null) {
|
|
|
_dateFormatter = new DateFormatter();
|
|
|
_dateFormatter.formatString = DATE_FORMAT;
|
|
|
}
|
|
|
return _dateFormatter.format(item[property]);
|
|
|
}
|
|
|
|
|
|
|
|
|
private function numberLabelFunction(item:Object, column:DataGridColumn, property:String):String {
|
|
|
if (_numberFormatter == null) {
|
|
|
_numberFormatter = new NumberFormatter();
|
|
|
_numberFormatter.thousandsSeparatorTo = ' ' ;
|
|
|
_numberFormatter.decimalSeparatorTo = ',';
|
|
|
}
|
|
|
return _numberFormatter.format(item[property]);
|
|
|
}
|
|
|
|
|
|
|
|
|
private function currencyLabelFunction(item:Object, column:DataGridColumn, property:String):String {
|
|
|
if (_currencyFormatter == null) {
|
|
|
_currencyFormatter = new CurrencyFormatter();
|
|
|
_currencyFormatter.thousandsSeparatorTo = ' ' ;
|
|
|
_currencyFormatter.decimalSeparatorTo = ',';
|
|
|
_currencyFormatter.currencySymbol = ' \u20AC';
|
|
|
_currencyFormatter.alignSymbol = 'right';
|
|
|
}
|
|
|
trace(_currencyFormatter.format(item[property]));
|
|
|
return _currencyFormatter.format(item[property]);
|
|
|
}
|
|
|
|
|
|
private function generateImport():void {
|
|
|
|
|
|
|
|
|
}
|
|
|
]]>
|
|
|
</mx:Script>
|
|
|
<mx:VBox width="100%" height="100%">
|
|
|
<cti_control:CTIViewTitle id="GUI_titleBar" label="{title}" width="100%" height="25" />
|
|
|
<mx:Canvas width="100%" height="48" >
|
|
|
<mx:HBox width="100%" verticalAlign="middle" horizontalGap="10" paddingLeft="10" paddingRight="10">
|
|
|
<mx:HBox minWidth="250" width="100%" maxWidth="600" horizontalScrollPolicy="off">
|
|
|
<cti_control:CTIButton2 id="refreshButton" height="28" width="28" toolTip="Actualiser la liste des imports" icon="@Embed('../../base/swf/CTI/images/24/view-refresh.png')" labelPlacement="right" click="checkPhpConfig()" enabled="false" />
|
|
|
<cti_control:CTIButton2 id="browseButton" height="28" width="28" toolTip="Importer un nouveau fichier" icon="@Embed('../../base/swf/CTI/images/24/document-save-as.png')" labelPlacement="right" click="browseAndUpload()" enabled="false" />
|
|
|
<cti_control:CTIButton2 id="deleteButton" height="28" width="28" toolTip="Supprimer l'import sélectionné" icon="@Embed('../../base/swf/CTI/images/24/user-trash.png')" labelPlacement="right" click="deleteImport()" enabled="{imports_list_GUI.selectedIndex >= 0}" />
|
|
|
<!--
|
|
|
<cti_control:CTIButton2 id="generateButton" height="28" width="28" toolTip="Relancer le traitement de l'import sélectionné" icon="@Embed('../../base/swf/CTI/images/24/repeat.png')" labelPlacement="right" click="generateImport()" enabled="{imports_list_GUI.selectedIndex >= 0}" />
|
|
|
-->
|
|
|
<cti_control:CTIButton2 id="downloadButton" height="28" width="28" toolTip="Télécharger le fichier sélectionné" icon="@Embed('../../base/swf/CTI/images/24/document-save-all.png')" click="downloadFile()" enabled="{imports_list_GUI.selectedItem.mat2a_filename != '' && imports_list_GUI.selectedIndex >= 0}" />
|
|
|
<mx:ProgressBar id="progressBar" indeterminate="true" visible="false" />
|
|
|
<mx:Label id="message" />
|
|
|
</mx:HBox>
|
|
|
<mx:Button height="28" width="28" toolTip="Aide" icon="@Embed('../../base/swf/CTI/images/24/help.png')" labelPlacement="right" click="application.displayHelp()" visible="{hasHelp}" />
|
|
|
<mx:Button height="28" width="28" toolTip="A propos" icon="@Embed('../../base/swf/CTI/images/24/information.png')" labelPlacement="right" click="application.showApropos_view()" /> </mx:HBox>
|
|
|
</mx:Canvas>
|
|
|
<mx:VBox width="100%" height="100%" label="Etat des imports" backgroundColor="0xf0f0f0">
|
|
|
<mx:DataGrid id="imports_list_GUI" rowHeight="20" headerHeight="60"
|
|
|
height="100%" width="100%"
|
|
|
wordWrap="true" dataProvider="{_imports_list}"
|
|
|
fontFamily="tahoma" editable="false">
|
|
|
<mx:columns>
|
|
|
<mx:DataGridColumn dataField="oid" headerText="N°" width="30" editable="false" />
|
|
|
<mx:DataGridColumn dataField="date" headerText="Import dans iCTI" labelFunction="date_LF" width="90" resizable="true" editable="false" />
|
|
|
<mx:DataGridColumn dataField="mat2a_date" headerText="Traitement du fichier MAT2A/OVALIDE" labelFunction="mat2a_date_LF" width="90" resizable="true" editable="false" />
|
|
|
<mx:DataGridColumn dataField="mat2a_annee" headerText="Annee" width="80" resizable="true" editable="false" />
|
|
|
<mx:DataGridColumn dataField="mat2a_mois" headerText="Mois" labelFunction="mat2a_mois_LF" width="90" resizable="true" editable="false" />
|
|
|
<mx:DataGridColumn dataField="mat2a_rsa_transmis" headerText="RSA transmis" labelFunction="mat2a_rsa_transmis_LF" width="90" resizable="true" editable="false" />
|
|
|
<mx:DataGridColumn dataField="mat2a_rsa_traites" headerText="RSA traités" labelFunction="mat2a_rsa_traites_LF" width="90" resizable="true" editable="false" />
|
|
|
<mx:DataGridColumn dataField="mat2a_rsa_seances" headerText="RSA séances" labelFunction="mat2a_rsa_seances_LF" width="90" resizable="true" editable="false" />
|
|
|
<mx:DataGridColumn dataField="mat2a_rsa_0_nuits" headerText="RSA 0 nuits" labelFunction="mat2a_rsa_0_nuits_LF" width="90" resizable="true" editable="false" />
|
|
|
</mx:columns>
|
|
|
</mx:DataGrid>
|
|
|
</mx:VBox>
|
|
|
</mx:VBox>
|
|
|
</mx:Application>
|