Example #1
0
        private async Task InvokeCreditNoteSP(CreditNoteDto creditNoteData, CreditNote res)
        {
            //Create the credit note number
            await _dbCtx.Database.OpenConnectionAsync();

            var connection = _dbCtx.Database.GetDbConnection();

            var command = connection.CreateCommand();

            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "SP_Save_CreditNote";
            command.Parameters.Add(new MySqlParameter("selectedIdCreditNote", creditNoteData.Id));
            command.Parameters.Add(new MySqlParameter("selectedYear", creditNoteData.Year));
            command.Parameters.Add(new MySqlParameter("issuedBy", new Guid(_claimPrincipal.Value.Identity.Name)));
            var cnNum = (int?)command.ExecuteScalar();
            await _dbCtx.Database.CloseConnectionAsync();

            if (cnNum.HasValue)
            {
                var desc = "No error description avaialle";
                if (cnNum.Value == 1062)
                {
                    desc = "Duplicate credit note number!!";
                }
                _dbCtx.CreditNotes.Remove(res);
                throw new Exception($"Unable to create ad store credit note number. ERR-NO={cnNum} {desc}");
            }
        }
Example #2
0
        public static CreditNoteDto ToDto(this CreditNote e, bool includeReceipt = false)
        {
            if (e == null)
            {
                return(null);
            }

            var res = new CreditNoteDto();

            res.Id               = e.Id;
            res.Description      = e.Description;
            res.InvoiceNumber    = e.InvoiceNumber;
            res.CreditNoteNumber = e.CreditNoteNumber;
            res.IdReceipt        = e.IdReceipt;
            res.InvoiceDate      = e.InvoiceDate;
            res.IssueDate        = e.IssueDate;
            res.IssuedBy         = e.IssuedBy;
            res.Owner            = e.Owner != null?e.Owner.ToDto() : null;

            if (includeReceipt)
            {
                res.PaymentReceipt = e.PaymentReceipt.ToDto();
            }
            return(res);
        }
Example #3
0
        private async Task CreateCreditNote(CreditNoteDto creditNoteData)
        {
            // SPECIFIC FOR SQLite DB
            var trx = await _dbCtx.Database.BeginTransactionAsync();

            await _dbCtx.Database.OpenConnectionAsync();

            var connection = _dbCtx.Database.GetDbConnection();

            try {
                var command = connection.CreateCommand();
                command.CommandText = @"SELECT COALESCE(MAX(number),0)
                                        FROM `creditnote_number` 
                                        WHERE `year` = $selectedYear ";

                command.Parameters.Add(new SqliteParameter("$selectedYear", creditNoteData.Year));

                var creditNoteNumber = int.Parse((await command.ExecuteScalarAsync()).ToString());
                creditNoteNumber    = creditNoteNumber + 1;
                command             = connection.CreateCommand();
                command.CommandText = @"INSERT INTO `creditnote_number` (
		                            `IdCreditNote`,
                                    `number`,
                                    `year`)
                                    VALUES (
			                            $selectedIdCreditNote,
                                        $cnNumber,
                                        $selectedYear
                                    );";
                command.Parameters.Add(new SqliteParameter("$selectedIdCreditNote", creditNoteData.Id));
                command.Parameters.Add(new SqliteParameter("$cnNumber", creditNoteNumber));
                command.Parameters.Add(new SqliteParameter("$selectedYear", creditNoteData.Year));
                await command.ExecuteNonQueryAsync();

                command             = connection.CreateCommand();
                command.CommandText = @" UPDATE `credit_note`
			                            SET `CreditNoteNumber` = $cnNumber,
				                            `IssueDate` = CURRENT_TIMESTAMP,
                                            `IssuedBy` = $issuedBy
			                            WHERE
				                            `Id` = $selectedIdCreditNote"                ;

                command.Parameters.Add(new SqliteParameter("$cnNumber", $"NC_{creditNoteData.Year}_" + creditNoteNumber.ToString().PadLeft(4, '0')));
                command.Parameters.Add(new SqliteParameter("$issuedBy", new Guid(_claimPrincipal.Value.Identity.Name)));
                command.Parameters.Add(new SqliteParameter("$selectedIdCreditNote", creditNoteData.Id));

                await command.ExecuteNonQueryAsync();

                await trx.CommitAsync();
            }
            catch (Exception ex)
            {
                await trx.RollbackAsync();

                throw ex;
            }
        }
 /// <summary>
 /// InvoiceXpress <a href="https://invoicexpress.com/api/simplified-invoices/update">CreditNotes Update</a> Method
 /// </summary>
 public static void Update(string apiKey, string accountName, int creditNoteId, CreditNoteDto inputData)
 {
     Rest_Update(apiKey, accountName, creditNoteId, inputData.XmlSerializeToString());
 }
            /// <summary>
            /// InvoiceXpress <a href="https://invoicexpress.com/api/credit-notes/create">CreditNotes Create</a> Method
            /// </summary>
            public static CreditNoteDto Create(string apiKey, string accountName, CreditNoteDto inputData)
            {
                HttpResponseInfo result = Rest_Create(apiKey, accountName, inputData.XmlSerializeToString());

                return(result.Text.DeserializeXml <CreditNoteDto>());
            }