Calculation Library
Uma biblioteca Dart para cálculos matemáticos.
Instalação
Para usar esta biblioteca em seu projeto Dart, rode este comando dart pub add calculationlibrary
Isso adicionará uma linha como esta ao pubspec.yaml
:
dependencies:
calculationlibrary: ^0.2.7
Uso
Aqui está um exemplo de como usar a biblioteca para realizar cálculos:
import 'package:calculationlibrary/Calculator.dart';
void main() {
String method = 'addItem';
String item = '{"idItem": "123", "idEntry": "abc", "isTaxed": 0, "description": "Product A", "quantity": 1.0, "value": 60.0, "modifiers": []}';
String argument = '{"method": "$method", "item": $item}';
String acc = Calculator.run(argument);
argument = '{"method": "$method", "item": $item, "acc": $acc}';
acc = Calculator.run(argument);
}
O retorno de Calculator.run()
para os métodos additem
,removeItem
,addAccountDiscount
,addItemDiscount
,addServiceCharge
, accountPayment
, addItemModifier
e updateItem
será sempre uma String no formato do acc.
Descrição dos campos
Acc
sum
: (double) Valor total da conta
amount
: (int) Quantidade total de itens
discount
: (double) Soma total dos descontos aplicados (conta + itens)
payment
: (double) Valor total do pagamento (conta + item)
servicecharge
: Taxa de serviço aplicada à conta
type
: (int) Tipo da taxa (valor ou porcentagem)
value
: (double) Valor da taxa
accountTaxValue
: (double) Valor total da taxa de serviço aplicada na conta
task
: (List) Lista de todas as operações realizadas
result
: (String) Resultado da última operação realizada
Item
idItem
: (String) Id do item
idEntry
: (String) Id do item na conta
isTaxed
: (bool) Indicação se o item deve ser incluso no cálculo da taxa de serviço ou não
description
: (String) Descrição do item
quantity
: (double) Quantidade do item na conta
value
: (double) Valor unitário
discount
: Desconto aplicado
type
: (int) Tipo do desconto
value
: (double) Valor do desconto
modifiers
: (List) Lista de todos os modificadores
Desconto, Taxa de serviço e Pagamento
type
: (int) Tipo
value
: (double) Valor
Códigos de erro
Retornados no campo result do acc :
ITEM_ALREADY_EXISTS
ITEM_NOT_REGISTERED
INVALID_INPUT
Métodos disponíveis
getAcc: getAcc(String acc)
Recalcula o acc.
Parâmetros :
- acc
acc {
"sum" : 0.0
"amount": 0
"discount": 0.0
"payment": 0.0,
"servicecharge":{
"type": 0,
"value": 0.0,
"accountTaxValue": 0.0
},
"task": []
"result":{}
}
addItem: addItem(String item, {String? acc})
Adiciona um item a uma conta. Se o argumento acc for fornecido, o item será adicionado à conta especificada.
Parâmetros :
- acc (opcional)
- item: O item a ser adicionado.
item without discount {
"idItem": "",
"idEntry": "",
"isTaxed": 0,
"description": "",
"quantity": 0,
"value": 0.0,
"modifiers":[]
}
item with discount {
"idItem": "",
"idEntry": "",
"isTaxed": 0,
"description": "",
"quantity": 0,
"value": 0.0,
"discount": {
"type": 0
"value": 0.0
},
"modifiers":[]
}
removeItem: removeItem(String item, String acc)
Remove um item de uma conta específica.
Parâmetros :
- item
- acc
addAccountDiscount: addAccountDiscount(String discount, String acc)
Adiciona um desconto a uma conta específica.
Parâmetros :
- acc
- discount: Uma string JSON que representa o desconto a ser adicionado.
discount by percentage (10 %): {
"type": 1
"value": 10.0
}
discount by value (10,00): {
"type": 2
"value": 10.0
}
O type do discount indica se será um desconto por porcentagem ou por valor
addItemDiscount: addItemDiscount(String discount, String item, String acc)
Adiciona um desconto a um item em uma conta específica.
Parâmetros :
- discount
- item
- acc
addServiceCharge: addServiceCharge(String service, String acc)
Adiciona taxa de serviço uma conta específica.
Parâmetros :
- acc
- service
serviceCharge by percentage (10 %): {
"type": 1
"value": 10.0
}
serviceCharge by value (10,00): {
"type": 2
"value": 10.0
}
accountPayment: accountPayment(String payment, String acc)
Realiza o pagamento em uma conta específica.
Parâmetros :
- acc
- payment
payment by percentage (10 %): {
"type": 1
"value": 10.0
}
payment by value (10,00): {
"type": 2
"value": 10.0
}
addItemModifier: addItemModifier(String item, String acc, String modifier)
Adiciona um modificador a um item em uma conta específica.
Parâmetros :
- modifier
- item
- acc
updateItem: updateItem(String item, String acc)
Realiza a atualização do item cadastrado pelo item que foi fornecido.
Parâmetros :
- item
- acc
Retorno :
- O Acc é atualizado de acordo com os demais métodos, mas o resultado agora contém informações tanto do item antigo quanto do novo.
result = {
"old" : oldItem,
"new": newItem
};
transferItem: transferItem(String sourceAcc, String destinationAcc, String item)
Realiza a transferência de um item entre duas contas.
Parâmetros :
- sourceAcc
- destinationAcc
- item
Retorno :
- Retorna um Json contendo o sourceAcc e o destinationAcc:
result = {
"sourceAcc" : updatedSourceAcc,
"destinationAcc": updatedDestinationAcc
};