Transaction
In the following you will find a few basic POST operations related to transactions.
Example Code
Create a simple transaction and POST the transaction with Topal Server.
#Code reference - GET.transactions
#Code reference - DELETE.transaction
[TestMethod]
public void REST_Transaction_simple_POST()
{
state = new ErrorState { passed = false };
decimal amount = 5000m;
Transaction transaction = Create.transaction_simple(amount, manager);
state.passed = POST.transaction(transaction, manager);
Assert.AreEqual(true, state.passed, state.message);
var transactions = GET.transactions(manager);
var _transaction = transactions.FirstOrDefault(t => t.docNum == transaction.docNum);
if (_transaction != null) {
state.passed = DELETE.transaction(_transaction, manager);
Assert.AreEqual(true, state.passed, state.message);
}
}
class POST
{
public static bool transaction(Transaction transaction, Manager manager)
{
var currentClient = manager.getCurrentClient();
var currentFiscalYear = manager.getCurrentFiscalYear();
ErrorState state = new ErrorState { passed = false };
if (transaction != null)
{
var transactionContent = JsonConvert.SerializeObject(transaction);
var _cont = new StringContent(transactionContent, Encoding.UTF8, "application/json");
string request = "clients/{0}/fiscalYears/{1}/transactions";
var response = manager.httpClient.PostAsync(string.Format(request, currentClient.id, currentFiscalYear.id), _cont).Result;
if (response.StatusCode != HttpStatusCode.OK)
{
ResponseDetails details = new ResponseDetails(response);
}
state.passed = response.IsSuccessStatusCode;
}
return state.passed;
}
}
class Save:
# TODO Recheck
@staticmethod
def transaction(manager, transaction):
_currentClient = manager.getCurrentClient()
_currentFiscalYear = manager.getCurrentFiscalYear()
try:
url = '{0}clients/{1}/fiscalYears/{2}/transactions'.format(manager.baseURL(), _currentClient['id'], _currentFiscalYear['id'])
response = requests.post(url, data = json.dumps(transaction), headers = manager.headers())
except Exception as err:
print("Error: {0}".format(err))
print(response.headers)
response.raise_for_status()
if response.status_code == 200:
return response.json()
else:
return None
UNDER CONSTRUCTION
POST Request:
{
"id": "00000000-0000-0000-0000-000000000000",
"fiscalYearFID": -1,
"userFID": -1,
"transactionTypeFID": 1,
"docType": "A",
"docNum": 42,
"docDate": "2022-05-09T00:00:00",
"modifyDate": "0001-01-01T00:00:00",
"isConfirmed": true,
"numRangeFID": 129,
"hasDocument": false,
"postings": [
{
"id": "00000000-0000-0000-0000-000000000000",
"transactionFID": "00000000-0000-0000-0000-000000000000",
"invoiceFID": "00000000-0000-0000-0000-000000000000",
"accountFID": 10,
"contraAccountFID": -1,
"vatFID": -1,
"vatAccountFID": -1,
"costCenterFID": -1,
"postingTypeFID": 1,
"amount": 5000.0,
"fcAmount": 5000.0,
"exchangeRate": 1.0,
"vatAmount": 0.0,
"vatFcAmount": 0.0,
"vatPercent": 0.0,
"vatQuote": 0.0,
"text": "Posting text",
"freeCode": "SimpleTransaction free 1",
"isDebit": true,
"isInclusive": false,
"isInvisible": false,
"postingIndex": 0,
"partyNum": 0,
"freepartyNum": null,
"partyName": null,
"invoiceNum": 0,
"freeInvoiceNum": null,
"invoiceDate": "0001-01-01T00:00:00"
},
{
"id": "00000000-0000-0000-0000-000000000000",
"transactionFID": "00000000-0000-0000-0000-000000000000",
"invoiceFID": "00000000-0000-0000-0000-000000000000",
"accountFID": 71,
"contraAccountFID": -1,
"vatFID": -1,
"vatAccountFID": -1,
"costCenterFID": -1,
"postingTypeFID": 1,
"amount": 5000.0,
"fcAmount": 5000.0,
"exchangeRate": 1.0,
"vatAmount": 0.0,
"vatFcAmount": 0.0,
"vatPercent": 0.0,
"vatQuote": 0.0,
"text": "Test Case Simple Transaction Posting #2",
"freeCode": "SimpleTransaction free 2",
"isDebit": false,
"isInclusive": false,
"isInvisible": false,
"postingIndex": 0,
"partyNum": 0,
"freepartyNum": null,
"partyName": null,
"invoiceNum": 0,
"freeInvoiceNum": null,
"invoiceDate": "0001-01-01T00:00:00"
}
]
}
Create a compound transaction and POST the transaction with Topal Server.
#Code reference - GET.transactions
#Code reference - DELETE.transaction
[TestMethod]
public void REST_Transactions_compound_POST()
{
state = new ErrorState();
decimal amount = 10000m;
Transaction transaction = Create.transaction_compound(amount, manager);
state.passed = POST.transaction(transaction, manager);
Assert.AreEqual(true, state.passed, state.message);
var transactions = GET.transactions(manager);
var _transaction = transactions.FirstOrDefault(t => t.docType == transaction.docType);
if (_transaction != null)
{
state.passed = DELETE.transaction(_transaction, manager);
Assert.AreEqual(true, state.passed, state.message);
}
}
class POST
{
public static bool transaction(Transaction transaction, Manager manager)
{
var currentClient = manager.getCurrentClient();
var currentFiscalYear = manager.getCurrentFiscalYear();
ErrorState state = new ErrorState { passed = false };
if (transaction != null)
{
var transactionContent = JsonConvert.SerializeObject(transaction);
var _cont = new StringContent(transactionContent, Encoding.UTF8, "application/json");
string request = "clients/{0}/fiscalYears/{1}/transactions";
var response = manager.httpClient.PostAsync(string.Format(request, currentClient.id, currentFiscalYear.id), _cont).Result;
if (response.StatusCode != HttpStatusCode.OK)
{
ResponseDetails details = new ResponseDetails(response);
}
state.passed = response.IsSuccessStatusCode;
}
return state.passed;
}
}
class Save:
# TODO Recheck
@staticmethod
def transaction(manager, transaction):
_currentClient = manager.getCurrentClient()
_currentFiscalYear = manager.getCurrentFiscalYear()
try:
url = '{0}clients/{1}/fiscalYears/{2}/transactions'.format(manager.baseURL(), _currentClient['id'], _currentFiscalYear['id'])
response = requests.post(url, data = json.dumps(transaction), headers = manager.headers())
except Exception as err:
print("Error: {0}".format(err))
print(response.headers)
response.raise_for_status()
if response.status_code == 200:
return response.json()
else:
return None
POST Request:
{
"id": "00000000-0000-0000-0000-000000000000",
"fiscalYearFID": -1,
"userFID": -1,
"transactionTypeFID": 2,
"docType": "RR",
"docNum": 42,
"docDate": "2022-05-09T00:00:00",
"modifyDate": "0001-01-01T00:00:00",
"isConfirmed": true,
"numRangeFID": 129,
"hasDocument": false,
"postings": [
{
"id": "00000000-0000-0000-0000-000000000000",
"transactionFID": "00000000-0000-0000-0000-000000000000",
"invoiceFID": "00000000-0000-0000-0000-000000000000",
"accountFID": 10,
"contraAccountFID": -1,
"vatFID": -1,
"vatAccountFID": -1,
"costCenterFID": -1,
"postingTypeFID": 1,
"amount": 10000.0,
"fcAmount": 0.0,
"exchangeRate": 1.0,
"vatAmount": 0.0,
"vatFcAmount": 0.0,
"vatPercent": 0.0,
"vatQuote": 0.0,
"text": "TestCase Compound Transaction Posting #1",
"freeCode": "CompoundTransaction free 1",
"isDebit": true,
"isInclusive": false,
"isInvisible": false,
"postingIndex": 0,
"partyNum": 0,
"freepartyNum": null,
"partyName": null,
"invoiceNum": 0,
"freeInvoiceNum": null,
"invoiceDate": "0001-01-01T00:00:00"
},
{
"id": "00000000-0000-0000-0000-000000000000",
"transactionFID": "00000000-0000-0000-0000-000000000000",
"invoiceFID": "00000000-0000-0000-0000-000000000000",
"accountFID": 20,
"contraAccountFID": -1,
"vatFID": -1,
"vatAccountFID": -1,
"costCenterFID": -1,
"postingTypeFID": 1,
"amount": 10000.0,
"fcAmount": 0.0,
"exchangeRate": 1.0,
"vatAmount": 0.0,
"vatFcAmount": 0.0,
"vatPercent": 0.0,
"vatQuote": 0.0,
"text": "TestCase Compound Transaction Posting #1",
"freeCode": null,
"isDebit": false,
"isInclusive": false,
"isInvisible": false,
"postingIndex": 0,
"partyNum": 0,
"freepartyNum": null,
"partyName": null,
"invoiceNum": 0,
"freeInvoiceNum": null,
"invoiceDate": "0001-01-01T00:00:00"
}
]
}