200 lines
14 KiB
VB.net
200 lines
14 KiB
VB.net
Imports System.Xml
|
|
Imports System.Configuration
|
|
Imports DevExpress.Xpo
|
|
Imports SISBusiness.Module
|
|
Imports DevExpress.Data.Filtering
|
|
Imports System.Collections.Specialized
|
|
|
|
Public Module GetGLAccounts
|
|
Public Sub GLAccountImport(_XML As XmlDocument, _errorLogFile As String, _Session As DevExpress.Xpo.Session, Optional IsService As Boolean = True)
|
|
Dim _StartTime As DateTime = Now
|
|
|
|
GetCustomers.CustomerImport(_XML, "JsonXML/params/ugyfel", _errorLogFile, _Session, True)
|
|
|
|
Dim _decimalSeparator As String = Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
|
|
Dim _groupSeparator As String = Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator
|
|
Dim _uow As UnitOfWork
|
|
Dim _Customers As Customers
|
|
|
|
If _Session.IsConnected Then
|
|
_uow = New UnitOfWork(_Session.DataLayer)
|
|
_uow.Dictionary.GetDataStoreSchema(GetType(GLAccounts).Assembly)
|
|
InitAuditTrail(_uow)
|
|
|
|
Dim _GLAccounts As GLAccounts = _uow.FindObject(Of GLAccounts) _
|
|
(CriteriaOperator.Parse("PartnerType=0 and CustomersFrom=? and Customers.CustomerNumber=? and DocumentNumber=?", _
|
|
ConfigurationManager.AppSettings("CustomersFrom").ToString, _XML.SelectSingleNode("JsonXML/params/ugyfelszam").InnerText.ToString, _
|
|
_XML.SelectSingleNode("JsonXML/params/szamlasorszam").InnerText.ToString))
|
|
Dim _GLRows As GLRows
|
|
Dim _BruttoHUF As Double = 0, _BruttoDEV As Double = 0
|
|
Dim _VATHUF As Double = 0, _VATDEV As Double = 0
|
|
Dim _NettoHUF As Double = 0, _NettoDEV As Double = 0
|
|
Dim _GUID As Guid = Guid.NewGuid
|
|
Dim _NV_Controlling As NameValueCollection = ConfigurationManager.GetSection("Services_Controlling")
|
|
Dim _NV_CostHolder As NameValueCollection = ConfigurationManager.GetSection("Services_CostHolder")
|
|
Dim _NV_VAT As NameValueCollection = ConfigurationManager.GetSection("Services_VAT")
|
|
|
|
If _GLAccounts Is Nothing Then
|
|
|
|
|
|
_Customers = _uow.FindObject(Of Customers)(CriteriaOperator.Parse("CustomerNumber=?", _XML.SelectSingleNode("JsonXML/params/ugyfelszam").InnerText.ToString))
|
|
|
|
If _Customers Is Nothing Then
|
|
WriteErrorLog("Nincs ügyfél rögzítve ! -> " + _XML.SelectSingleNode("JsonXML/params/ügyfelszam").InnerText.ToString, _errorLogFile)
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
_GLAccounts = New GLAccounts(_uow)
|
|
_GLAccounts.IsEditable = True
|
|
_GLAccounts.IsStorno = False
|
|
_GLAccounts.PartnerType = ePartnerType.eReceivables
|
|
_GLAccounts.Customers = _Customers
|
|
_GLAccounts.CustomersFrom = _uow.FindObject(Of CustomersFrom)(CriteriaOperator.Parse("Oid=?", ConfigurationManager.AppSettings("CustomersFrom").ToString))
|
|
_GLAccounts.ConnectInfo = _XML.SelectSingleNode("JsonXML/params/szamlasorszam").InnerText.ToString
|
|
_GLAccounts.DocumentNumber = _XML.SelectSingleNode("JsonXML/params/szamlasorszam").InnerText.ToString
|
|
_GLAccounts.DateCreated = _XML.SelectSingleNode("JsonXML/params/kiallitas").InnerText.ToString
|
|
_GLAccounts.DateExecution = _XML.SelectSingleNode("JsonXML/params/teljesites").InnerText.ToString
|
|
_GLAccounts.DatePayment = _XML.SelectSingleNode("JsonXML/params/hatarido").InnerText.ToString
|
|
_GLAccounts.NoteHeader = _XML.SelectSingleNode("JsonXML/params/megjegyzes").InnerText.ToString
|
|
_GLAccounts.CurrencyName = _uow.FindObject(Of CurrencyName)(CriteriaOperator.Parse("ShortName='HUF'"))
|
|
_GLAccounts.PaymentOption = _uow.FindObject(Of PaymentOption)(CriteriaOperator.Parse("ShortName='ÁTUTALÁS'"))
|
|
|
|
Dim _XmlNodeList As XmlNodeList = _XML.SelectNodes("JsonXML/params/szamlasorok")
|
|
For Each _XmlNode As XmlNode In _XmlNodeList
|
|
If _XmlNode.HasChildNodes Then
|
|
For Each _XmlNode_szamlasorok As XmlNode In _XmlNode.ChildNodes
|
|
|
|
|
|
_GLAccounts.row_Controlling = _uow.FindObject(Of Controlling)(CriteriaOperator.Parse("Oid=?", _NV_Controlling(_XmlNode_szamlasorok.SelectSingleNode("szolgaltatas/szolgaltatascsoport/id").InnerText)))
|
|
_GLAccounts.row_CostHolder = _uow.FindObject(Of CostHolder)(CriteriaOperator.Parse("Oid=?", _NV_CostHolder(_XmlNode_szamlasorok.SelectSingleNode("szolgaltatas/szolgaltatascsoport/id").InnerText)))
|
|
_GLAccounts.row_VAT = _uow.FindObject(Of VAT)(CriteriaOperator.Parse("Oid=?", _NV_VAT(_XmlNode_szamlasorok.SelectSingleNode("afanev").InnerText)))
|
|
|
|
_GLAccounts.row_ChartOfAccounts = _GLAccounts.row_Controlling.GetChartOfAccounts(_GLAccounts.DateExecution.Year, False)
|
|
|
|
_GLAccounts.row_AmountDEV = 0
|
|
_GLAccounts.row_AmountHUF = CDbl(Replace(_XmlNode_szamlasorok.SelectSingleNode("nettoar").InnerText, ".", _decimalSeparator))
|
|
|
|
_GLAccounts.row_DateVAT = _GLAccounts.DateExecution
|
|
|
|
|
|
_GLAccounts.row_NoteRows = _XmlNode_szamlasorok.SelectSingleNode("megnevezes").InnerText + vbNewLine + _XmlNode_szamlasorok.SelectSingleNode("megjegyzes").InnerText
|
|
_GLAccounts.row_UniqueObjects = Nothing
|
|
_GLAccounts.row_JobNumberObjects = Nothing
|
|
_GLAccounts.row_CostPlace = Nothing
|
|
|
|
_GLAccounts.row_ConnectInfo = _GLAccounts.ConnectInfo
|
|
|
|
If _GLAccounts.PartnerType = ePartnerType.eReceivables Then
|
|
_GLAccounts.PartnerType = ePartnerType.eReceivables
|
|
_GLAccounts.row_CreditChartOfAccounts = _GLAccounts.row_ChartOfAccounts
|
|
_GLAccounts.row_DebitChartOfAccounts = _GLAccounts.Customers.CustomersGLParameters.GetChartOfAccounts(_GLAccounts.DateExecution.Year, eVATMode.eOut)
|
|
Else
|
|
_GLAccounts.PartnerType = ePartnerType.ePayabels
|
|
_GLAccounts.row_CreditChartOfAccounts = _GLAccounts.Customers.CustomersGLParameters.GetChartOfAccounts(_GLAccounts.DateExecution.Year, eVATMode.eIn)
|
|
_GLAccounts.row_DebitChartOfAccounts = _GLAccounts.row_ChartOfAccounts
|
|
End If
|
|
|
|
|
|
_BruttoHUF = _GLAccounts.row_AmountHUF
|
|
If _GLAccounts.row_VAT IsNot Nothing Then
|
|
If _GLAccounts.row_VAT.InversState = True Then
|
|
_VATHUF = Math.Round(_BruttoHUF * _GLAccounts.row_VAT.InversKeyValue, 0, MidpointRounding.AwayFromZero)
|
|
_NettoHUF = _BruttoHUF
|
|
_BruttoHUF = _NettoHUF + _VATHUF
|
|
Else
|
|
_VATHUF = Math.Round(_BruttoHUF / (1 + _GLAccounts.row_VAT.KeyValue) * _GLAccounts.row_VAT.KeyValue, 0, MidpointRounding.AwayFromZero)
|
|
_NettoHUF = _BruttoHUF - _VATHUF
|
|
End If
|
|
Else
|
|
_VATHUF = 0
|
|
_NettoHUF = _BruttoHUF - _VATHUF
|
|
End If
|
|
|
|
' -- ÁFA vizsgálata --------------------------------------------------------------------------------------------
|
|
' -- Létrehoz egy sort a nettó összegre ------------------------------------------------------------------------------------------
|
|
|
|
_GLRows = New GLRows(_uow)
|
|
_GLRows.PartnerType = _GLAccounts.PartnerType
|
|
If _GLRows.PartnerType = ePartnerType.eReceivables Then
|
|
_GLRows.DebitAmountHUF = _NettoHUF
|
|
_GLRows.DebitAmountDEV = _NettoDEV
|
|
Else
|
|
_GLRows.CreditAmountHUF = _NettoHUF
|
|
_GLRows.CreditAmountDEV = _NettoDEV
|
|
End If
|
|
_GLRows.AddGLRows(_GLAccounts, _GLAccounts.row_DebitChartOfAccounts, _GLAccounts.row_CreditChartOfAccounts, _
|
|
_NettoDEV, _NettoHUF, Nothing, _
|
|
_GLAccounts.Customers, _GLAccounts.row_DateVAT, _GLAccounts.row_VAT, _
|
|
_GLAccounts.row_NoteRows, _GLAccounts.row_UniqueObjects, _
|
|
_GLAccounts.row_Controlling, _GLAccounts.row_JobNumberObjects, _GLAccounts.row_CostPlace, _
|
|
_GLAccounts.row_CostHolder, _GLAccounts.row_ConnectInfo, eGLRowsTypeVAT.eNettoRow, _GUID, _
|
|
eTransactionType.eNotSet, eCashType.ePartner, _GLAccounts.PartnerType)
|
|
Next
|
|
End If
|
|
Next
|
|
|
|
'-- ÁFA összesítés egy, egy sorban !
|
|
Dim _XmlNodeList_afaosszesites As XmlNodeList = _XML.SelectNodes("JsonXML/params/afaosszesitesek")
|
|
For Each _XmlNode As XmlNode In _XmlNodeList_afaosszesites
|
|
If _XmlNode.HasChildNodes Then
|
|
For Each _XmlNode_afaosszesites As XmlNode In _XmlNode.ChildNodes
|
|
_VATHUF = CDbl(Replace(_XmlNode_afaosszesites.SelectSingleNode("afa").InnerText, ".", _decimalSeparator))
|
|
_GLAccounts.row_VAT = _uow.FindObject(Of VAT)(CriteriaOperator.Parse("Oid=?", _NV_VAT(_XmlNode_afaosszesites.SelectSingleNode("afakulcs").InnerText)))
|
|
|
|
_GLAccounts.row_CreditChartOfAccounts = _GLAccounts.row_VAT.GetChartOfAccounts(_GLAccounts.DateExecution.Year, eVATMode.eOut)
|
|
_GLAccounts.row_DebitChartOfAccounts = _GLAccounts.Customers.CustomersGLParameters.GetChartOfAccounts(_GLAccounts.DateExecution.Year, eVATMode.eOut)
|
|
_GLRows = New GLRows(_uow)
|
|
_GLRows.PartnerType = _GLAccounts.PartnerType
|
|
If _GLRows.PartnerType = ePartnerType.eReceivables Then
|
|
_GLRows.DebitAmountHUF = _VATHUF
|
|
_GLRows.DebitAmountDEV = _VATDEV
|
|
Else
|
|
_GLRows.CreditAmountHUF = _VATHUF
|
|
_GLRows.CreditAmountDEV = _VATDEV
|
|
End If
|
|
_GLRows.AddGLRows(_GLAccounts, _GLAccounts.row_DebitChartOfAccounts, _GLAccounts.row_CreditChartOfAccounts, _
|
|
_VATDEV, _VATHUF, _GLAccounts.row_LiquidAssets, _
|
|
_GLAccounts.Customers, _GLAccounts.row_DateVAT, _GLAccounts.row_VAT, _GLAccounts.row_NoteRows, _
|
|
_GLAccounts.row_UniqueObjects, _GLAccounts.row_Controlling, _GLAccounts.row_JobNumberObjects, _
|
|
_GLAccounts.row_CostPlace, _GLAccounts.row_CostHolder, _GLAccounts.row_ConnectInfo, _
|
|
eGLRowsTypeVAT.eVATRow, Nothing, eTransactionType.eNotSet, eCashType.ePartner, _GLAccounts.PartnerType)
|
|
Next
|
|
End If
|
|
Next
|
|
'// Számla véglegesítése
|
|
_GLAccounts.IsEditable = False
|
|
For Each _GLRows In _GLAccounts.GLRows
|
|
_GLRows.ConnectInfo = _GLAccounts.row_ConnectInfo
|
|
_GLRows.DateVAT = _GLAccounts.row_DateVAT
|
|
If _GLRows.GLHeader.CurrencyName.ShortName <> "HUF" Then
|
|
If _GLAccounts.PartnerType = ePartnerType.ePayabels Then
|
|
If _GLRows.GLRowsTypeVAT <> eGLRowsTypeVAT.eVATRow Then
|
|
_GLRows.AmountHUF = Math.Round(Math.Round(_GLAccounts.CurrencyRate, 2, MidpointRounding.AwayFromZero) * Math.Round(_GLRows.AmountDEV, 2, MidpointRounding.AwayFromZero), 0, MidpointRounding.AwayFromZero)
|
|
End If
|
|
If _GLRows.GLRowsTypeVAT = eGLRowsTypeVAT.eVATRow Then
|
|
_GLRows.AmountHUF = Math.Round(Math.Round(_GLAccounts.CurrencyRateVAT, 2, MidpointRounding.AwayFromZero) * Math.Round(_GLRows.AmountDEV, 2, MidpointRounding.AwayFromZero), 0, MidpointRounding.AwayFromZero)
|
|
End If
|
|
Else
|
|
_GLRows.AmountHUF = Math.Round(Math.Round(_GLAccounts.CurrencyRate, 2, MidpointRounding.AwayFromZero) * Math.Round(_GLRows.AmountDEV, 2, MidpointRounding.AwayFromZero), 0, MidpointRounding.AwayFromZero)
|
|
End If
|
|
End If
|
|
Next
|
|
_GLAccounts.RecalculateTotal()
|
|
End If
|
|
_uow.CommitChanges()
|
|
SaveAuditTrail(_uow)
|
|
GLFunctions.ReconfigurePCI(_uow, _GLAccounts.CustomersFrom, _GLAccounts.Customers, _GLAccounts.PartnerType, _GLAccounts.ConnectInfo)
|
|
_uow.CommitChanges()
|
|
|
|
Dim _EndTime As DateTime = Now
|
|
Dim _ActTime As TimeSpan = _EndTime.Subtract(_StartTime)
|
|
If IsService Then
|
|
'Diagnostics.EventLog.WriteEntry(ConfigurationManager.AppSettings("ServiceName"), "Küldés : " + String.Format("Record: [Customer: {1}, GLAccounts: {2}]", _Customers.Oid_DH, _GLAccounts.DocumentNumber))
|
|
Else
|
|
WriteStatisticFile(String.Format("Current time: {0}, Record: [Customer: {1}, GLAccounts: {2}]", _ActTime.ToString, _Customers.Oid_DH, _GLAccounts.DocumentNumber), Environment.CurrentDirectory + "Statistic.txt")
|
|
End If
|
|
End If
|
|
End Sub
|
|
End Module
|