コード例 #1
0
        public void Test_ContractAccrual_CRUD()
        {
            #region Arrange

            var tmpCustomer = new CustomerConnector().Create(new Customer()
            {
                Name = "TmpCustomer", CountryCode = "SE", City = "Testopolis"
            });
            var tmpArticle = new ArticleConnector().Create(new Article()
            {
                Description = "TmpArticle", Type = ArticleType.Stock, PurchasePrice = 100
            });
            var tmpContract = new ContractConnector().Create(new Contract()
            {
                CustomerNumber  = tmpCustomer.CustomerNumber,
                ContractDate    = new DateTime(2020, 1, 1),
                ContractLength  = 3,
                InvoiceInterval = 3,
                Comments        = "TestContract",
                Continuous      = true,
                Currency        = "SEK",
                VATIncluded     = false,
                Language        = Language.English,
                InvoiceRows     = new List <ContractInvoiceRow>()
                {
                    new ContractInvoiceRow()
                    {
                        ArticleNumber = tmpArticle.ArticleNumber, DeliveredQuantity = 6, Price = 1000, VAT = 0
                    }
                },
                PeriodStart = new DateTime(2020, 01, 1),
                PeriodEnd   = new DateTime(2020, 03, 20)
            });

            #endregion Arrange

            IContractAccrualConnector connector = new ContractAccrualConnector();

            #region CREATE

            var newContractAccrual = new ContractAccrual()
            {
                DocumentNumber = tmpContract.DocumentNumber,
                Description    = "TestContractAccrual",
                Total          = 6000,
                AccrualAccount = 2990,
                CostAccount    = 3990,
                VATIncluded    = false,
                AccrualRows    = new List <ContractAccrualRow>()
                {
                    new ContractAccrualRow()
                    {
                        Account = 2990, Credit = 0, Debit = 2000
                    },
                    new ContractAccrualRow()
                    {
                        Account = 3990, Credit = 2000, Debit = 0
                    },
                }
            };

            var createdContractAccrual = connector.Create(newContractAccrual);
            MyAssert.HasNoError(connector);
            Assert.AreEqual("TestContractAccrual", createdContractAccrual.Description);

            #endregion CREATE

            #region UPDATE

            createdContractAccrual.Description = "UpdatedTestContractAccrual";

            var updatedContractAccrual = connector.Update(createdContractAccrual);
            MyAssert.HasNoError(connector);
            Assert.AreEqual("UpdatedTestContractAccrual", updatedContractAccrual.Description);

            #endregion UPDATE

            #region READ / GET

            var retrievedContractAccrual = connector.Get(createdContractAccrual.DocumentNumber);
            MyAssert.HasNoError(connector);
            Assert.AreEqual("UpdatedTestContractAccrual", retrievedContractAccrual.Description);

            #endregion READ / GET

            #region DELETE

            connector.Delete(createdContractAccrual.DocumentNumber);
            MyAssert.HasNoError(connector);

            retrievedContractAccrual = connector.Get(createdContractAccrual.DocumentNumber);
            Assert.AreEqual(null, retrievedContractAccrual, "Entity still exists after Delete!");

            #endregion DELETE

            #region Delete arranged resources

            new ArticleConnector().Delete(tmpArticle.ArticleNumber);
            new CustomerConnector().Delete(tmpCustomer.CustomerNumber);

            #endregion Delete arranged resources
        }
コード例 #2
0
 /// <summary>
 /// Create a new contract accrual
 /// </summary>
 /// <param name="contractAccrual">The contract accrual to create</param>
 /// <returns>The created contract accrual</returns>
 public ContractAccrual Create(ContractAccrual contractAccrual)
 {
     return(BaseCreate(contractAccrual));
 }
