357 lines
10 KiB
Plaintext
357 lines
10 KiB
Plaintext
*!* 21.12.2011
|
|
*!* marius.mutu
|
|
*!* tlNuSuprascrieCod default .F. se foloseste codul generat din pack_contafin, .T. se foloseste codul din act_temp
|
|
*!* folosit in inventare de corectie. se foloseste acelasi cod, id_fact ca la inventarul original
|
|
|
|
*!* 11.01.2012
|
|
*!* marius.mutu
|
|
*!* tlLoadBackup - apelare oscrie_in_fisiere cu restaurarea actactan, rul_temp, rul_temp_obinv din backupset
|
|
|
|
*!* 24.03.2026
|
|
*!* marius.mutu
|
|
*!* stergere_import_note_contabile - se stergea doar prima nota cu succes, apoi iesea din scan
|
|
|
|
Parameters tnScrie_Sterge, tlModificare, tlRul, tlNuSuprascrieCod, tlLoadBackup
|
|
*!* tnScrie_Sterge: 0 = scriere, 2 = stergere, 1 = refacere (nu se foloseste de oscrie_in_fisiere)
|
|
*!* tlModificare: .F. = nota noua, .T. modificare nota (scriere + stergere)
|
|
*!* tlNuSuprascrieCod default .F. se foloseste codul generat din pack_contafin, .T. se foloseste codul din act_temp
|
|
*!* tlLoadBackup: default .F. - nu restaurez actactan, rul_temp, rul_temp_obinv din backupset, .T. restaurez actactan, rul_temp, rul_temp_obinv din backupset
|
|
|
|
Private pcMesajRefacereNota, pdData
|
|
Local lnSucces, lnCod, lcSql, llManualTransactions, lnSucces2
|
|
|
|
*!* 11.01.2012
|
|
Local loBackupXML
|
|
pcMesajRefacereNota = ""
|
|
loBackupXML = Createobject("backupxml", "oscrie_in_fisiere") && oproceduri_comune.prg
|
|
If m.tlLoadBackup
|
|
If loBackupXML.ExistsBackupSet()
|
|
loBackupXML.RestoreBackupSet()
|
|
If Used('actactan')
|
|
Select ACTACTAN
|
|
Browse
|
|
Endif
|
|
If Used('rul_temp')
|
|
Select RUL_TEMP
|
|
Browse
|
|
Endif
|
|
If Used('rul_temp_obinv')
|
|
Select RUL_TEMP_OBINV
|
|
Browse
|
|
Endif
|
|
If AMESSAGEBOX('Doriti sa continuati scrierea notelor din backup?', 4 + 32, _Screen.Caption) <> 6
|
|
lnSucces = -1
|
|
Return m.lnSucces
|
|
Endif
|
|
Else
|
|
AMESSAGEBOX('Nu Exista backupset-ul "oscrie_in_fisiere"!', 0 + 48, _Screen.Caption)
|
|
lnSucces = -1
|
|
Return m.lnSucces
|
|
Endif
|
|
Else
|
|
If loBackupXML.ExistsBackupSet()
|
|
loBackupXML.DeleteBackupSet()
|
|
Endif
|
|
|
|
If Used('actactan')
|
|
loBackupXML.SaveBackupSet("actactan")
|
|
Endif
|
|
If Used('rul_temp')
|
|
loBackupXML.SaveBackupSet("rul_temp")
|
|
Endif
|
|
If Used('rul_temp_obinv')
|
|
loBackupXML.SaveBackupSet("rul_temp_obinv")
|
|
Endif
|
|
Endif
|
|
*!* 11.01.2012 ^
|
|
|
|
lnSucces = -1
|
|
If Reccount('actactan') = 0
|
|
AMESSAGEBOX('Nu s-a inregistrat nota contabila.')
|
|
Return lnSucces
|
|
Endif
|
|
|
|
If Empty(tnScrie_Sterge) Or Isnull(tnScrie_Sterge)
|
|
tnScrie_Sterge = 0
|
|
Endif
|
|
|
|
If !Used('ACTACTAN')
|
|
AMESSAGEBOX('Nu exista fisierul <actactan>.')
|
|
Return lnSucces
|
|
Endif
|
|
|
|
If tnScrie_Sterge = 2
|
|
Select ACTACTAN
|
|
Locate
|
|
lnCod = cod
|
|
Else
|
|
lnCod = Null
|
|
Endif
|
|
|
|
*!* modificare 18.09.2007
|
|
If tnScrie_Sterge = 2 And !tlModificare And Used('rul_temp') And Reccount('rul_temp') > 0
|
|
Private pcMesaj
|
|
Store '' To pcMesaj
|
|
lcSql = [begin ] + gcS + [.verifica_stoc(] + Alltrim(Str(lnCod)) + [,?@pcMesaj); end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
If lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.oPrelucrareEroare(), 16, "Eroare")
|
|
Return lnSucces
|
|
Endif
|
|
If !Isnull(pcMesaj)
|
|
AMESSAGEBOX(pcMesaj, 48, "Atentie")
|
|
Release pcMesaj
|
|
Return - 5
|
|
Endif
|
|
Release pcMesaj
|
|
Else
|
|
lnSucces = 1
|
|
Endif
|
|
|
|
llManualTransactions = Iif(SQLGetprop(gnhandle, "Transactions") = 2, .T., .F.)
|
|
|
|
If lnSucces > 0
|
|
If !tlModificare And !llManualTransactions
|
|
lnSucces = SQLSetprop(gnhandle, "Transactions", 2)
|
|
Endif
|
|
Endif
|
|
|
|
If lnSucces > 0
|
|
pdData = {}
|
|
lcSql = [begin pack_contafin.init_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna,] + ;
|
|
Iif(m.tlNuSuprascrieCod, "0", "1") + [,] + Alltrim(Str(tnScrie_Sterge)) + [,?gnIdSucursala); end;]
|
|
lnSucces = Iif(goExecutor.oExecuta(lcSql), 1, -1)
|
|
Endif
|
|
|
|
If lnSucces > 0
|
|
lnSucces = sql_temp_insert('actactan', 'ACT_TEMP')
|
|
|
|
If lnSucces > 0 And tlRul
|
|
If Used('rul_temp') And Reccount('rul_temp') > 0
|
|
lnSucces = sql_temp_insert('rul_temp', 'RUL_TEMP')
|
|
Endif
|
|
If Used('RUL_TEMP_OBINV') And Reccount('RUL_TEMP_OBINV') > 0
|
|
lnSucces = sql_temp_insert('rul_temp_obinv', 'RUL_TEMP_OBINV')
|
|
Endif
|
|
Endif
|
|
Endif
|
|
|
|
If lnSucces > 0
|
|
pcMesajRefacereNota = ""
|
|
lcSql = [begin pack_contafin.final_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna,] + Iif(tnScrie_Sterge == 2, Alltrim(Str(lnCod)), [NULL]) + [,] + ;
|
|
Alltrim(Str(tnScrie_Sterge)) + [,] + Iif(tlModificare, [0], [1]) + [,?@pcMesajRefacereNota); end;]
|
|
lnSucces = Iif(goExecutor.oExecuta(lcSql), 1, -1)
|
|
If !Empty(Nvl(pcMesajRefacereNota, ''))
|
|
AMESSAGEBOX(pcMesajRefacereNota, 0 + 48, 'Atentie')
|
|
Endif
|
|
Endif
|
|
|
|
If !tlModificare And !llManualTransactions
|
|
If lnSucces < 0
|
|
lcSql = "ROLLBACK"
|
|
Else
|
|
lcSql = "COMMIT"
|
|
Endif
|
|
lnSucces2 = goExecutor.oExecute(lcSql)
|
|
|
|
If lnSucces2 < 0
|
|
AMESSAGEBOX(lcSql + Chr(13) + goExecutor.cEroare, 0 + 16, "Eroare")
|
|
Endif
|
|
|
|
lnSucces2 = SQLSetprop(gnhandle, "Transactions", 1)
|
|
If lnSucces2 < 0
|
|
AMESSAGEBOX('Programul nu a reusit sa treaca pe tranzactie automata. Iesiti din program si intrati din nou!', 0 + 48, 'Atentie!')
|
|
Endif
|
|
Endif
|
|
|
|
Return lnSucces
|
|
|
|
|
|
|
|
&& ------------------------------------------------------------------------------------
|
|
Procedure sql_temp_insert
|
|
Lparameters tcAlias, tcTableName
|
|
|
|
Local lcAlias, lcCursor, lnSucces
|
|
Private poIreg
|
|
Local lcVariable
|
|
|
|
If Empty(tcAlias)
|
|
lcAlias = 'ACTACTAN'
|
|
Else
|
|
lcAlias = Upper(Alltrim(tcAlias))
|
|
Endif
|
|
If Empty(tcTableName)
|
|
lcTableName = 'ACT_TEMP'
|
|
Else
|
|
lcTableName = Upper(Alltrim(tcTableName))
|
|
Endif
|
|
|
|
lcCursor = 'crs_Coloane'
|
|
lcSql = [SELECT COLUMN_NAME AS COLOANA from user_tab_columns WHERE table_name = ?lcTableName]
|
|
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
|
|
If lnSucces < 0
|
|
AMESSAGEBOX('Eroare la selectare coloane din ' + lcTableName + Chr(13) + goExecutor.cEroare, 0 + 16, 'Eroare')
|
|
Endif
|
|
|
|
If lnSucces > 0
|
|
***
|
|
Select (lcAlias)
|
|
lnCount = Fcount()
|
|
Scan
|
|
lcFields = []
|
|
lcValues = []
|
|
lcInsert = []
|
|
Scatter Name poIreg
|
|
|
|
For i = 1 To lnCount
|
|
Select (lcAlias)
|
|
lcFieldName = Upper(Alltrim(Field(i)))
|
|
lcFieldType = Type(lcFieldName)
|
|
lcFieldValue = Evaluate(lcFieldName)
|
|
If lcFieldType = 'C'
|
|
lcVariable = '?ALLTRIM(poIreg.' + lcFieldName + ')'
|
|
Else
|
|
lcVariable = '?poIreg.' + lcFieldName
|
|
Endif
|
|
|
|
Select CRS_COLOANE
|
|
Locate For Upper(Alltrim(COLOANA)) == lcFieldName
|
|
If !Found()
|
|
Loop
|
|
Endif
|
|
lcFields = lcFields + [,] + lcFieldName
|
|
lcNumber = '0'
|
|
lcDate = ''
|
|
lcString = ''
|
|
|
|
lcValues = lcValues + [,] + lcVariable
|
|
|
|
*!* DO CASE
|
|
*!* CASE lcFieldType = 'N'
|
|
*!* IF EMPTY(lcFieldValue) OR ISNULL(lcFieldValue)
|
|
*!* lcNumber = '0'
|
|
*!* ELSE
|
|
*!* lcNumber = ALLTRIM(STR(lcFieldValue,24,4))
|
|
*!* ENDIF
|
|
|
|
*!* lcValues = lcValues + [,] + lcNumber
|
|
*!* CASE lcFieldType = 'C'
|
|
*!* IF EMPTY(lcFieldValue) OR ISNULL(lcFieldValue)
|
|
*!* lcString = ''
|
|
*!* ELSE
|
|
*!* lcString = ALLTRIM(lcFieldValue)
|
|
*!* ENDIF
|
|
|
|
*!* lcValues = lcValues + [,] + ['] + lcString + [']
|
|
*!* CASE INLIST(lcFieldType,'D','T')
|
|
*!* IF EMPTY(lcFieldValue) OR ISNULL(lcFieldValue)
|
|
*!* lcDate = ''
|
|
*!* ELSE
|
|
*!* lcDate = DTOS(lcFieldValue)
|
|
*!* ENDIF
|
|
*!* lcValues = lcValues + [,] + [TO_DATE('] + lcDate + [','YYYY-MM-DD')]
|
|
*!* ENDCASE
|
|
|
|
Endfor
|
|
* FAC NULL ID-URILE CU VALOARE 0
|
|
poIreg.id_sucursala = IIF(!EMPTY(NVL(poIreg.id_sucursala,0)), poIreg.id_sucursala, NULL)
|
|
IF TYPE('poIreg.taxcode') <> 'U'
|
|
poIreg.taxcode = IIF(!EMPTY(NVL(poIreg.taxcode,0)), poIreg.taxcode, NULL)
|
|
ENDIF
|
|
IF TYPE('poIreg.paymentcode') <> 'U'
|
|
poIreg.paymentcode = IIF(!EMPTY(NVL(poIreg.paymentcode,'')), poIreg.paymentcode, NULL)
|
|
ENDIF
|
|
IF TYPE('poIreg.id_jtva_coloana') <> 'U'
|
|
poIreg.id_jtva_coloana = IIF(!EMPTY(NVL(poIreg.id_jtva_coloana,0)), poIreg.id_jtva_coloana, NULL)
|
|
ENDIF
|
|
|
|
lcFields = Substr(lcFields, 2)
|
|
lcValues = Substr(lcValues, 2)
|
|
|
|
&& INSERT INTO ACT_TEMP
|
|
lcInsert = [INSERT INTO ] + lcTableName + [ (] + lcFields + [) VALUES (] + lcValues + [)]
|
|
lnSucces = goExecutor.oExecute(lcInsert)
|
|
If lnSucces < 0
|
|
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
|
|
Exit
|
|
Endif
|
|
|
|
Endscan
|
|
Endif
|
|
If Used('crs_coloane')
|
|
Use In CRS_COLOANE
|
|
Endif
|
|
|
|
Return lnSucces
|
|
|
|
Endproc && sql_temp_insert
|
|
|
|
|
|
******************
|
|
* Sterge importuri dupa act.explicatia5 sau un cod, cate un calup de note (cod)
|
|
******************
|
|
PROCEDURE stergere_import_note_contabile
|
|
LPARAMETERS tcExplicatia, tnCod, tcColoana
|
|
* tcExplicatia = valoarea din coloana act.explicatia5
|
|
* tcColoana (optional) default = 'explicatia5'
|
|
* tnCod (optional) daca doresc sa sterg un singur cod
|
|
|
|
PRIVATE pcExplicatia
|
|
Local lcColoana, lcCursor, lcSql, llSucces, lnSucces, lcSelect
|
|
LOCAL lnPercent, lcTask
|
|
lcselect = SELECT()
|
|
lcColoana = IIF(EMPTY(m.tcColoana), 'explicatia5', m.tcColoana)
|
|
pcExplicatia = ALLTRIM(NVL(m.tcExplicatia, ''))
|
|
pnCod = NVL(m.tnCod, 0)
|
|
IF EMPTY(m.pcExplicatia) AND EMPTY(m.pnCod)
|
|
llSucces = .F.
|
|
SELECT (m.lcSelect)
|
|
RETURN m.llSucces
|
|
ENDIF
|
|
lcTask = 'Stergere...'
|
|
|
|
lcSql = [select distinct cod from act where an=?gnAn and Luna=?gnLuna and sters=0 ] + ;
|
|
IIF(!EMPTY(m.pcExplicatia), [ and ] + m.lcColoana + [ = ?pcExplicatia], '') + ;
|
|
IIF(!EMPTY(m.pnCod), [ and cod = ?pnCod], '')
|
|
lcCursor = [cCoduri]
|
|
llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursor)
|
|
|
|
IF !m.llSucces
|
|
SELECT (m.lcSelect)
|
|
RETURN m.llSucces
|
|
ENDIF
|
|
|
|
lnSucces = SQLSetprop(m.gnhandle, "Transactions", 2)
|
|
lcSql = [begin pack_contafin.init_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna, 1,0,?gnIdSucursala); end;]
|
|
llSucces = goExecutor.oExecuta(lcSql)
|
|
If m.llSucces
|
|
Select cCoduri
|
|
Scan
|
|
pnCod = cod
|
|
If Mod(Recno(), 10) = 0
|
|
lnPercent = Round(Recno() / Reccount() * 100, 0)
|
|
WAIT WINDOW m.lcTask + Alltrim(Str(m.lnPercent)) + '%' NOWAIT
|
|
Endif
|
|
lcSql = [begin pack_contafin.sterge_document(?pnCod); end;]
|
|
llSucces = goExecutor.oExecuta(lcSql)
|
|
If !m.llSucces
|
|
Exit
|
|
Endif
|
|
ENDSCAN
|
|
Endif
|
|
|
|
If m.llSucces
|
|
llSucces2 = goExecutor.oExecuta('COMMIT')
|
|
Else
|
|
llSucces2 = goExecutor.oExecuta('ROLLBACK')
|
|
Endif
|
|
|
|
SQLSetprop(m.gnhandle, "Transactions", 1)
|
|
|
|
SELECT (m.lcSelect)
|
|
|
|
RETURN m.llSucces
|
|
ENDPROC && stergere_import_note_contabile
|
|
|