/// <summary> /// Ajoute les écritures des pièces ne contenant pas d'erreurs. /// </summary> /// <param name="repository"> Le repository. </param> /// <param name="pieces"> Le dictionnaire des pièces, la clef étant l'id d'un objet Writing, la valeur étant la liste des écritures associées. </param> /// <param name="errors"> Le dictionnaire des erreurs, la clef étant l'id d'un objet Writing, la valeur étant la liste des erreurs associées. </param> /// <param name="existing"></param> private void AddPieces(APIRepository repository, Dictionary <string, List <Writing> > pieces, Dictionary <string, List <string> > errors, Import existing) { string data; foreach (var piece in pieces) { // Les écritures d'une pièce possédant des erreurs de validité ne seront pas ajoutées. if (errors.ContainsKey(piece.Key)) { continue; } if (1 == 1) { //Purge des lignes de contrepartie si journal de trésorerie avec centralisation //Calcul des ODataBind pour les propriétés concernées de chaque ligne var NewEcrituresToCreate = new List <Writing>(); foreach (var line in piece.Value) { if (existing.Codes[line.Code].OptContrepartie != "Centralise" || existing.Codes[line.Code].Compte != line.Compte) { SetOdataBindings(repository, line, existing); NewEcrituresToCreate.Add(line); } } //Création de l'entête proposition commerciale avec les éléments communs à la pièce var CommonInfosPiece = piece.Value.First(); var NewPieceToCreate = CreerPieceComptable.Create( CommonInfosPiece.Date, CommonInfosPiece.Piece, CommonInfosPiece.Reference, CommonInfosPiece.NumeroFacture, CommonInfosPiece.Intitule, NewEcrituresToCreate); var CurrentJournalId = existing.Codes[CommonInfosPiece.Code].Id; data = JsonConvert.SerializeObject(NewPieceToCreate).Replace("@odata.bind\":null", "\":null"); var result = repository.Post(repository.CompanyId, "journaux('" + CurrentJournalId + "')/creerPieceComptable", data); if (!result.IsSuccessStatusCode) { ViewBag.ErrorMessage = Tools.FormateErrorApi(result); break; } } //Ancienne méthode ligne à ligne, ne pas utiliser sauf raison précise car ne respecte pas toutes les règles métier dont le contrôle équilibre pièces /* * foreach (var line in piece.Value) * { * //Si journal avec option Centralisation et ligne du compte de centralisation on ignore car ajouté automatiquement par l'API. * * if (existing.Codes[line.Code].OptContrepartie == "Centralise" && existing.Codes[line.Code].Compte == line.Compte) * continue; * * SetOdataBindings(repository, line, existing); * data = JsonConvert.SerializeObject(line).Replace("@odata.bind\":null", "\":null"); * var result = repository.Post(repository.CompanyId, "ecritures", data); * if (!result.IsSuccessStatusCode) * { * ViewBag.ErrorMessage = Tools.FormateErrorApi(result); * break; * } * } */ } }