Merge pull request #2 from mattbk/packaging

Packaging
This commit is contained in:
mattbk
2016-04-13 12:34:50 -05:00
12 changed files with 214 additions and 86 deletions

View File

@ -11,3 +11,9 @@ Encoding: UTF-8
RnwWeave: knitr
LaTeX: pdfLaTeX
BuildType: Package
PackageUseDevtools: Yes
PackagePath: ledgerr
PackageInstallArgs: --no-multiarch --with-keep.source
PackageRoxygenize: rd,collate,namespace

2
ledgerr/.Rbuildignore Normal file
View File

@ -0,0 +1,2 @@
^.*\.Rproj$
^\.Rproj\.user$

3
ledgerr/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.Rproj.user
.Rhistory
.RData

12
ledgerr/DESCRIPTION Normal file
View File

@ -0,0 +1,12 @@
Package: ledgerr
Title: R Functions For Bookkeeping
Version: 0.0.0.9000
Authors@R: person("Matt", "Burton-Kelly", email = "bedrocks@gmail.com", role = c("aut", "cre"))
Description: This package acts as a frontend for simple bookkeeping spreadsheets
and provides functions for reports.
Depends:
R (>= 3.2.4)
License: GNU Affero General Public License version 3 (AGPL-3)
Encoding: UTF-8
LazyData: true
RoxygenNote: 5.0.1.9000

5
ledgerr/NAMESPACE Normal file
View File

@ -0,0 +1,5 @@
# Generated by roxygen2: do not edit by hand
export(net)
export(net.acc)
export(net.class)

29
ledgerr/R/net.R Normal file
View File

@ -0,0 +1,29 @@
#' Calculate net
#'
#' This function reads in your journal, subsets it according to queries, and calculates net.
#' @param journ Journal dataframe
#' @param classselect Which classes to include. c("class1","class2",...). Defaults to "all".
#' @param accselect Which accounts to include. c("class1","class2",...). Defaults to "all".
#' @param dates Date range to include. c("2014-01-01","2014-12-31"). Defaults to "all".
#' @keywords net
#' @export
#' @examples
#' net()
net<-function(journ,
classselect="all",
accselect="all",
dates="all"){
if("all" %in% classselect) {
classselect<-levels(journ$Class)
}
if("all" %in% accselect) {
accselect<-levels(journ$Account)
}
if("all" %in% dates) {
dates<-c(min(journ$Date),max(journ$Date))
}
net<-sum(journ$Credit[journ$Class %in% classselect & journ$Account %in% accselect & journ$Date>=dates[1] & journ$Date<=dates[2]],
na.rm=T)-sum(journ$Debit[journ$Class %in% classselect & journ$Account %in% accselect & journ$Date>=dates[1] & journ$Date<=dates[2]],
na.rm=T)
return(net)
}

40
ledgerr/R/net.acc.R Normal file
View File

@ -0,0 +1,40 @@
#' Calculate net per account and present as a table
#'
#' This function reads in your journal, subsets it according to queries, calculates net for each account, and prints a table..
#' @param journ Journal dataframe
#' @param classselect Which classes to include. c("class1","class2",...). Defaults to "all".
#' @param accselect Which accounts to include. c("class1","class2",...). Defaults to "all".
#' @param dates Date range to include. c("2014-01-01","2014-12-31"). Defaults to "all".
#' @keywords net account
#' @export
#' @examples
#' net.account()
net.acc<-function(journ,
classselect="all",
accselect="all",
dates="all",
total=F) {
# List of classes - need to do this here before passing to net()
if("all" %in% accselect) {
accselect<-unique(journ$Account)
}
# Set up data frame
net.acc.out<-data.frame(Account=character(),
Net=numeric(),
stringsAsFactors=FALSE)
# Loop through accounts, calculate net, and add to data frame
for (i in 1:length(accselect)) {
net.acc.out[i,] <- c(as.character(accselect[i]),
net(journ,
classselect=classselect,
accselect=accselect[i],
dates=dates))
}
# Sort by account name
net.acc.out<-net.acc.out[order(net.acc.out$Account) , ]
# Add total net row
if(total) {
net.acc.out[nrow(net.acc.out)+1,]<-c("Total",net(journal))
}
return(net.acc.out)
}

38
ledgerr/R/net.class.R Normal file
View File

@ -0,0 +1,38 @@
#' Calculate net per class and present as a table
#'
#' This function reads in your journal, subsets it according to queries, calculates net for each class, and prints a table..
#' @param journ Journal dataframe
#' @param classselect Which classes to include. c("class1","class2",...). Defaults to "all".
#' @param accselect Which accounts to include. c("class1","class2",...). Defaults to "all".
#' @param dates Date range to include. c("2014-01-01","2014-12-31"). Defaults to "all".
#' @keywords net class
#' @export
#' @examples
#' net.class()
net.class<-function(journ,
classselect="all",
accselect="all",
dates="all",
total=F) {
# List of classes
if("all" %in% classselect) {
classselect<-levels(journ$Class)
}
# Set up data frame
net.class.out<-data.frame(Class=character(),
Net=numeric(),
stringsAsFactors=FALSE)
# Loop through classes, calculate net, and add to data frame
for (i in 1:length(classselect)) {
net.class.out[i,] <- c(classselect[i],
net(journ,
classselect=classselect[i],
accselect=accselect,
dates="all"))
}
# Add total net row
if(total) {
net.class.out[nrow(net.class.out)+1,]<-c("Total",net(journal))
}
return(net.class.out)
}

