240-2031 (664633), страница 14
Текст из файла (страница 14)
Dim mil, tus, ed As Long
Dim sot, des, ed1 As Integer
Dim strval, strkop As String
Dim kop As Integer
Dim str1, str2 As String
Dim numstr As Integer
If (nnn > 999999999) Then
MsgBox ("Слишком большое число!")
Exit Function
End If
'
nnn = CDbl(Format(nnn, "Currency"))
If GetStrAfterSign(CStr(nnn) & "0") = "" Then
NewNumber = "00 копеек"
Exit Function
End If
kop = CInt(Left(GetStrAfterSign(CStr(nnn) & "0"), 2))
nnn = kop
numb(0) = " один"
numb(1) = " двe"
numb(2) = " три"
numb(3) = " четыре"
numb(4) = " пять"
numb(5) = " шесть"
numb(6) = " семь"
numb(7) = " восемь"
numb(8) = " девять"
numb(9) = " десять"
numb(10) = " одиннадцать"
numb(11) = " двенадцать"
numb(12) = " тринадцать"
numb(13) = " четырнадцать"
numb(14) = " пятнадцать"
numb(15) = " шестнадцать"
numb(16) = " семнадцать"
numb(17) = " восемнадцать"
numb(18) = " девятнадцать"
numb1(0) = " двадцать"
numb1(1) = " тридцать"
numb1(2) = " сорок"
numb1(3) = " пятьдесят"
numb1(4) = " шестьдесят"
numb1(5) = " семьдесят"
numb1(6) = " восемьдесят"
numb1(7) = " девяносто"
numb2(0) = " сто"
numb2(1) = " двести"
numb2(2) = " триста"
numb2(3) = " четыреста"
numb2(4) = " пятьсот"
numb2(5) = " шестьсот"
numb2(6) = " семьсот"
numb2(7) = " восемьсот"
numb2(8) = " девятьсот"
numb(19) = " одна"
numb(20) = " две"
mil = nnn \ 1000000
tus = (nnn - mil * 1000000) \ 1000
ed = nnn - mil * 1000000 - tus * 1000
If (mil <> 0) Then
sot = mil \ 100
des = (mil - sot * 100) \ 10
ed1 = mil - sot * 100 - des * 10
If (sot > 0) Then
strval = strval & numb2(sot - 1)
End If
If (des > 0) Then
If (des = 1) Then
strval = strval & numb(des * 10 + ed1 - 1) & " миллионов"
GoTo nex
Else
strval = strval & numb1(des - 2)
End If
End If
If (ed1 = 0) Then
strval = strval & " миллионов"
ElseIf (ed1 = 1) Then
strval = strval & " один миллион"
ElseIf (ed1 > 1 And ed1 < 5) Then
strval = strval & numb(ed1 - 1) & " миллиона"
Else
strval = strval & numb(ed1 - 1) & " миллионов"
End If
End If
nex:
If (tus <> 0) Then
sot = tus \ 100
des = (tus - sot * 100) \ 10
ed1 = tus - sot * 100 - des * 10
If (sot > 0) Then
strval = strval & numb2(sot - 1)
End If
If (des > 0) Then
If (des = 1) Then
strval = strval & numb(des * 10 + ed1 - 1) & " тысяч"
GoTo nex1
Else
strval = strval & numb1(des - 2)
End If
End If
If (ed1 = 0) Then
strval = strval & " тысяч"
ElseIf (ed1 = 1) Then
strval = strval & " одна тысяча"
ElseIf (ed1 = 2) Then
strval = strval & " две тысячи"
ElseIf (ed1 > 2 And ed1 < 5) Then
strval = strval & numb(ed1 - 1) & " тысячи"
Else
strval = strval & numb(ed1 - 1) & " тысяч"
End If
End If
nex1:
If (ed <> 0) Then
sot = ed \ 100
des = (ed - sot * 100) \ 10
ed1 = ed - sot * 100 - des * 10
If (sot > 0) Then
strval = strval & numb2(sot - 1)
End If
If (des > 0) Then
If (des = 1) Then
strval = strval & numb(des * 10 + ed1 - 1) & " копеек"
GoTo nex2
Else
strval = strval & numb1(des - 2)
End If
End If
If (ed1 = 0) Then
strval = strval & " копеек"
ElseIf (ed1 = 1) Then
strval = strval & " одна копейка"
ElseIf (ed1 > 1 And ed1 < 5) Then
strval = strval & numb(ed1 - 1) & " копейки"
Else
strval = strval & numb(ed1 - 1) & " копеек"
End If
Else
strval = strval & " копеек"
End If
nex2:
strval = LTrim(strval)
NewNumber = strval
End Function
2) Занесение денежных средств по счету на авансовый остаток.
Sub Кнопка347_Click()
On Error GoTo Err_Кнопка347_Click
Dim dbs As Database
Dim rst, rstПоCчету, rstПоАО As Recordset
Dim rstПоДате As Recordset
Dim strSQL As String
Dim i, j As Integer
Dim Цена, ЦенаП, Сопровождение, Сумма As Double
Dim Дата As Date
Dim ДатаTMP As Date
Dim ДатаПМС As Date
Dim ДатаTMP2 As Date
Dim ДАТАПМП As Date
Dim flagДата As Boolean
Dim flagБольше As Boolean
Dim flagГолоеСопр As Boolean
Dim Разница As Currency
Dim sing As String
'Dim ЦенаП_Р, Сумма_Р As Currency
flagБольше = False
Set dbs = CurrentDb
Me.Refresh
sing = Chr(34)
Set dbs = CurrentDb
strSQL = "SELECT DISTINCTROW ОсновныеСчета.НомерСчета, Дистрибутивы.Цена AS Цена, Дистрибутивы.Сопровождение AS Сопровождение FROM [ОсновныеСчета] INNER JOIN Дистрибутивы ON ОсновныеСчета.КодСчета = Дистрибутивы.КодСчета WHERE (((ОсновныеСчета.НомерСчета)=" & sing & Forms![Просмотр]![ОсновныеСчета].Form![НомерСчета] & sing & "));"
Set rst = dbs.OpenRecordset(strSQL)
If Forms![Просмотр]![ОсновныеСчета].Form![ВнесениеВАО] = True And Разница = 0 Then
Msg = "Суммы по счету уже внесены в авансовый отчет." ' Сообщение.
Style = vbOKCancel + vbQuestion ' Кнопки.
Title = "Сообщение" ' Заголовок.
Response = MsgBox(Msg, Style, Title) ' Выводит сообщение.
If Response = vbOK Then ' Если нажата кнопка "Да" (Yes).
GoTo labelBegin
Else
Exit Sub
End If
End If
labelBegin:
Цена = 0
Сопровождение = 0
rst.MoveLast
j = rst.RecordCount
rst.MoveFirst
For i = 1 To j
Цена = rst![Цена] * 1.2 + Цена
Сопровождение = rst![Сопровождение] * 1.2 + Сопровождение
rst.MoveNext
Next i
Сумма = Цена + Сопровождение
Forms![Просмотр]![ОсновныеСчета].Form![ПоСчету] = Сумма
rst.Close
strSQL = "SELECT DISTINCTROW ОсновныеСчета.НомерСчета, Платежки.СуммаПрихода As Цена, Платежки.ДатаВыписки As Дата FROM [ОсновныеСчета] INNER JOIN Платежки ON ОсновныеСчета.КодСчета = Платежки.КодСчета WHERE (((ОсновныеСчета.НомерСчета)=" & sing & Forms![Просмотр]![ОсновныеСчета].Form![НомерСчета] & sing & "));"
Set rst = dbs.OpenRecordset(strSQL)
rst.MoveLast
Дата = rst![Дата]
j = rst.RecordCount
rst.MoveFirst
For i = 1 To j
ЦенаП = rst![Цена] + ЦенаП
rst.MoveNext
Next i
Forms![Просмотр]![ОсновныеСчета].Form![ПоПлатежке] = ЦенаП
rst.Close
If ЦенаП < Сумма Then
Msg = "Cумма по счету" & Chr(13) & " - " & Сумма & "р." & Chr(13) & "Cуммы по платежкам " & Chr(13) & " - " & ЦенаП & "р." & Chr(13) & "Cуммы по платежкам меньше суммы по счета." ' Сообщение.
'Msg = "Cуммы по платежкам меньше суммы по счетам." & Chr(13) & "Занести в авансовый отчет?" ' Сообщение.
Style = vbCancel + vbCritical ' Кнопки.
Title = "Предупреждение" ' Заголовок.
Response = MsgBox(Msg, Style, Title) ' Выводит сообщение.
Exit Sub
End If
If ЦенаП > Сумма Then
Msg = "Cумма по счету" & Chr(13) & " - " & Сумма & "р." & Chr(13) & "Cуммы по платежкам " & Chr(13) & " - " & ЦенаП & "р." & Chr(13) & "Cуммы по платежкам больше суммы по счета." ' Сообщение.
'Msg = "Cуммы по платежкам больше суммы по счета." & Chr(13) & "Занести в авансовый отчет?" ' Сообщение.
Style = vbOKCancel + vbCritical ' Кнопки.
Title = "Предупреждение" ' Заголовок.
Response = MsgBox(Msg, Style, Title) ' Выводит сообщение.
If Response = vbOK Then ' Если нажата кнопка "Да" (Yes).
flagБольше = True
Разница = ЦенаП - Сумма
GoTo labelOK
Else
Exit Sub
End If
End If
'ЦенаП_Р = ЦенаП
'Сумма_Р = Сумма
Msg = "Cумма по счету" & Chr(13) & " - " & Сумма & "р." & Chr(13) & "Cуммы по платежкам " & Chr(13) & " - " & ЦенаП & "р." & Chr(13) & "Суммы совпадают." & Chr(13) & "Занести в авансовый отчет?" ' Сообщение.
Style = vbOKCancel + vbInformation ' Кнопки.
Title = "Сообщение" ' Заголовок.
Response = MsgBox(Msg, Style, Title) ' Выводит сообщение.
If Response = vbOK Then ' Если нажата кнопка "Да" (Yes).
Forms![Просмотр]![ОсновныеСчета].Form![Разница] = 0
GoTo labelOK
Else
Exit Sub
End If
labelOK:
Set rst = dbs.OpenRecordset("ДанныеДляАвансОтчета")
strSQL = "SELECT DISTINCTROW ОсновныеСчета.НомерСчета, Дистрибутивы.КодСистемы, Дистрибутивы.Цена, Дистрибутивы.ТолькоИПС, Дистрибутивы.Сопровождение, Дистрибутивы.КоличествоМ, Дистрибутивы.Количество FROM [ОсновныеСчета] INNER JOIN Дистрибутивы ON ОсновныеСчета.КодСчета = Дистрибутивы.КодСчета WHERE (((ОсновныеСчета.НомерСчета)=" & sing & Forms![Просмотр]![ОсновныеСчета].Form![НомерСчета] & sing & "));"
'"SELECT DISTINCTROW ОсновныеСчета.НомерСчета, Дистрибутивы.КодСистемы, Дистрибутивы.Цена, Дистрибутивы.Сопровождение, Дистрибутивы.КоличествоМ, Дистрибутивы.Количество FROM [ОсновныеСчета] INNER JOIN Дистрибутивы ON ОсновныеСчета.НомерСчета = Дистрибутивы.НомерСчета WHERE (((ОсновныеСчета.НомерСчета)=" & Forms![Просмотр]![ОсновныеСчета].Form![НомерСчета] & "));"
Set rstПоCчету = dbs.OpenRecordset(strSQL)
Set rstПоАО = dbs.OpenRecordset("АвансовыйОтчет")
rstПоCчету.MoveLast
j = rstПоCчету.RecordCount
ДатаStore = Дата
Select Case Forms![Просмотр]![ОсновныеСчета].Form![Код]
Case 1, 3
Нал = False
Case 2
Нал = True
End Select
rstПоCчету.MoveFirst
'ОСНОВНОЙ ЦИКЛ
flagДата = False
For i = 1 To j
'Проверка для вторичного ИПС
If rstПоCчету![Цена] = 0 Then
If flagДата = False Then
GoTo ДатаОпределение
End If
Дата = ДатаStore
Set dbs = CurrentDb
strSQLTMP = "SELECT DISTINCTROW ДанныеДляАвансОтчета.Код, ДанныеДляАвансОтчета.КодЗаказчика, ДанныеДляАвансОтчета.КодСистемы, ДанныеДляАвансОтчета.КоличествоМС, Max(ДанныеДляАвансОтчета.ДатаПМС) AS ДатаПМС FROM [ДанныеДляАвансОтчета] GROUP BY ДанныеДляАвансОтчета.Код, ДанныеДляАвансОтчета.КодЗаказчика, ДанныеДляАвансОтчета.КодСистемы, ДанныеДляАвансОтчета.КоличествоМС HAVING (((ДанныеДляАвансОтчета.КодЗаказчика)=" & Forms![Просмотр]![КодЗаказчика] & ") AND ((ДанныеДляАвансОтчета.КодСистемы)=" & rstПоCчету![КодСистемы] & ") AND ((ДанныеДляАвансОтчета.КоличествоМС)<>0));"
Set rstTMP2 = dbs.OpenRecordset(strSQLTMP)
If rstTMP2.RecordCount >= 1 Then
GoTo labelЕстьЗаписи
'Else
'MsgBox ("Записей Нет")
Exit Sub
End If
labelЕстьЗаписи:
rstTMP2.MoveLast
rstTMP2.Close
Дата:
ДатаTMP2 = Format(ДатаStore, "m yy")
If flagГолоеСопр = True Then 'Расписать если сопров голое
rst.AddNew
rst![КодЗаказчика] = Forms![Просмотр]![КодЗаказчика]
rst![КодСчета] = Forms![Просмотр]![ОсновныеСчета].Form![КодСчета]
rst![КодСистемы] = rstПоCчету![КодСистемы]
rst![ДатаПМС] = Format(ДатаTMP2, "m yy")
rst![КоличествоМС] = rstПоCчету![КоличествоМ]
rst![Нал] = Нал
Msg = "Заносим сопровождение " & НазваниеСистемы(rstПоCчету![КодСистемы]) & " на " & rstПоCчету![КоличествоМ] & " месяцев"
Style = vbOKCancel + vbInformation ' Кнопки.
Title = "Сообщение" ' Заголовок.
MsgBox Msg, Style, Title
rst.Update
rst.MoveLast
m = rstПоCчету![КоличествоМ]
For k = 1 To m
rstПоАО.AddNew
rstПоАО![ИдентКод] = rst![Код]
ЦенаСоп = rstПоCчету![Сопровождение] / m
rstПоАО![Сумма] = ЦенаСоп * 1.2
rstПоАО![Нал] = Нал
ДатаTMP = Format(ДатаПМС, "m yy")
rstПоАО![Месяц] = ДатаTMP
ДатаTMP = ДатаTMP + 32
ДатаПМС = ДатаTMP
rstПоАО.Update
Next k
GoTo labelnext
End If
'Сравнение с месяцем выписки
ДатаTMP2 = CDate(Format(ДатаStore, "m yy"))
If CDate(ДатаTMP2) <= CDate(ДатаПМС) Or (CDate(Format(ДатаStore, "m yy")) - CDate(Format(ДатаПМС, "m yy"))) / 100 = 1 Then
rst.AddNew
rst![КодЗаказчика] = Forms![Просмотр]![КодЗаказчика]
rst![КодСчета] = Forms![Просмотр]![ОсновныеСчета].Form![КодСчета]
rst![КодСистемы] = rstПоCчету![КодСистемы]
ДАТАПМП = Format(ДатаПМС, "m yy")
ДАТАПМП = ДАТАПМП + 32
rst![ДатаПМС] = Format(ДатаTMP2, "m yy")
rst![КоличествоМС] = rstПоCчету![КоличествоМ]
rst![Нал] = Нал
Msg = "Заносим сопровождение " & НазваниеСистемы(rstПоCчету![КодСистемы]) & " на " & rstПоCчету![КоличествоМ] & " месяцев с " & CurrentMonthWParamWSuf(ДатаTMP2)
Style = vbOKOnly + vbInformation ' Кнопки.
Title = "Сообщение" ' Заголовок.
MsgBox Msg, Style, Title
rst.Update
rst.MoveLast
m = rstПоCчету![КоличествоМ]
For k = 1 To m
rstПоАО.AddNew
rstПоАО![ИдентКод] = rst![Код]
ЦенаСоп = rstПоCчету![Сопровождение] / m
rstПоАО![Сумма] = ЦенаСоп * 1.2
rstПоАО![Нал] = Нал
ДатаTMP = Format(ДАТАПМП, "m yy")
rstПоАО![Месяц] = ДатаTMP















