@@ -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
									
								
							
							
						
						
									
										2
									
								
								ledgerr/.Rbuildignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
^.*\.Rproj$
 | 
			
		||||
^\.Rproj\.user$
 | 
			
		||||
							
								
								
									
										3
									
								
								ledgerr/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								ledgerr/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
.Rproj.user
 | 
			
		||||
.Rhistory
 | 
			
		||||
.RData
 | 
			
		||||
							
								
								
									
										12
									
								
								ledgerr/DESCRIPTION
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								ledgerr/DESCRIPTION
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										5
									
								
								ledgerr/NAMESPACE
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										29
									
								
								ledgerr/R/net.R
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										40
									
								
								ledgerr/R/net.acc.R
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										38
									
								
								ledgerr/R/net.class.R
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										25
									
								
								ledgerr/man/net.Rd
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										27
									
								
								ledgerr/man/net.acc.Rd
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										27
									
								
								ledgerr/man/net.class.Rd
									
									
									
									
									
										Normal 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}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										86
									
								
								working.Rmd
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								working.Rmd
									
									
									
									
									
								
							@@ -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
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
		Reference in New Issue
	
	Block a user