Bilan Social"; [Bindable] public var bsSubLabel:String = "Défini par l'article R. 2323-17 du code du travail."; [Bindable] public var hasHelp:Boolean = false; [Bindable] public var imports_list:ArrayCollection = new ArrayCollection(); [Bindable] public var annees:Array = new Array(2015, 2014, 2013, 2012, 2011); [Bindable] public var entites:Array = new Array(); [Bindable] public var diagnoseList:Array = new Array(); public var entitiesAll:Array = new Array(); public var _enabled:Boolean = true; private var downloadURL:URLRequest; private var fileRef:FileReference; private var filename:String; public var _disabledMessage:String = "Le bilan social nécessite une visite de validation de CTI Santé pour démarrer cette fonctionnalité."; public function showEventHandle():void { if (!this._enabled) { Alert.show(this._disabledMessage, "Message de CTI Santé", Alert.OK, this, null, info_icon_class); application.closeCurrentWindow(); } } public function onCreationComplete():void { var _secureAMF:Boolean = this.url.indexOf('https') >= 0 ? true : false; _ro = application.ctiRemoteObjectProvider.getRemoteObject("rh", "CtiRhBilanSocialService", _secureAMF); isBsEnabled(); } private function isBsEnabled():void { _ro.addEventListener(ResultEvent.RESULT, handleBsEnabledResult); _ro.addEventListener(FaultEvent.FAULT, handleBsEnabledFault); _ro.isBsEnabled(); } private function handleBsEnabledResult(event:ResultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleBsEnabledResult); _ro.removeEventListener(FaultEvent.FAULT, handleBsEnabledFault); _enabled = event.result as Boolean; if (_enabled) { getEntities(); } else { Alert.show(this._disabledMessage, "Message de CTI Santé", Alert.OK, this, null, info_icon_class); application.closeCurrentWindow(); } } private function handleBsEnabledFault(event:FaultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleBsEnabledResult); _ro.removeEventListener(FaultEvent.FAULT, handleBsEnabledFault); _ro.disconnect(); Alert.show(this._disabledMessage, "Message de CTI Santé", Alert.OK, this, null, info_icon_class); application.closeCurrentWindow(); } private function getEntities():void { _ro.addEventListener(ResultEvent.RESULT, handleEntitiesResult); _ro.addEventListener(FaultEvent.FAULT, handleEntitiesFault); _ro.getEntities(); } private function handleEntitiesResult(event:ResultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleEntitiesResult); _ro.removeEventListener(FaultEvent.FAULT, handleEntitiesFault); entitiesAll = event.result as Array; for each(var o:Object in entitiesAll) { entites.push(o.texte); } if (entitiesAll.length > 0) { cbEntity.selectedIndex = 0; diagnose(); } else { Alert.show("Impossible de lister les entreprises/établissements.", "Bilan Social."); } } private function handleEntitiesFault(event:FaultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleEntitiesResult); _ro.removeEventListener(FaultEvent.FAULT, handleEntitiesFault); _ro.disconnect(); Alert.show("Impossible de lister les entreprises/établissements.", "Bilan Social."); } private function generer():void { btnTelecharger.enabled = false; btnGenerer.label = "Génération en cours..."; btnGenerer.enabled = false; cbYear.enabled = false; cbEntity.enabled = false; filename = "BilanSocial_"+cbYear.selectedItem+"_"+entitiesAll[cbEntity.selectedIndex].code+".xlsx"; _ro.addEventListener(ResultEvent.RESULT, handleDataListResult); _ro.addEventListener(FaultEvent.FAULT, handleDataListFault); _ro.generateExcel(cbYear.selectedItem, filename, entitiesAll[cbEntity.selectedIndex].ent_id, entitiesAll[cbEntity.selectedIndex].ets_id); } private function handleDataListResult(event:ResultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleDataListResult); _ro.removeEventListener(FaultEvent.FAULT, handleDataListFault); var res:String = event.result as String; if (res == "diagnose") { diagnose(); } else { checkIfRealError(); } } private function handleDataListFault(event:FaultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleDataListResult); _ro.removeEventListener(FaultEvent.FAULT, handleDataListFault); _ro.disconnect(); /* Etant donné que PHP 5.2.5 fait planter Apache mais que malgré tout le fichier est bien généré, on considère qu'on a une chance de le récupérer si amfPHP est en erreur. */ checkIfRealError(); } private function checkIfRealError():void { _ro.addEventListener(ResultEvent.RESULT, handleFgResult); _ro.addEventListener(FaultEvent.FAULT, handleFgFault); _ro.fileGenerated(filename); } private function handleFgResult(event:ResultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleFgResult); _ro.removeEventListener(FaultEvent.FAULT, handleFgFault); var res:Boolean = event.result as Boolean; btnGenerer.label = "Générer"; btnGenerer.enabled = true; cbYear.enabled = true; cbEntity.enabled = true; if(res) { btnTelecharger.enabled = true; } else { Alert.show("Impossible de générer le Bilan Social. Fichier non généré.", "Bilan Social."); } } private function handleFgFault(event:FaultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleFgResult); _ro.removeEventListener(FaultEvent.FAULT, handleFgFault); _ro.disconnect(); btnGenerer.label = "Générer"; btnGenerer.enabled = true; cbYear.enabled = true; cbEntity.enabled = true; Alert.show("Impossible de générer le Bilan Social.", "Bilan Social."); } private function telecharger():void { var appUrl:String = Application.application.url.replace("CTI.swf", "temp/"); downloadURL = new URLRequest(); downloadURL.url = appUrl + filename; fileRef = new FileReference(); configureListeners(fileRef); fileRef.download(downloadURL, filename); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); Alert.show(filename + " téléchargé.", "Bilan Social."); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); Alert.show("Impossible de télécharger le Bilan Social.\nVous n'êtes peut-être pas connecté au réseau ou vous essayer d'écraser un fichier actuellement ouvert sur votre ordinateur.", "Bilan Social."); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); Alert.show("Impossible de télécharger le Bilan Social. Mettez à jour votre plugin Flash Player du navigateur.", "Bilan Social."); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + downloadURL.url); } private function diagnose():void { btnVerifier.label = "Vérification en cours..."; btnVerifier.enabled = false; _ro.addEventListener(ResultEvent.RESULT, handleDiagnoseResult); _ro.addEventListener(FaultEvent.FAULT, handleDiagnoseFault); _ro.diagnose(); } private function handleDiagnoseResult(event:ResultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleDiagnoseResult); _ro.removeEventListener(FaultEvent.FAULT, handleDiagnoseFault); var res:Array = event.result as Array; diagnoseList = res; if (diagnoseList.length > 0){ excelVBox.visible = false; excelVBox.includeInLayout = false; } else { excelVBox.visible = true; excelVBox.includeInLayout = true; } btnVerifier.label = "Relancer la vérification"; btnVerifier.enabled = true; btnGenerer.label = "Générer"; btnGenerer.enabled = true; } private function handleDiagnoseFault(event:FaultEvent):void { _ro.removeEventListener(ResultEvent.RESULT, handleDiagnoseResult); _ro.removeEventListener(FaultEvent.FAULT, handleDiagnoseFault); _ro.disconnect(); Alert.show("Impossible de vérifier les pré-requis pour la génération du Bilan Social.", "Bilan Social."); btnVerifier.label = "Relancer la vérification"; btnVerifier.enabled = true; } ]]>