Вы находитесь на странице: 1из 11

Function CalculPMP(CodeObjet As String, CodeMagasin As Long)

On Error GoTo err_calc

Dim QteStockE As Double


Dim QteStock As Double
Dim QteStockVal As Double
Dim rstRangement As Recordset
Dim rstObjetCMP As Recordset
Dim dblPMP As Double
Dim dDateDernMouv As Date

'Debug.Print "TypeES='E' And CodeObjet='" & CodeObjet & "' And CodeMagasin=" & CodeMagasin
'QteStockE = Nz(DLookup("Quantite", "ReMouvement_1", "TypeES='E' And CodeObjet='" & CodeObjet & "' And
CodeMagasin=" & CodeMagasin), 0)
QteStockE = Nz(DSum("Quantite", "ReMouvement_1CUMP", "TypeES='E' And CodeObjet='" & CodeObjet & "' And
CodeMagasin=" & CodeMagasin), 0)
QteStockVal = Nz(DSum("Quantification", "ReMouvement_1CUMP", "TypeES='E' And CodeObjet='" & CodeObjet & "' And
CodeMagasin=" & CodeMagasin), 0)
dDateDernMouv = DLast("DateMouv", "ReMouvement_1CUMP", "CodeObjet='" & CodeObjet & "' And CodeMagasin=" &
CodeMagasin)

'If (Not QteStock = 0) Then


If QteStockE = 0 Then
dblPMP = 0
Else
1

dblPMP = QteStockVal / QteStockE


'Else
' dblPMP = 0
End If

QteStock = DSum("QteMvt", "ReMouvement_1", "CodeObjet='" & CodeObjet & "' And CodeMagasin=" & CodeMagasin)

Set rstRangement = CurrentDb.OpenRecordset("Select * From TRangements Where CodeMagasin=" & CodeMagasin & "
And CodeObjet='" & CodeObjet & "'")
With rstRangement
If (.RecordCount = 0) Then
.AddNew
Else
.Edit
End If
!CodeMagasin = CodeMagasin
!CodeObjet = CodeObjet
!QuantiteStock = QteStock
!DateDernierMouv = dDateDernMouv
'!PrixUMP = QteStockVal / QteStockE 'dblPMP
!PrixUMP = dblPMP
.Update
.Close
End With
2

'Coder par moi


Set rstObjetCMP = CurrentDb.OpenRecordset("Select * From TObjets Where CodeObjet='" & CodeObjet & "'")

With rstObjetCMP
.Edit
!CoutMoyenP = dblPMP 'QteStockVal / QteStock
.Update
.Close
End With
Exit Function
err_calc:
MsgBox err.Description
'Resume Next
End Function

Function CreeBonDeRegularisation(CodeInventaire As Long, CodeMagasin As String, DateInv As Date)


Dim rst As Recordset
Dim rstMouvement As Recordset
Dim cpt As Long
Dim StrSql As String
Dim IdSaisieLigne As Long
Dim rstRangement As Recordset
3

Dim db As Database

Set rstRangement = CurrentDb.OpenRecordset("Select * From TRangements Where CodeMagasin= 0")


Set rstMouvement = CurrentDb.OpenRecordset("Select * From TMouvement Where CodeMagasin= 0")
With rstMouvement
.AddNew
!CodePiece = "INV-" & CodeInventaire
!DatePiece = DateInv
!TypePiece = "I"
!IdTypeMouvement = Nz(DLookup("IdTypeMouvementInv", "TSociete"), -1)
!CodeMagasin = CodeMagasin
!CodeTiers = "002"
.Update
.Close
End With
Set rstMouvement = CurrentDb.OpenRecordset("Select * From TMouvementArticle Where CodeMagasin='" & CodeMagasin
& "'")

Set rst = CurrentDb.OpenRecordset("Select * From ReInventaire Where IdInventaire=" & CodeInventaire)


With rst
If (.RecordCount = 0) Then

Else
cpt = 0
4

.MoveLast
.MoveFirst
PatienterInit "Cration des lignes de rgularisation", True, .RecordCount
While Not .EOF

PatienterUpdate cpt, !CodeObjet


rstMouvement.AddNew
rstMouvement!CodePiece = "INV-" & CodeInventaire
rstMouvement!NumLigne = cpt * 10
rstMouvement!CodeObjet = !CodeObjet
rstMouvement!Designation = Nz(DLookup("Designation", "TObjets", "CodeObjet='" & !CodeObjet & "'"), 0)
rstMouvement!CodeMagasin = CodeMagasin
rstMouvement!Quantite = !Ecart
rstMouvement!PrixUnitaire = 0
rstMouvement!MontantHT = 0
rstMouvement!MontantTTC = 0
rstMouvement!DateMouv = DateInv
rstMouvement!TypeES = "E"
rstMouvement!RemiseLigne = 0
rstMouvement!TypeRemiseLigne = 0
rstMouvement!IdTypeTaxeObjet = 1
rstMouvement.Update
cpt = cpt + 1
5

'!QteArticlePhysique

If (Not IsNull(DLookup("CodeObjet", "TRangements", "CodeMagasin=" & CodeMagasin & " And CodeObjet='" & !
CodeObjet & "'"))) Then
StrSql = "UPDATE TRangements SET QuantiteStock ='" & Nz(!QteArticlePhysique, 0) & "', QuantiteCloture ='" &
Nz(!QteArticlePhysique, 0) & "', DateCloture =#" & DateInv & "# "
StrSql = StrSql & "WHERE ((CodeObjet='" & !CodeObjet & "') AND (CodeMagasin=" & CodeMagasin & "))"
ExecuteSql StrSql
Else
rstRangement.AddNew
rstRangement!CodeObjet = !CodeObjet
rstRangement!CodeMagasin = CodeMagasin
rstRangement!CodeRangement = 1
rstRangement!QuantiteStock = Nz(!QteArticlePhysique, 0)
rstRangement!DateDernierMouv = DateInv
rstRangement!QuantiteCloture = Nz(!QteArticlePhysique, 0)
rstRangement!DateCloture = DateInv
rstRangement.Update
End If
.MoveNext
Wend
PatienterClear
End If

IdSaisieLigne = DLookup("IdSaisie", "TMouvement", "CodePiece='" & "INV-" & CodeInventaire & "'")
ExecuteSql "Update TMouvementArticle Set IdSaisie=" & IdSaisieLigne & " Where CodePiece='" & "INV-" &
CodeInventaire & "'"
6

MsgBox "L'inventaire n : " & CodeInventaire & " a t clotur !," & _
vbCrLf & cpt & " les carts ont t passs sur le bon n: " & "INV-" & CodeInventaire, vbInformation, "Cration
d'inventaire"

ExecuteSql "UPDATE TInventaires SET EtatInventaire ='C' WHERE (IdInventaire=" & CodeInventaire & ")"

.Close
End With
rstMouvement.Close
rstRangement.Close
End Function

Function ReCalculStockSortie(CodePiece As String) '(CodePiece As String)


On Error GoTo Err_Calcul_Stock
Dim cpt As Long
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Select * From ReMouvement_1 Where (CodePiece='" & CodePiece & "')")
With rs
If (.RecordCount > 0) Then
.MoveLast
.MoveFirst
cpt = 0
7

PatienterInit "Indexation du stock", True, .RecordCount


While Not .EOF
cpt = cpt + 1
PatienterUpdate cpt, !Designation

CalculPMPSortie !CodeObjet, !CodeMagasin


.MoveNext
Wend
End If
.Close
End With
Err_Calcul_Stock:
PatienterClear
End Function

Function CalculPMPSortie(CodeObjet As String, CodeMagasin As Long)


On Error GoTo err_calc

Dim QteStock As Double


Dim QteStockVal As Double
Dim rstRangement As Recordset
Dim rstObjetCMP As Recordset
8

Dim dblPMP As Double


Dim dDateDernMouv As Date

QteStock = DSum("QteMvt", "ReMouvement_1", "CodeObjet='" & CodeObjet & "' And CodeMagasin=" & CodeMagasin)

Set rstRangement = CurrentDb.OpenRecordset("Select * From TRangements Where CodeMagasin=" & CodeMagasin & "
And CodeObjet='" & CodeObjet & "'")
With rstRangement
If (.RecordCount = 0) Then
.AddNew
Else
.Edit
End If
!CodeMagasin = CodeMagasin
!CodeObjet = CodeObjet
!QuantiteStock = QteStock
!DateDernierMouv = dDateDernMouv

'Desactivation du calcul du CUMP


'!PrixUMP = QteStockVal / QteStock 'dblPMP

.Update
.Close
9

End With

Exit Function
err_calc:
MsgBox err.Description
'Resume Next
End Function

Function IndexationStock()
On Error GoTo Err_Calcul_Stock
Dim cpt As Long
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Select * From ReMouvement_1 ")
With rs
If (.RecordCount > 0) Then
.MoveLast
.MoveFirst
cpt = 0
PatienterInit "Indexation du stock", True, .RecordCount
While Not .EOF
cpt = cpt + 1
' PatienterUpdate cpt, !CodeObjet
PatienterUpdate cpt, !Designation
10

CalculPMP !CodeObjet, !CodeMagasin


.MoveNext
Wend
End If
.Close
End With
Err_Calcul_Stock:
PatienterClear
End Function

11

Вам также может понравиться