コード例 #3
0
        public void Test_ContractAccrual_Find()
        {
            #region Arrange

            var tmpCustomer = new CustomerConnector().Create(new Customer()
            {
                Name = "TmpCustomer", CountryCode = "SE", City = "Testopolis"
            });
            var tmpArticle = new ArticleConnector().Create(new Article()
            {
                Description = "TmpArticle", Type = ArticleType.Stock, PurchasePrice = 100
            });
            var tmpContract = new ContractConnector().Create(new Contract()
            {
                CustomerNumber  = tmpCustomer.CustomerNumber,
                ContractDate    = new DateTime(2020, 1, 1),
                ContractLength  = 3,
                InvoiceInterval = 3,
                Comments        = "TestContract",
                Continuous      = true,
                Currency        = "SEK",
                VATIncluded     = false,
                Language        = Language.English,
                InvoiceRows     = new List <ContractInvoiceRow>()
                {
                    new ContractInvoiceRow()
                    {
                        ArticleNumber = tmpArticle.ArticleNumber, DeliveredQuantity = 6, Price = 1000, VAT = 0
                    }
                },
                PeriodStart = new DateTime(2020, 01, 1),
                PeriodEnd   = new DateTime(2020, 03, 20)
            });

            #endregion Arrange
            IContractAccrualConnector connector = new ContractAccrualConnector();

            var marks = TestUtils.RandomString();
            var newContractAccrual = new ContractAccrual()
            {
                Description    = marks,
                Total          = 6000,
                AccrualAccount = 2990,
                CostAccount    = 3990,
                VATIncluded    = false,
                AccrualRows    = new List <ContractAccrualRow>()
                {
                    new ContractAccrualRow()
                    {
                        Account = 2990, Credit = 0, Debit = 2000
                    },
                    new ContractAccrualRow()
                    {
                        Account = 3990, Credit = 2000, Debit = 0
                    },
                }
            };

            for (var i = 0; i < 5; i++)
            {
                newContractAccrual.DocumentNumber = tmpContract.DocumentNumber;
                connector.Create(newContractAccrual);
                MyAssert.HasNoError(connector);

                var contractConnector = new ContractConnector();
                tmpContract.DocumentNumber = null;
                tmpContract = contractConnector.Create(tmpContract);
                MyAssert.HasNoError(contractConnector);
            }

            var contractAccruals = connector.Find();
            Assert.AreEqual(5, contractAccruals.Entities.Count(x => x.Description.StartsWith(marks)));

            foreach (var entry in contractAccruals.Entities.Where(x => x.Description.StartsWith(marks)))
            {
                connector.Delete(entry.DocumentNumber);
                MyAssert.HasNoError(connector);
            }
            #region Delete arranged resources

            new ArticleConnector().Delete(tmpArticle.ArticleNumber);
            new CustomerConnector().Delete(tmpCustomer.CustomerNumber);

            #endregion Delete arranged resources
        }
コード例 #4
0
 public async Task <ContractAccrual> UpdateAsync(ContractAccrual contractAccrual)
 {
     return(await BaseUpdate(contractAccrual, contractAccrual.DocumentNumber.ToString()).ConfigureAwait(false));
 }
コード例 #5
0
 /// <summary>
 /// Updates an contract accrual
 /// </summary>
 /// <param name="contractAccrual">The contract accrual to update</param>
 /// <returns>The updated contract accrual</returns>
 public ContractAccrual Update(ContractAccrual contractAccrual)
 {
     return(BaseUpdate(contractAccrual, contractAccrual.DocumentNumber));
 }
コード例 #6
0
 public async Task <ContractAccrual> CreateAsync(ContractAccrual contractAccrual)
 {
     return(await BaseCreate(contractAccrual).ConfigureAwait(false));
 }
コード例 #7
0
 /// <summary>
 /// Creates a new contractAccrual
 /// </summary>
 /// <param name="contractAccrual">The contractAccrual to create</param>
 /// <returns>The created contractAccrual</returns>
 public ContractAccrual Create(ContractAccrual contractAccrual)
 {
     return(CreateAsync(contractAccrual).Result);
 }
