【发布时间】:2019-08-30 00:55:26
【问题描述】:
我正在尝试从没有 API 的计费系统中获取一些数据,并向我们发送 Excel 格式的文件,并将数据映射到新的列和标题中,以与 Quickbooks 字段匹配。
我已经完成了一半,我已将拆分数据全部映射到正确的列和行,但我不知道如何将数据合并到所有拆分数据之上的每个帐户的一行中。
以下是计费程序的数据来源:
BillingDate,Type,Acct,Customer,Code,Description,Qty,Price,Extension,GLCode
8/1/19,MRC,1003,Test Account,CONF6,CONFERENCE CALL RATE - $0.06/CPM/LEG,1,0.00,0.00,4202
8/1/19,MRC,1003,Test Account,INTL,INTERNATIONAL RATE PLAN,1,0.00,0.00,4202
8/1/19,MRC,1003,Test Account,MASU,MASS ANNOUNCEMENT,1,0.00,0.00,4202
8/1/19,MRC,1003,Test Account,UNLD,UNLIMITED LONG DISTANCE,1,0.00,0.00,4202
8/1/19,MRC,1003,Test Account,W911,911 SERVICE,1,0.00,0.00,4202
8/1/19,MRC,1003,Test Account,WDA,DIRECTORY ASSISTANCE,1,0.00,0.00,4202
8/1/19,MRC,1003,Test Account,WDIDNN,DID NUMBERS - NATIONAL,42,0.00,0.00,4202
8/1/19,MRC,1003,Test Account,WIPTL1,SIP TRUNK,1,375.00,375.00,4202
8/1/19,MRC,1003,Test Account,WMGRT,MANAGED ROUTER,1,50.00,50.00,4202
8/1/19,Prorates,1003,Test Account,WIPTL1,SIP TRUNK,1,362.90,362.90,4202
8/1/19,Prorates,1003,Test Account,WMGRT,MANAGED ROUTER,1,48.39,48.39,4202
8/1/19,Tax Detail,1003,Test Account,00-59,FCC Cost Recovery Fee,1,1.43,1.43,3400
8/1/19,Tax Detail,1003,Test Account,00-60,Federal Telecommunications Relay Services Fund,1,13.44,13.44,3400
8/1/19,Tax Detail,1003,Test Account,00-R1,Federal Recovery Fee V001-002,1,103.31,103.31,3400
8/1/19,Tax Detail,1003,Test Account,01-01,State Sales Tax - Intrastate Telecom,1,30.47,30.47,3410
8/1/19,Tax Detail,1003,Test Account,02-02,County Sales Tax,1,5.41,5.41,3410
8/1/19,Tax Detail,1003,Test Account,02-33,911 Surcharge (Local),1,5.00,5.00,3400
以下是我目前的 PS 脚本:
$path = "pathtofile"
$DataFile = $path + "source.csv"
$ExportedFileCSV = $path + "final.csv"
$dataInput = Import-Csv $DataFile
$dataOutput = Import-Csv $ExportedFileCSV
$dataInput | ForEach-Object {
$newData = $_
$newRecordProperties = [ordered]@{
"TRNS"="TRNS",$newData.null,"INVOICE",$newData.BillingDate
"SPL"="SPL"
"SPLID"=$newData.null
"TRNSTYPE"="INVOICE"
"DATE"=$newData.BillingDate
"NAME"=$newData.Customer
"DOCNUM"=$newData.null
"DUEDATE"=$newdata.null
"ACCNT"=$newData.GLCode
"AMOUNT"=-$newData.Price
"EXTRA"=-$newData.Extension
}
$newRecord = new-object psobject -Property $newRecordProperties
Write-Output $newRecord
} | convertto-csv -NoTypeInformation -Delimiter "," | % {$_ -replace '"',''} | Out-File $ExportedFileCSV
我希望输出如下所示:
!TRNS,TRNSID,TRNSTYPE,DATE,NAME,DOCNUM,DUEDATE,ACCNT,AMOUNT,PAID
!SPL,SPLID,TRNSTYPE,DATE,NAME,DOCNUM,DUEDATE,ACCNT,AMOUNT,EXTRA
!ENDTRNS,,,,,,,,,
TRNS,,INVOICE,08/01/2019,Test Account,080119-1003,08/01/2019,1200,995.35,N
SPL,,INVOICE,,,,,4202,-375.00
SPL,,INVOICE,,,,,4202,-50.00
SPL,,INVOICE,,,,,4202,-362.90
SPL,,INVOICE,,,,,4202,-48.39
SPL,,INVOICE,,,,,3400,-1.43
SPL,,INVOICE,,,,,3400,-13.44
SPL,,INVOICE,,,,,3400,-103.31
SPL,,INVOICE,,,,,3410,-30.47
SPL,,INVOICE,,,,,3410,-5.41
SPL,,INVOICE,,,,,3400,-5.00
SPL,,INVOICE,,,,,,0.00,AUTOSTAX
ENDTRNS,,,,,,,,,
这就是我得到的:
SPL,SPLID,TRNSTYPE,DATE,NAME,DOCNUM,DUEDATE,ACCNT,AMOUNT,EXTRA
SPL,,INVOICE,8/1/19,Test Account,,,,-375,-375
SPL,,INVOICE,8/1/19,Test Account,,,,-50,-50
SPL,,INVOICE,8/1/19,Test Account,,,,-362.9,-362.9
SPL,,INVOICE,8/1/19,Test Account,,,,-48.39,-48.39
SPL,,INVOICE,8/1/19,Test Account,,,,-1.43,-1.43
SPL,,INVOICE,8/1/19,Test Account,,,,-13.44,-13.44
SPL,,INVOICE,8/1/19,Test Account,,,,-103.31,-103.31
SPL,,INVOICE,8/1/19,Test Account,,,,-30.47,-30.47
SPL,,INVOICE,8/1/19,Test Account,,,,-5.41,-5.41
SPL,,INVOICE,8/1/19,Test Account,,,,-5,-5
我已经为此工作了大约 2 周,并且承认,我是 Powershell 的新手。任何帮助将不胜感激!
【问题讨论】:
-
你能发布一个输入样本吗?
-
@swestner 当然!对不起,我应该把它包含在帖子中。我现在已经编辑了帖子以包含它。
-
@mklement0 我很抱歉,那是我尝试的东西的一些剩余物。感谢您指出这一点。
标签: powershell csv quickbooks