25
ledgerr/man/net.Rd Normal file
View File

@ -0,0 +1,25 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/net.R
\name{net}
\alias{net}
\title{Calculate net}
\usage{
net(journ, classselect = "all", accselect = "all", dates = "all")
}
\arguments{
\item{journ}{Journal dataframe}
\item{classselect}{Which classes to include. c("class1","class2",...). Defaults to "all".}
\item{accselect}{Which accounts to include. c("class1","class2",...). Defaults to "all".}
\item{dates}{Date range to include. c("2014-01-01","2014-12-31"). Defaults to "all".}
}
\description{
This function reads in your journal, subsets it according to queries, and calculates net.
}
\examples{
net()
}
\keyword{net}

27
ledgerr/man/net.acc.Rd Normal file
View File

@ -0,0 +1,27 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/net.acc.R
\name{net.acc}
\alias{net.acc}
\title{Calculate net per account and present as a table}
\usage{
net.acc(journ, classselect = "all", accselect = "all", dates = "all",
total = F)
}
\arguments{
\item{journ}{Journal dataframe}
\item{classselect}{Which classes to include. c("class1","class2",...). Defaults to "all".}
\item{accselect}{Which accounts to include. c("class1","class2",...). Defaults to "all".}
\item{dates}{Date range to include. c("2014-01-01","2014-12-31"). Defaults to "all".}
}
\description{
This function reads in your journal, subsets it according to queries, calculates net for each account, and prints a table..
}
\examples{
net.account()
}
\keyword{account}
\keyword{net}

27
ledgerr/man/net.class.Rd Normal file
View File

@ -0,0 +1,27 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/net.class.R
\name{net.class}
\alias{net.class}
\title{Calculate net per class and present as a table}
\usage{
net.class(journ, classselect = "all", accselect = "all", dates = "all",
total = F)
}
\arguments{
\item{journ}{Journal dataframe}
\item{classselect}{Which classes to include. c("class1","class2",...). Defaults to "all".}
\item{accselect}{Which accounts to include. c("class1","class2",...). Defaults to "all".}
\item{dates}{Date range to include. c("2014-01-01","2014-12-31"). Defaults to "all".}
}
\description{
This function reads in your journal, subsets it according to queries, calculates net for each class, and prints a table..
}
\examples{
net.class()
}
\keyword{class}
\keyword{net}

View File

@ -35,92 +35,6 @@ journal$Account<-as.factor(journal$Account)
journal$Debit<-as.numeric(sub(",","",journal$Debit))
journal$Credit<-as.numeric(sub(",","",journal$Credit))
## Temp function location
# TODO https://github.com/mattbk/ledgerr/issues/1
########## net() function, takes journal, class name(s), and date range as arguments
net<-function(journ,classselect="all",accselect="all",dates="all"){
if("all" %in% classselect) {
classselect<-levels(journ$Class)
}
if("all" %in% accselect) {
accselect<-levels(journ$Account)
}
if("all" %in% dates) {
dates<-c(min(journ$Date),max(journ$Date))
}
net<-sum(journ$Credit[journ$Class %in% classselect & journ$Account %in% accselect & journ$Date>=dates[1] & journ$Date<=dates[2]],
na.rm=T)-sum(journ$Debit[journ$Class %in% classselect & journ$Account %in% accselect & journ$Date>=dates[1] & journ$Date<=dates[2]],
na.rm=T)
return(net)
}
##########
########## Net table by class
net.class<-function(journ,
classselect="all",
accselect="all",
dates="all",
total=F) {
# List of classes
if("all" %in% classselect) {
classselect<-levels(journ$Class)
}
# Set up data frame
net.class.out<-data.frame(Class=character(),
Net=numeric(),
stringsAsFactors=FALSE)
# Loop through classes, calculate net, and add to data frame
for (i in 1:length(classselect)) {
net.class.out[i,] <- c(classselect[i],
net(journ,
classselect=classselect[i],
accselect=accselect,
dates="all"))
}
# Add total net row
if(total) {
net.class.out[nrow(net.class.out)+1,]<-c("Total",net(journal))
}
return(net.class.out)
}
##########
########## Net table by account
net.acc<-function(journ,
classselect="all",
accselect="all",
dates="all",
total=F) {
# List of classes - need to do this here before passing to net()
if("all" %in% accselect) {
accselect<-unique(journ$Account)
}
# Set up data frame
net.acc.out<-data.frame(Account=character(),
Net=numeric(),
stringsAsFactors=FALSE)
# Loop through accounts, calculate net, and add to data frame
for (i in 1:length(accselect)) {
net.acc.out[i,] <- c(as.character(accselect[i]),
net(journ,
classselect=classselect,
accselect=accselect[i],
dates=dates))
}
# Sort by account name
net.acc.out<-net.acc.out[order(net.acc.out$Account) , ]
# Add total net row
if(total) {
net.acc.out[nrow(net.acc.out)+1,]<-c("Total",net(journal))
}
return(net.acc.out)
}
##########
# See other reports in QB and Ledger
```