Example #1
0
        /// <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;
                 *  }
                 * }
                 */
            }
        }