コード例 #8
0
 /// <summary>
 /// Updates a contractAccrual
 /// </summary>
 /// <param name="contractAccrual">The contractAccrual to update</param>
 /// <returns>The updated contractAccrual</returns>
 public ContractAccrual Update(ContractAccrual contractAccrual)
 {
     return(UpdateAsync(contractAccrual).Result);
 }
コード例 #9
0
    public async Task Test_ContractAccrual_CRUD()
    {
        #region Arrange

        var tmpCustomer = await FortnoxClient.CustomerConnector.CreateAsync(new Customer()
        {
            Name = "TmpCustomer", CountryCode = "SE", City = "Testopolis"
        });

        var tmpArticle = await FortnoxClient.ArticleConnector.CreateAsync(new Article()
        {
            Description = "TmpArticle", Type = ArticleType.Stock, PurchasePrice = 100
        });

        var tmpContract = await FortnoxClient.ContractConnector.CreateAsync(new Contract()
        {
            CustomerNumber  = tmpCustomer.CustomerNumber,
            ContractDate    = new DateTime(2020, 1, 1),
            ContractLength  = 3,
            InvoiceInterval = 3,
            Comments        = "TestContract",
            Continuous      = true,
            Currency        = "SEK",
            VATIncluded     = false,
            Language        = Language.English,
            InvoiceRows     = new List <ContractInvoiceRow>()
            {
                new ContractInvoiceRow()
                {
                    ArticleNumber = tmpArticle.ArticleNumber, DeliveredQuantity = 6, Price = 1000, VAT = 0
                }
            },
            PeriodStart = new DateTime(2020, 01, 1),
            PeriodEnd   = new DateTime(2020, 03, 20)
        });

        #endregion Arrange

        var connector = FortnoxClient.ContractAccrualConnector;

        #region CREATE

        var newContractAccrual = new ContractAccrual()
        {
            DocumentNumber = tmpContract.DocumentNumber,
            Description    = "TestContractAccrual",
            Total          = 6000,
            AccrualAccount = 2990,
            CostAccount    = 3990,
            VATIncluded    = false,
            AccrualRows    = new List <ContractAccrualRow>()
            {
                new ContractAccrualRow()
                {
                    Account = 2990, Credit = 0, Debit = 2000
                },
                new ContractAccrualRow()
                {
                    Account = 3990, Credit = 2000, Debit = 0
                },
            }
        };

        var createdContractAccrual = await connector.CreateAsync(newContractAccrual);

        Assert.AreEqual("TestContractAccrual", createdContractAccrual.Description);

        #endregion CREATE

        #region UPDATE

        createdContractAccrual.Description = "UpdatedTestContractAccrual";

        var updatedContractAccrual = await connector.UpdateAsync(createdContractAccrual);

        Assert.AreEqual("UpdatedTestContractAccrual", updatedContractAccrual.Description);

        #endregion UPDATE

        #region READ / GET

        var retrievedContractAccrual = await connector.GetAsync(createdContractAccrual.DocumentNumber);

        Assert.AreEqual("UpdatedTestContractAccrual", retrievedContractAccrual.Description);

        #endregion READ / GET

        #region DELETE

        await connector.DeleteAsync(createdContractAccrual.DocumentNumber);

        await Assert.ThrowsExceptionAsync <FortnoxApiException>(
            async() => await connector.GetAsync(createdContractAccrual.DocumentNumber),
            "Entity still exists after Delete!");

        #endregion DELETE

        #region Delete arranged resources

        await FortnoxClient.ContractConnector.FinishAsync(tmpContract.DocumentNumber);

        //FortnoxClient.ArticleConnector.Delete(tmpArticle.ArticleNumber); //Can't delete since it is used in contract
        //FortnoxClient.CustomerConnector.Delete(tmpCustomer.CustomerNumber); //Can't delete since it is used in contract

        #endregion Delete arranged resources
    }
コード例 #10
0
 public async Task <ContractAccrual> CreateAsync(ContractAccrual contractAccrual)
 {
     return(await BaseCreate(contractAccrual));
 }