[ProducesResponseType(409)] // Conflict public async Task <IActionResult> Envoi([FromQuery] ParamsKeyClient paramsClient) { vérificateur.Initialise(paramsClient); try { await ClientDeLAction(); await UtilisateurEstClientActifOuNouveau(); ContexteCatalogue(); } catch (VérificationException) { return(vérificateur.Erreur); } DocCLF dernièreCommande = await _service.DernierDoc(paramsClient.Id, TypeCLF.Commande); // la dernière commande doit exister et ne pas être envoyée if (dernièreCommande == null || dernièreCommande.Date.HasValue) { return(RésultatBadRequest("DerniereCommandeAbsenteOuEnvoyée")); } RetourDeService <CLFDoc> retour = await _service.EnvoiCommande(vérificateur.Site, dernièreCommande); if (retour.Ok) { return(RésultatCréé(retour.Entité)); } return(SaveChangesActionResult(retour)); }
[ProducesResponseType(409)] // Conflict public async Task <IActionResult> EnCours([FromQuery] ParamsKeyClient paramsKeyClient) { vérificateur.Initialise(paramsKeyClient); try { await ClientDeLAction(); await UtilisateurEstClientActifOuNouveau(); ContexteCatalogue(); } catch (VérificationException) { return(vérificateur.Erreur); } if (paramsKeyClient.DateCatalogue.HasValue) { // la commande en cours a déjà été chargée par l'application client qui vérifie seulement le contexte catalogue // la vérification a réussi // retourne un CLFDocs vide return(Ok(new CLFDocs())); } CLFDocs docs = await _service.CommandeEnCours(paramsKeyClient.Id); return(Ok(docs)); }
/// <summary> /// /// </summary> /// <param name="paramsClient"></param> /// <param name="copieLignes"></param> /// <returns></returns> protected async Task <IActionResult> CréeBon(ParamsKeyClient paramsClient, bool copieLignes) { vérificateur.Initialise(paramsClient); try { await ClientDeLAction(); await UtilisateurEstClientActifOuNouveauOuFournisseur(); ContexteCatalogue(); } catch (VérificationException) { return(vérificateur.Erreur); } uint noBon; DocCLF docACopier = null; if (vérificateur.EstClient) { if (_type != TypeCLF.Commande) { return(RésultatInterdit("Un client ne peut créer que des bons de commande.")); } DocCLF dernièreCommande = await _service.DernierDoc(vérificateur.IdClient, TypeCLF.Commande); if (copieLignes) { // la dernière commande doit exister et être envoyée if (dernièreCommande == null || !dernièreCommande.Date.HasValue) { return(RésultatBadRequest("DerniereCommandeAbsenteOuPasEnvoyée")); } docACopier = dernièreCommande; } else { // la dernière commande doit ne pas exister ou être envoyée. if (!(dernièreCommande == null || dernièreCommande.Date.HasValue)) { return(RésultatBadRequest("DerniereCommandePrésenteEtPasEnvoyée")); } } noBon = dernièreCommande == null ? 1 : dernièreCommande.No + 1; } else { // key du bon virtuel du client KeyDocSansType key = new KeyDocSansType { Id = vérificateur.IdClient, No = 0 }; DocCLF bonVirtuel = await _service.DocCLFDeKey(key, _type); if (bonVirtuel != null) { // il ne peut y avoir qu'un seul bon virtuel d'un type donné return(RésultatBadRequest("BonVirtuelPrésent")); } if (copieLignes) { // on ne peut copier les lignes que si la synthèse précédente a été réalisée à partir du seul bon virtuel // c'est le cas s'il n'y a pas de bon ayant pour NoGroupe le No de cette synthèse docACopier = await _service.DernierDoc(vérificateur.IdClient, DocCLF.TypeSynthèse(_type)); if (docACopier == null) { return(RésultatBadRequest("PasDeDernièreSynthèse")); } if (!(await _service.EstSynthèseSansBons(docACopier))) { return(RésultatBadRequest("DernièreSynthèseAvecBons")); } } noBon = 0; } RetourDeService <DocCLF> retour = await _service.AjouteBon(vérificateur.IdClient, vérificateur.Site, _type, noBon); if (!retour.Ok) { return(SaveChangesActionResult(retour)); } if (docACopier != null) { RetourDeService retour1 = await _service.CopieLignes(retour.Entité, docACopier, vérificateur.Site.DateCatalogue.Value); if (!retour1.Ok) { return(SaveChangesActionResult(retour1)); } } return(RésultatCréé(CLFDoc.DeNo(noBon))); }
[ProducesResponseType(409)] // Conflict public async Task <IActionResult> Clone([FromQuery] ParamsKeyClient paramsClient) { return(await CréeBon(paramsClient, true)); }
[ProducesResponseType(409)] // Conflict public async Task <IActionResult> Nouveau([FromQuery] ParamsKeyClient paramsClient) { return(await CréeBon(paramsClient, false)); }
/// <summary> /// Fixe KeyClient et DateCatalogue. /// </summary> /// <param name="paramsCrée">contient la KeyUidRno du client et la date du catalogue de l'utilisateur</param> public void Initialise(ParamsKeyClient paramsCrée) { IdClient = paramsCrée.Id; DateCatalogue = paramsCrée.DateCatalogue; }