public void Init(IElementAOperationsRealisees element) { m_bIsFilling = true; m_wndListeOperations.SuspendDrawing(); m_elementAOperations = element; m_wndListeOperations.Init(m_elementAOperations); ///Préinitialise avec les valeurs planifiées ///comme ça, quand on clique sur check, la date est préinitialisée CFractionIntervention fraction = element as CFractionIntervention; if (fraction != null) { m_dtDebut.Value = fraction.DateDebutPlanifie; m_dtFin.Value = fraction.DateFinPlanifiee; m_wndDuree.ValeurHeure = fraction.DureeSaisie; } ///et affecte les valeurs réelles m_dtDebut.Value = element.DateDebut; m_dtFin.Value = element.DateFin; m_bIsFilling = false; RecalcSize(); m_wndListeOperations.ResumeDrawing(); }
//------------------------------------------------------------ private void m_btnAjouter_Click(object sender, EventArgs e) { if (m_elementAIntervention == null) { return; } CTypeIntervention typeIntervention = (CTypeIntervention)CFormSelectUnObjetDonnee.SelectionRechercheRapide( I.T("Sélectionnez une intervention|20732"), typeof(CTypeIntervention), null, "", "", ""); if (typeIntervention != null) { CIntervention tache = new CIntervention(m_contexteDonnee); tache.CreateNewInCurrentContexte(); tache.TypeIntervention = typeIntervention; tache.ElementAIntervention = (CObjetDonneeAIdNumerique)m_elementAIntervention; tache.DureePrevisionnelle = typeIntervention.DureeStandardHeures; CFractionIntervention fraction = new CFractionIntervention(m_contexteDonnee); fraction.CreateNewInCurrentContexte(); fraction.DateDebutPlanifie = m_controlPlanning.DateDebut; fraction.DateFinPlanifiee = fraction.DateDebutPlanifie.AddHours(tache.DureePrevisionnelle); fraction.Intervention = tache; m_controlPlanning.Refresh(); //m_controlPlanning.SelectTranche(fraction); } }
//---------------------------------------------------------------------------------------- void InitSelectEquipement() { if (!IsCreatingImage) { CFiltreData filtre = null; if (Operation != null && Operation.TypeEquipement != null) { filtre = CFiltreData.GetAndFiltre(filtre, new CFiltreData( CTypeEquipement.c_champId + " = @1", Operation.TypeEquipement.Id)); } CFractionIntervention fraction = ElementAOperations as CFractionIntervention; if (fraction != null && fraction.Intervention.ElementAIntervention != null) { filtre = CFiltreData.GetAndFiltre(filtre, new CFiltreData( CSite.c_champId + "=@1", fraction.Intervention.ElementAIntervention.Id)); } m_txtSelectEquipementLie.InitAvecFiltreDeBase <CEquipement>( "Libelle", filtre, true); } }
//------------------------------------------------------------------------------ public CResultAErreur Maj_Champs() { CResultAErreur result = CResultAErreur.True; CObjetDonnee objElementAOp = ElementAOperations as CObjetDonnee; if (ElementAOperations == null || (objElementAOp != null && !objElementAOp.IsValide())) { return(result); } ElementAOperations.DateDebut = m_dtDebut.Value; ElementAOperations.DateFin = m_dtFin.Value; if (!m_listeDerniersfractionInterventions.Contains(ElementAOperations.Id)) { m_listeDerniersfractionInterventions.Add(ElementAOperations.Id); } result = m_wndListeOperations.MajChamps(); CFractionIntervention fraction = ElementAOperations as CFractionIntervention; if (fraction != null) { fraction.DureeSaisie = m_wndDuree.ValeurHeure; } return(result); }
private void m_editeurFraction_MAJ_Champs(object sender, CObjetDonneeResultEventArgs args) { if (args.Objet is CFractionIntervention) { CFractionIntervention fraction = (CFractionIntervention)args.Objet; fraction.DateDebutPlanifie = m_dtDebut.Value; fraction.DateFinPlanifiee = m_dtFin.Value; } }
private void m_editeurFraction_InitChamp(object sender, CObjetDonneeResultEventArgs args) { m_panelFraction.Visible = args.Objet is CFractionIntervention; if (args.Objet is CFractionIntervention) { CFractionIntervention fraction = (CFractionIntervention)args.Objet; m_dtDebut.Value = fraction.DateDebutPlanifie; m_dtFin.Value = fraction.DateFinPlanifiee; } }
public void Init(IElementAOperationsRealisees element) { m_bIsFilling = true; m_panelControles.SuspendDrawing(); m_elementAOperations = element; foreach (Control ctrl in m_listeControlsUtiles) { ctrl.Visible = false; ((CControleSaisieOperation)ctrl).Operation = null; } ///Préinitialise avec les valeurs planifiées ///comme ça, quand on clique sur check, la date est préinitialisée CFractionIntervention fraction = element as CFractionIntervention; if (fraction != null) { m_dtDebut.Value = fraction.DateDebutPlanifie; m_dtFin.Value = fraction.DateFinPlanifiee; m_wndDuree.ValeurHeure = fraction.DureeSaisie; } ///et affecte les valeurs réelles m_dtDebut.Value = element.DateDebut; m_dtFin.Value = element.DateFin; m_listeControlesReserve.AddRange(m_listeControlsUtiles); m_listeControlsUtiles.Clear(); CListeObjetsDonnees liste = m_elementAOperations.Operations; liste.Filtre = new CFiltreData(COperation.c_champIdOpParente + " is null"); int nIndex = 0; foreach (COperation donnee in liste) { AddOperation(donnee, ref nIndex, false); } if (m_listeControlsUtiles.Count == 0 && m_gestionnaireModeEdition.ModeEdition) { CControleSaisieOperation ctrl = GetNewControle(0); ctrl.InitControle(null, 0, 0, true); } ReordonneeTout(); m_bIsFilling = false; RecalcSize(); m_panelControles.ResumeDrawing(); }
//------------------------------------------------------------------------- private bool AffichePage(int nNumPage, bool bMajChampsAvantAffichage) { if (m_gestionnaireModeEdition.ModeEdition && bMajChampsAvantAffichage) { CResultAErreur result = MajChamps(); if (!result) { CFormAlerte.Afficher(result.Erreur); return(false); } } m_nPageEnCours = nNumPage; m_panelCRs.SuspendDrawing(); foreach (Control ctrl in new ArrayList(m_panelCRs.Controls)) { if (ctrl is CControleSaisiesOperations) { m_listeControles.Add((CControleSaisiesOperations)ctrl); ctrl.Visible = false; } } m_lblPageSurNbPages.Text = (m_nPageEnCours + 1).ToString() + "/" + m_nbPages.ToString(); for (int i = m_nPageEnCours * m_nbParPage; i < (m_nPageEnCours * m_nbParPage) + m_nbParPage; i++) { if (i < m_listeFractions.Count) { CFractionIntervention fraction = (CFractionIntervention)m_listeFractions[i]; if (fraction.DateDebut != null) { CControleSaisiesOperations ctrlSaisie = null; if (m_listeControles.Count > 0) { ctrlSaisie = m_listeControles[0]; m_listeControles.RemoveAt(0); ctrlSaisie.Visible = true; } else { ctrlSaisie = new CControleSaisiesOperations(); m_panelCRs.Controls.Add(ctrlSaisie); } ctrlSaisie.Dock = DockStyle.Top; ctrlSaisie.Visible = true; ctrlSaisie.LockEdition = !m_gestionnaireModeEdition.ModeEdition; ctrlSaisie.Init(fraction); } } } m_panelCRs.ResumeDrawing(); return(true); }
//------------------------------------------------------------------------------ public CResultAErreur Maj_Champs() { CResultAErreur result = CResultAErreur.True; CObjetDonnee objElementAOp = ElementAOperations as CObjetDonnee; if (ElementAOperations == null || (objElementAOp != null && !objElementAOp.IsValide())) { return(result); } ElementAOperations.DateDebut = m_dtDebut.Value; ElementAOperations.DateFin = m_dtFin.Value; //if (m_dtDebut.Value == null) //{ // result.EmpileErreur("Date de début d'intervention obligatoire"); // return result; //} if (!m_listeDerniersfractionInterventions.Contains(ElementAOperations.Id)) { m_listeDerniersfractionInterventions.Add(ElementAOperations.Id); } Hashtable tableNiveauToParent = new Hashtable(); foreach (CControleSaisieOperation control in m_listeControlsUtiles) { result = control.Maj_Champs(tableNiveauToParent); if (!result) { return(result); } COperation donnee = control.Operation; if (donnee != null) { tableNiveauToParent[donnee.Niveau] = donnee; } } CFractionIntervention fraction = ElementAOperations as CFractionIntervention; if (fraction != null) { fraction.DureeSaisie = m_wndDuree.ValeurHeure; } return(result); }
//-------------------------------------------------------------------------------- private void m_btnDeletePlanification_LinkClicked(object sender, EventArgs e) { if (m_wndListeFractions.SelectedItems.Count == 1) { CFractionIntervention fraction = (CFractionIntervention)m_wndListeFractions.SelectedItems[0].Tag; if (CFormAlerte.Afficher(I.T("Delete this planification ?|30203"), EFormAlerteType.Question) == DialogResult.Yes) { CResultAErreur result = fraction.Delete(); if (!result) { CFormAlerte.Afficher(result.Erreur); return; } UpdateFractions(); m_editeurFraction.SetObjetEnCoursToNull(); } } }
//------------------------------------------------------------------- public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte) { CResultAErreur result = base.TraitementAvantSauvegarde(contexte); if (!result) { return(result); } DataTable table = contexte.Tables[GetNomTable()]; if (table == null) { return(result); } ArrayList lst = new ArrayList(table.Rows); foreach (DataRow row in lst) { if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added) { CFractionIntervention fraction = new CFractionIntervention(row); if (fraction.DateDebut == null && fraction.EtatInt > (int)EtatFractionIntervention.AFaire) { result.EmpileErreur(I.T("The start date of the Intervention Part must be defined|208")); return(result); } if (fraction.DateDebut != null && fraction.DateFin != null && fraction.Intervention.TypeIntervention.TypeActiviteActeur != null) { result = ImputeDureeSurActivite(fraction); if (!result) { return(result); } } } } return(result); }
//-------------------------------------------------------------- private void AjouterCR(CFractionIntervention fraction) { if (Intervention.Operations.Count > 0) { if (CFormAlerte.Afficher(I.T("Fill operations from previsions ?|20137"), EFormAlerteType.Question) == DialogResult.Yes) { fraction.InitFromPrevisionnel(); } } CControleSaisiesOperations ctrlSaisie = new CControleSaisiesOperations(); m_panelCRs.Controls.Add(ctrlSaisie); ctrlSaisie.Dock = DockStyle.Top; ctrlSaisie.BringToFront(); ctrlSaisie.Visible = true; //m_gestionnaireModeEdition.SetModeEdition(ctrlSaisie, TypeModeEdition.EnableSurEdition); ctrlSaisie.LockEdition = !m_gestionnaireModeEdition.ModeEdition; ctrlSaisie.Init(fraction); ctrlSaisie.Focus(); }
public static DateTime?GetDateDivision(Point pt, CFractionIntervention fraction) { CFormDiviserIntervention form = new CFormDiviserIntervention(); TimeSpan sp = (DateTime)fraction.DateFinPlanifiee - (DateTime)fraction.DateDebutPlanifie; DateTime?dt = fraction.DateDebutPlanifie; if (dt == null) { return(null); } double fMinutes = (((int)sp.TotalMinutes) / 15) * 15 / 2; form.m_datePicker.Value = ((DateTime)fraction.DateDebutPlanifie).AddMinutes(fMinutes); form.Location = SFormPopup.GetPointForFormPopup(pt, form); if (form.ShowDialog() == DialogResult.OK) { return(form.m_datePicker.Value); } return(null); }
//------------------------------------------------------------------- public override CResultAErreur VerifieDonnees(CObjetDonnee objet) { CResultAErreur result = CResultAErreur.True; try { CFractionIntervention fraction = (CFractionIntervention)objet; if (fraction.DateDebut != null && fraction.DateFin != null) { if (fraction.DateFin < fraction.DateDebut) { result.EmpileErreur(I.T("The end date must be greater than the start date|416")); } } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }
//-------------------------------------------------------------- private CFractionIntervention AjouterFraction() { if (m_gestionnaireModeEdition.ModeEdition) { DateTime dateDebut = new DateTime(1900, 1, 1); foreach (CFractionIntervention fraction in Intervention.Fractions) { if (fraction.DateFinPlanifiee > dateDebut) { dateDebut = fraction.DateFinPlanifiee; } } if (Intervention.Fractions.Count == 0) { dateDebut = DateTime.Now; } CFractionIntervention fractionNew = new CFractionIntervention(Intervention.ContexteDonnee); fractionNew.CreateNewInCurrentContexte(); fractionNew.Intervention = Intervention; fractionNew.DateDebutPlanifie = dateDebut; if (m_wndDureePrevue.UnitValue != null) { fractionNew.DateFinPlanifiee = dateDebut.AddHours((double)m_wndDureePrevue.UnitValue.ConvertTo(CClasseUniteTemps.c_idH).Valeur); } else if (Intervention.TypeIntervention != null && Intervention.TypeIntervention.DureeStandardHeures > 0) { fractionNew.DateFinPlanifiee = dateDebut.AddHours(Intervention.TypeIntervention.DureeStandardHeures); } else { fractionNew.DateFinPlanifiee = dateDebut.AddHours(1); } UpdateFractions(); return(fractionNew); } return(null); }
private CResultAErreur ImputeDureeSurActivite(CFractionIntervention fraction) { CResultAErreur result = CResultAErreur.True; if (fraction.DateDebut == null || fraction.DateFin == null) { return(result); } if (fraction.TempsDeTravail == null) { return(result); } Hashtable tableToDelete = new Hashtable(); //Stocke la liste des relations qui étaient présentes avant le travail //et les note comme étant à supprimer foreach (CIntervention_ActiviteActeur rel in fraction.RelationsActivite) { tableToDelete[rel] = true; } CTypeActiviteActeur typeActivite = fraction.Intervention.TypeIntervention.TypeActiviteActeur; bool bAvecSite = typeActivite.SiteObligatoire; if (typeActivite != null) { //Evalue les valeurs des champs custom pour l'activite CParametreRemplissageActiviteParIntervention parametreRemplissage = fraction.Intervention.TypeIntervention.ParametreRemplissageActivite; Dictionary <CChampCustom, object> valeursChamps = new Dictionary <CChampCustom, object>(); CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(fraction); if (parametreRemplissage != null) { foreach (CRemplisssageChampActiviteActeur remplissage in parametreRemplissage.ListeRemplissage) { CChampCustom champ = new CChampCustom(fraction.ContexteDonnee); if (champ.ReadIfExists(remplissage.IdChampCustom)) { C2iExpression formule = remplissage.Formule; if (formule != null) { result = formule.Eval(ctxEval); if (result) { valeursChamps[champ] = result.Data; } } } } } foreach (CIntervention_Intervenant relIntervenant in fraction.Intervention.RelationsIntervenants) { DateTime dt = ((DateTime)fraction.DateDebut).Date; //Attention, si on est sur une fraction sur plusieurs jours, le //pb est que la durée saisie (retenue pour l'intervention) peut //ne pas être égale aux différents jours d'imputation, //on réparti donc la durée de manière homogène sur les différents //Jour en faisant un prorata de chaque jour double fDureeAImputer = (double)fraction.TempsDeTravail; double fDureeReelle = (double)fraction.DureeReelle; while (dt < (DateTime)fraction.DateFin && fDureeAImputer > 0) { //Cherche pour l'intervention ses activités du bon type CFiltreData filtre = new CFiltreDataAvance(CActiviteActeur.c_nomTable, CTypeActiviteActeur.c_champId + "=@1 and " + CActiviteActeur.c_champDate + ">=@2 and " + CActiviteActeur.c_champDate + "<@3 and " + "Has(" + CIntervention_ActiviteActeur.c_nomTable + "." + CIntervention_ActiviteActeur.c_champId + ") and " + CActeur.c_champId + "=@4", typeActivite.Id, dt, dt.AddDays(1), relIntervenant.Intervenant.Id); if (bAvecSite) { filtre = CFiltreData.GetAndFiltre(filtre, new CFiltreData(CSite.c_champId + "=@1", fraction.Intervention.Site.Id)); } CListeObjetsDonnees listeActivites = new CListeObjetsDonnees(fraction.ContexteDonnee, typeof(CActiviteActeur)); listeActivites.Filtre = filtre; listeActivites.ReadDependances("RelationsInterventions"); CActiviteActeur activiteRetenue = null; CIntervention_ActiviteActeur relRetenue = null; foreach (CActiviteActeur activite in listeActivites) { bool bPrendre = true; foreach (KeyValuePair <CChampCustom, object> chpValeur in valeursChamps) { object valDeAct = activite.GetValeurChamp(chpValeur.Key.Id); if (valDeAct == null && chpValeur.Value != null) { bPrendre = false; break; } else if (chpValeur.Value == null && valDeAct != null) { bPrendre = false; break; } else if (chpValeur.Value != null && !chpValeur.Value.Equals(valDeAct)) { bPrendre = false; break; } } if (bPrendre) { activiteRetenue = activite; relRetenue = null; foreach (CIntervention_ActiviteActeur relInter in activiteRetenue.RelationsInterventions) { //Si l'activité est directement liée à cette fraction, prend celle ci de préférence if (relInter.FractionIntervention.Id == fraction.Id) { relRetenue = relInter; break; } } } } if (activiteRetenue == null) { //Création de l'activite activiteRetenue = new CActiviteActeur(fraction.ContexteDonnee); activiteRetenue.CreateNewInCurrentContexte(); activiteRetenue.TypeActiviteActeur = typeActivite; activiteRetenue.Acteur = relIntervenant.Intervenant; activiteRetenue.Date = dt; activiteRetenue.Duree = 0; if (bAvecSite) { activiteRetenue.Site = fraction.Intervention.Site; } foreach (KeyValuePair <CChampCustom, object> valChamp in valeursChamps) { activiteRetenue.SetValeurChamp(valChamp.Key.Id, valChamp.Value); } } if (relRetenue == null) { //Création de la relation à l'interventation relRetenue = new CIntervention_ActiviteActeur(fraction.ContexteDonnee); relRetenue.ActiviteActeur = activiteRetenue; relRetenue.DureeImputee = 0; relRetenue.FractionIntervention = fraction; } //Note que cette relation ne doit pas être supprimée tableToDelete[relRetenue] = false; double fDureeForThis = 0; if (dt == fraction.DateFin.Value.Date) { fDureeForThis = fDureeAImputer; //On affecte le reste } else { if (dt == fraction.DateDebut.Value.Date) { //On est sur le premier jour, //Utilise comme référence le temps qui sépare la date //de début de minuit TimeSpan sp = dt.AddDays(1) - fraction.DateDebut.Value; double fRatio = sp.TotalHours / fDureeReelle; fDureeForThis = fRatio * fraction.TempsDeTravail.Value; } else { fDureeForThis = 24.0 / fDureeReelle * fraction.TempsDeTravail.Value; } //Arrondi la durée calculé à la minute fDureeForThis = (int)fDureeForThis + (int)((fDureeForThis - (int)fDureeForThis) * 60.0 + .5) / 60.0; } fDureeAImputer -= fDureeForThis; if (relRetenue.DureeImputee != fDureeForThis) { //Impute la durée de la fraction sur l'activité relRetenue.ActiviteActeur.Duree -= relRetenue.DureeImputee; relRetenue.DureeImputee = (double)fDureeForThis; relRetenue.ActiviteActeur.Duree += fDureeForThis; } dt = dt.AddDays(1); } } } foreach (DictionaryEntry entry in tableToDelete) { if ((bool)entry.Value) { //Supprime la relation CIntervention_ActiviteActeur relToDelete = (CIntervention_ActiviteActeur)entry.Key; if (relToDelete.Row.RowState != DataRowState.Deleted) { CActiviteActeur activiteAncienne = relToDelete.ActiviteActeur; //SC 10/3/2014 : La désimputation du temps de l'activité se fait dans CIntervention_activiteActeurServeur.TraitementAvantSauvegardee //activiteAncienne.Duree -= relToDelete.DureeImputee; result = relToDelete.Delete(true); /*if ( result && activiteAncienne.Duree == 0 ) * result = activiteAncienne.Delete(); * if ( !result ) * return result;*/ } } } return(result); }
//-------------------------------------------------------------- void OnAjouterFraction(object sender, EventArgs e) { CFractionIntervention fraction = AjouterFraction(); AjouterCR(fraction); }
private void m_btnActeur_Click(object sender, EventArgs e) { if (LockEdition || Operation == null) { return; } if (Operation.TypeOperation != null && Operation.TypeOperation.VerrouillerAuteur) { return; } ContextMenuStrip menu = new ContextMenuStrip(); menu.ImageList = m_pictosActeur; if (ElementAOperations != null) { // Item par défaut : Acteur utilisateur en cours CActeur acteurEnCours = CUtilSession.GetUserForSession(Operation.ContexteDonnee).Acteur; ToolStripMenuItem itemParDefaut = new ToolStripMenuItem(acteurEnCours.IdentiteComplete); itemParDefaut.ImageIndex = 0; itemParDefaut.Tag = acteurEnCours; itemParDefaut.Click += new EventHandler(itemActeur_Click); menu.Items.Add(itemParDefaut); // ajoute les autres acteurs possibles CFractionIntervention fraction = ElementAOperations as CFractionIntervention; if (fraction != null) { // On est sur une Intervention // Les acteurs possibles sont pris parmis les intervenants définit comme ressource CIntervention intervention = fraction.Intervention; ArrayList listerelationsIntervenants = intervention.RelationsIntervenants.ToArrayList(); if (listerelationsIntervenants.Count > 0) { menu.Items.Add(new ToolStripSeparator()); } foreach (CIntervention_Intervenant rel in listerelationsIntervenants) { CActeur intervenant = rel.Intervenant; ToolStripMenuItem item = new ToolStripMenuItem(intervenant.IdentiteComplete); item.Tag = intervenant; item.Click += new EventHandler(itemActeur_Click); menu.Items.Add(item); } } else { // On est sur une Phase de Ticket } menu.Items.Add(new ToolStripSeparator()); C2iTextBoxSelectionneForMenu selectActeurItem = new C2iTextBoxSelectionneForMenu(); selectActeurItem.TextBoxSelection.InitForSelect(typeof(CActeur), "IdentiteComplete", false); selectActeurItem.AutoClose = true; selectActeurItem.OnSelectObject += new ObjetDonneeEventHandler(selectActeurItem_OnSelectObject); menu.Items.Add(selectActeurItem); } menu.Show((Control)sender, new Point(0, m_btnActeur.Height)); }